Estou executando o Apache 2.2.15 no Red Hat 6.3 e não consigo que cadeias de certificados funcionem adequadamente.
Estou usando minha organização PKI para assinatura de certificados, etc., que não publica seu certificado raiz na Internet.
Então, estou usando as diretivas SSLCertificateFile
, SSLCertificateKeyFile
e SSLCertificateChainFile
Eu criei minha chave RSA de 2048 bits usando o openssl genrsa e, em seguida, usei o openssl para criar uma solicitação dessa chave e a assinei usando nossa CA do Windows 2008 R2.
Eu aponto para este arquivo de certificado assinado com SSLCertificateFile.
O problema que tenho é com o arquivo chain.
Eu tenho os certificados raiz, intermediário e servidor no formato PEM e tentei várias combinações desses (concatenando os arquivos de texto) para criar o arquivo em cadeia, por exemplo
root
inter
server
server
inter
root
inter
root
root
inter
Nenhum desses trabalhos
Para testar isso, estou fazendo o seguinte:
openssl s_client -connect myserver.com:443 -CAfile root.cer
E o erro que estou recebendo é Verificar código de retorno: 21 (não é possível verificar o primeiro certificado)
No entanto, o mais estranho é quando eu executo o seguinte no servidor:
openssl s_client -connect 127.0.0.1:443 -CAfile root.cer
funciona bem, recebo um código de retorno '0' e consigo ver a cadeia de certificados no topo da saída.
Então, o que está acontecendo?
Sem o arquivo em cadeia, recebo o ícone de cadeado em um navegador da web, mas preciso usar o curl em um script separado para se conectar a ele, e isso não funcionará no modo seguro se o encadeamento não funcionar t funcionar corretamente.