Avertissement de dépréciation SSLCertificateChainFile sur Apache 2.4.8+

14

Nous avons un certificat SSL pour notre site Web de Network Solutions. Après la mise à niveau d'Apache / OpenSSL vers la version 2.4.9, je reçois maintenant l'avertissement suivant lors du démarrage de HTTPD:

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

Selon le manuel Apache pour mod_ssl, c'est en effet le cas:

SSLCertificateChainFile est obsolète

SSLCertificateChainFile est devenu obsolète avec la version 2.4.8, lorsque SSLCertificateFile a été étendu pour charger également les certificats CA intermédiaires à partir du fichier de certificat du serveur.

En recherchant la documentation de SSLCertificateFile , il semblait que je devais juste remplacer mon appel à SSLCertificateChainFile par SSLCertificateFile .

Ce changement a transformé mon ssl.conf de ceci:

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

pour ça:

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

... mais cela ne fonctionne pas. Apache refuse simplement de démarrer sans aucun message d'erreur.

Je ne sais pas quoi d'autre essayer ici, car je ne suis pas très familier avec les certificats mod_ssl ou SSL en général. Je me souviens que nous devions ajouter le fichier Apache_Plesk_Install.txt pour Internet Explorer pour ne pas avoir d'avertissement SSL sur notre site, mais à part cela, je n'ai aucune idée.

Toute aide serait grandement appréciée. Merci.

DOOManiac
la source
6
Vous devez concaténer tous les certificats, le certificat client et le (s) certificat (s) intermédiaire (s)
dawud

Réponses:

9

J'ai eu le même problème. Je viens de remplacer ces lignes/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

Comme vous le voyez, je viens de commenter le SSLCertificateChainFile. Puis, voyant la même erreur que vous, j'ai concaténé le contenu de mon chain.crt à la fin du domain.crt, comme ceci:

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

Et ça a fonctionné comme un charme.

user306141
la source
parfaitement valide aussi selon les commentaires dans la configuration d'apache: "Alternativement # le fichier référencé peut être le même que SSLCertificateFile # lorsque les certificats CA sont directement ajoutés au certificat du serveur # pour plus de commodité."
PeanutPower
6

J'utilise le script suivant pour créer un ensemble de certificats qui contient le certificat chaîné.

#!/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:/'

Pour l'utiliser, en commençant par le certificat du serveur et de manière séquentielle à travers tous les certificats intermédiaires de la chaîne de certificats jusqu'au certificat racine.

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

où les noms de certificats appropriés sont remplacés par votre vrai nom de certificat.

sweetfa
la source
4

Ayez le certificat de site, les intermédiaires également dans un fichier spécifié par la directive SSLCertificateFile et la clé privée concaténés dans un fichier spécifié par SSLCertificateKeyFile et vous devriez être tous définis. Bien que vous puissiez avoir la clé privée dans le même fichier que les certificats, mais cela est déconseillé. Veuillez consulter la documentation pour plus de détails:
http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslcertificatefile
Je recommanderais que le certificat d'autorité de certification racine ne fasse pas partie du SSLCertificateFile car le client doit avoir le certificat d'autorité de certification racine comme approuvé pour que la validation du certificat fonctionne comme prévu.
De plus, s'il n'y a rien dans les journaux d'erreurs d'apache, alors on pourrait mettre le journal d'erreurs à une granularité plus fine comme danshttp://httpd.apache.org/docs/current/mod/core.html#loglevel

Khanna111
la source
1
Vraiment? La clé privée? Cela semble être une mauvaise idée. Je me demande simplement, parce que ma forte supposition est que c'est privé.
ssl
2
Vous avez raison - les choses ont changé par rapport à ce dont je me suis souvenu de la documentation et aussi de la documentation qui existe dans le fichier httpd-ssl.conf pour ces deux directives. Bien qu'autorisé, la pratique d'avoir la clé privée dans le fichier spécifié par SSLCertificateFile est déconseillée. La réponse est maintenant modifiée pour répondre à ce fait.
Khanna111