Estou criando uma Autoridade de Certificação openssl para uma intranet.
Eu tenho root.crt
, intermediate.crt
, que é assinado pela raiz, e server.crt
, que é assinado pelo intermediário.
Eu posso validar o intermediário contra a raiz
#> openssl verify -CAfile root.crt intermediate.crt && echo ok
ok
No Ubuntu eu posso instalar o certificado raiz
#> mv root.crt /usr/local/share/ca-certificates/my-root.crt
#> update-ca-certificates
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
done.
Mas se eu tentar validar o servidor contra o intermediário, ele falhará
#> openssl verify -CAfile intermediate.crt server.crt && echo ok
error 2 at 1 depth lookup:unable to get issuer certificate
Acho que isso significa que não é possível validar a cadeia completa server.crt -> intermediate.crt -> my-root.crt
.
Eu examinei os certificados manualmente com openssl x509 -noout -text
e eles estão bem: Issuer
para server.crt
corresponde ao assunto do certificado intermediário, para os outros dois ele corresponde à raiz e as datas estão corretas intervalo.
O objetivo é distribuir os certificados do servidor e intermediário nos aplicativos e ter o certificado raiz instalado globalmente. Eu juro que isso funcionou há algum tempo , então o que eu deixei de fora?