Aviso de descontinuação de SSLCertificateChainFile no Apache 2.4.8+

14

Temos um certificado SSL para o nosso site da Network Solutions. Depois de atualizar o Apache / OpenSSL para a versão 2.4.9, agora recebo o seguinte aviso ao iniciar o HTTPD:

AH02559: The SSLCertificateChainFile directive (/etc/httpd/conf.d/ssl.conf:105) is deprecated, SSLCertificateFile should be used instead

De acordo com o manual do Apache para mod_ssl, este é realmente o caso:

SSLCertificateChainFile foi descontinuado

SSLCertificateChainFile ficou obsoleto com a versão 2.4.8, quando SSLCertificateFile foi estendido para também carregar certificados CA intermediários do arquivo de certificado do servidor.

Pesquisando a documentação para SSLCertificateFile , parecia que eu só precisava substituir minha chamada para SSLCertificateChainFile por SSLCertificateFile .

Essa mudança transformou meu ssl.conf disso:

SSLCertificateFile /etc/ssl/STAR.EXAMPLE.COM.crt
SSLCertificateKeyFile /etc/ssl/server.key
SSLCertificateChainFile /etc/ssl/Apache_Plesk_Install.txt

para isso:

SSLCertificateFile /etc/ssl/STAR.EXAMPLE.COM.crt
SSLCertificateFile /etc/ssl/Apache_Plesk_Install.txt
SSLCertificateKeyFile /etc/ssl/server.key

... mas isso não funciona. O Apache simplesmente se recusa a iniciar sem nenhuma mensagem de erro.

Não tenho certeza do que mais tentar aqui, pois não estou familiarizado com os certificados mod_ssl ou SSL em geral. Lembro que precisávamos adicionar o arquivo Apache_Plesk_Install.txt para que o Internet Explorer não tivesse um aviso SSL em nosso site, mas, além disso, não faço idéia.

Qualquer ajuda seria muito apreciada. Obrigado.

DOOManiac
fonte
6
Você precisa concatenar todos os certificados, o certificado de cliente e o certificado intermediário (s)
Dawud

Respostas:

9

Eu tive o mesmo problema. Acabei de substituir essas linhas em/etc/apache2/site-enabled/default-ssl.conf

SSLCertificateFile    /etc/ssl/certs/domain.crt
SSLCertificateKeyFile /etc/ssl/private/domain.key
#SSLCertificateChainFile /etc/apache2/ssl.crt/chain.crt

Como você vê, eu apenas comentei o SSLCertificateChainFile. Então, vendo o mesmo erro que você, concatenou o conteúdo do meu chain.crt no final do domain.crt, assim:

root@host~: cat /etc/apache2/ssl.crt/chain.crt >> /etc/ssl/certs/domain.crt

E funcionou perfeitamente.

user306141
fonte
perfeitamente válido também de acordo com os comentários no apache config: "Como alternativa, # o arquivo referenciado pode ser o mesmo que SSLCertificateFile # quando os certificados da CA são anexados diretamente ao certificado do servidor # por conveniência."
PeanutPower
6

Eu uso o seguinte script para criar um pacote de certificados que contém o certificado em cadeia.

#!/bin/sh
#
# Convert PEM Certificate to ca-bundle.crt format
#

test ! $1 && printf "Usage: `basename $0` certificate" && exit 1

# Friendly Name and Underline Friendly Name with equal signs
openssl x509 -in $1 -text -noout | sed -e 's/^  *Subject:.*CN=\([^,]*\).*/\1/p;t  c' -e 'd;:c' -e 's/./=/g'
# Output Fingerprint and swap = for :
openssl x509 -in $1 -noout -fingerprint | sed -e 's/=/: /'
# Output PEM Data:
echo 'PEM Data:'
# Output Certificate
openssl x509 -in $1
# Output Certificate text swapping Certificate with Certificate Ingredients
openssl x509 -in $1 -text -noout | sed -e 's/^Certificate:/Certificate Ingredients:/'

Para usá-lo, iniciando com o certificado do servidor e sequencialmente através de quaisquer certificados intermediários na cadeia de certificados de volta ao certificado raiz.

./bundle.sh myserver.crt >myserver.chain
./bundle.sh intermediate.crt >>myserver.chain
./bundle.sh root.crt >>myserver.chain

onde os nomes de certificados apropriados são substituídos pelo seu nome de certificado real.

sweetfa
fonte
4

Tenha o certificado do site, os intermediários também em um arquivo especificado pela diretiva SSLCertificateFile e a chave privada concatenada em um arquivo especificado por SSLCertificateKeyFile e você deve estar pronto. Embora você possa ter a chave privada no mesmo arquivo que os certificados, mas isso é desencorajado. Verifique a documentação para obter mais detalhes:
http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslcertificatefile
Recomendamos que o certificado CA raiz não faça parte do SSLCertificateFile, pois o cliente deve ter o certificado CA raiz como confiável para que a validação do certificado funcione conforme projetado.
Além disso, se não houver nada nos logs de erro do apache, é possível colocar o log de erros em uma granularidade mais fina, como emhttp://httpd.apache.org/docs/current/mod/core.html#loglevel

Khanna111
fonte
1
Verdade? A chave privada? Parece uma má ideia. Só me pergunto, porque, minha forte suposição é que isso é privado.
SSL
2
Você está certo - as coisas mudaram em relação ao que eu lembrei da documentação e também a documentação existente no arquivo httpd-ssl.conf para essas duas diretivas. Embora permitido, mas a prática de ter a chave privada no arquivo especificado por SSLCertificateFile é desencorajada. Agora, a resposta é editada para atender a esse fato.
Khanna111