Avviso di deprecazione file SSLCertificateChainFile su Apache 2.4.8+


14

Abbiamo un certificato SSL per il nostro sito Web da Network Solutions. Dopo aver aggiornato Apache / OpenSSL alla versione 2.4.9, ora ricevo il seguente avviso all'avvio di HTTPD:

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

Secondo il manuale di Apache per mod_ssl questo è davvero il caso:

SSLCertificateChainFile è obsoleto

SSLCertificateChainFile è diventato obsoleto con la versione 2.4.8, quando SSLCertificateFile è stato esteso per caricare anche certificati CA intermedi dal file del certificato del server.

Cercando la documentazione per SSLCertificateFile , sembrava che avessi solo bisogno di sostituire la mia chiamata a SSLCertificateChainFile con SSLCertificateFile .

Questa modifica ha trasformato il mio ssl.conf da questo:

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

a questo:

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

... ma questo non funziona. Apache si rifiuta semplicemente di avviarsi senza alcun messaggio di errore.

Non sono sicuro di cos'altro provare qui, in quanto non ho familiarità con mod_ssl o certificati SSL in generale. Ricordo che dovevamo aggiungere il file Apache_Plesk_Install.txt affinché Internet Explorer non avesse un avviso SSL sul nostro sito, ma a parte questo non ne ho idea.

Qualsiasi aiuto sarebbe molto apprezzato. Grazie.


6
Devi concatenare tutti i certificati, il certificato client e i certificati intermedi
dawud

Risposte:


9

Ho avuto lo stesso problema. Ho appena sostituito queste righe/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

Come vedi, ho appena commentato il SSLCertificateChainFile. Quindi, vedendo il tuo stesso errore, ho concatenato il contenuto del mio chain.crt alla fine del domain.crt, in questo modo:

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

E ha funzionato come un fascino.


perfettamente valido anche secondo i commenti in apache config: "In alternativa # il file di riferimento può essere uguale a SSLCertificateFile # quando i certificati CA vengono aggiunti direttamente al certificato server # per comodità."
PeanutPower

6

Uso il seguente script per creare un pacchetto di certificati che contiene il certificato incatenato.

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

Per usarlo, a partire dal certificato del server e in sequenza attraverso eventuali certificati intermedi nella catena di certificati al certificato principale.

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

dove i nomi dei certificati appropriati vengono sostituiti con il nome del certificato reale.


4

Avere il certificato del sito, gli intermedi e anche in un file specificato dalla direttiva SSLCertificateFile e la chiave privata concatenata in un file specificato da SSLCertificateKeyFile e si dovrebbe essere tutti impostati. Anche se potresti avere la chiave privata nello stesso file dei certificati ma questo è sconsigliato. Per ulteriori dettagli, consultare la documentazione:
http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslcertificatefile
Vorrei raccomandare che il certificato CA radice non faccia parte del file SSLCertificate poiché il client dovrebbe avere il certificato CA radice come attendibile affinché la convalida del certificato funzioni come previsto.
Inoltre, se non c'è nulla nei log degli errori di Apache, si potrebbe mettere il log degli errori in una granularità più fine come inhttp://httpd.apache.org/docs/current/mod/core.html#loglevel


1
Veramente? La chiave privata? Sembra una cattiva idea. Mi chiedo solo perché la mia forte ipotesi è che questo è privato.
SSL

2
Hai ragione: le cose sono cambiate rispetto a quanto ricordato dalla documentazione e anche a quale documentazione esiste nel file httpd-ssl.conf per queste due direttive. Sebbene consentito, ma la pratica di avere la chiave privata nel file specificato da SSLCertificateFile è sconsigliata. La risposta è ora modificata per soddisfare questo fatto.
Khanna111,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.