A situação é:
/etc/ssl/certs/
No host A eu posso usar com sucesso os serviços de rede de ambos os hosts e emitir os comandos no host A :
openssl s_client -connect A:18080 openssl s_client -connect B:18080
ambos retornam
... Verify return code: 0 (ok) ...
No entanto, no host B não consigo usar com êxito nenhum dos serviços de rede (certificados não são validados) e emitindo os comandos no host B :
openssl s_client -connect A:18080 openssl s_client -connect B:18080
ambos retornam
... Verify return code: 7 (certificate signature failure) ...
Quando a verificação é bem-sucedida, a saída dos comandos acima contém:
CONNECTED(00000003) depth=2 C = CX, ST = SX, L = Loc, O = Org, emailAddress = [email protected] verify return:1 depth=1 C = CX, ST = SX, L = Loc, O = Org, emailAddress = [email protected] verify return:1 depth=0 C = CX, ST = Loc, L = Loc, O = Comp, OU = OX, CN = a.comp.int, emailAddress = [email protected] verify return:1 --- Certificate chain 0 s:/C=CX/ST=Loc/L=Loc/O=Comp/OU=OX/CN=a.comp.int/[email protected] i:/C=CX/ST=SX/L=Loc/O=Org/[email protected] ---
Quando a verificação falha, a saída dos comandos acima contém:
CONNECTED(00000003) depth=1 C = CX, ST = SX, L = Loc, O = Org, emailAddress = [email protected] verify return:1 depth=0 C = CX, ST = Loc, L = Loc, O = Comp, OU = OX, CN = a.comp.int, emailAddress = [email protected] verify error:num=7:certificate signature failure verify return:1 depth=0 C = CX, ST = Loc, L = Loc, O = Comp, OU = OX, CN = a.comp.int, emailAddress = [email protected] verify return:1 --- Certificate chain 0 s:/C=CX/ST=Loc/L=Loc/O=Comp/OU=OX/CN=a.comp.int/[email protected] i:/C=CX/ST=SX/L=Loc/O=Org/[email protected] ---
Alguém pode me ajudar a descobrir onde está a culpa?
É que no host B (aquele que não pode validar os certificados de ether) a cadeia de certificação (Root CA - Intermediary CA) é de alguma forma “quebrada”?
O que devo fazer para depurar isso ainda mais?
Embora o openssl no host B não possa validar os certificados dos hosts ether, o Firefox em execução no host B também valida com êxito aqueles - é claro, usando seu próprio armazenamento de certificados onde A CA raiz e a AC intermediária mencionadas acima foram importadas.
Novamente, do lado do host A tudo funciona bem, como esperado.
mais uma coisa: o comando
openssl verify -CAfile /etc/ssl/certs/CA.pem -untrusted /etc/ssl/certs/Int_CA.pem /home/<user>/.ssh/id_b.pub
no host B produz o resultado:
/home/<user>/.ssh/id_b.pub: OK
Então, desta vez tudo parece estar em ordem.
Tags openssl https certificates