Advertencia de desuso SSLCertificateChainFile en Apache 2.4.8+

14

Tenemos un Certificado SSL para nuestro sitio web de Network Solutions. Después de actualizar Apache / OpenSSL a la versión 2.4.9, ahora aparece la siguiente advertencia al iniciar HTTPD:

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

De acuerdo con el manual de Apache para mod_ssl, este es el caso:

SSLCertificateChainFile está en desuso

SSLCertificateChainFile se volvió obsoleto con la versión 2.4.8, cuando SSLCertificateFile se extendió para cargar también certificados CA intermedios desde el archivo de certificado del servidor.

Al buscar la documentación de SSLCertificateFile , parecía que solo necesitaba reemplazar mi llamada a SSLCertificateChainFile con SSLCertificateFile .

Este cambio cambió mi ssl.conf de esto:

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

a esto:

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

... pero esto no funciona. Apache simplemente se niega a comenzar sin ningún mensaje de error.

No estoy seguro de qué más probar aquí, ya que no estoy tan familiarizado con los certificados mod_ssl o SSL en general. Recuerdo que necesitábamos agregar el archivo Apache_Plesk_Install.txt para que Internet Explorer no tuviera una advertencia SSL en nuestro sitio, pero aparte de esto, no tengo idea.

Cualquier ayuda sería muy apreciada. Gracias.

DOOManiac
fuente
66
Debe

Respuestas:

9

Tuve el mismo problema. Acabo de reemplazar estas líneas en/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 ven, acabo de comentar el SSLCertificateChainFile. Luego, al ver el mismo error que tú, concatenaba el contenido de mi chain.crt al final de la siguiente domain.crtmanera:

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

Y funcionó como un encanto.

usuario306141
fuente
perfectamente válido también de acuerdo con los comentarios en la configuración de apache: "Alternativamente, # el archivo al que se hace referencia puede ser el mismo que SSLCertificateFile # cuando los certificados de CA se agregan directamente al servidor # certificado por conveniencia".
PeanutPower
6

Utilizo el siguiente script para crear un paquete de certificados que contiene el certificado encadenado.

#!/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 usarlo, comience con el certificado del servidor y secuencialmente a través de cualquier certificado intermedio en la cadena de certificados hasta el certificado raíz.

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

donde los nombres de certificado apropiados se reemplazan con su nombre de certificado real.

sweetfa
fuente
4

Tenga el certificado del sitio, los intermedios también en un archivo especificado por la directiva SSLCertificateFile y la clave privada concatenada en un archivo especificado por SSLCertificateKeyFile y debería estar todo configurado. Aunque podría tener la clave privada en el mismo archivo que los certificados, se desaconseja. Consulte la documentación para obtener más detalles:
http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslcertificatefile
. Recomendaría que el certificado de CA raíz no sea parte del SSLCertificateFile ya que el cliente debe tener el certificado de CA raíz como de confianza para que la validación del certificado funcione según lo diseñado.
Además, si no hay nada en los registros de errores de Apache, uno podría poner el registro de errores en una granularidad más fina como enhttp://httpd.apache.org/docs/current/mod/core.html#loglevel

Khanna111
fuente
1
De Verdad? La clave privada? Eso parece una mala idea. Solo me pregunto, porque, mi fuerte suposición es que esto es privado.
ssl
2
Tiene razón: las cosas han cambiado de lo que recordaba de la documentación y también de la documentación que existe en el archivo httpd-ssl.conf para estas dos directivas. Aunque está permitido, se desaconseja la práctica de tener la clave privada en el archivo especificado por SSLCertificateFile. La respuesta ahora se edita para atender este hecho.
Khanna111