Предупреждение об устаревании SSLCertificateChainFile в Apache 2.4.8+

14

У нас есть сертификат SSL для нашего сайта от Network Solutions. После обновления Apache / OpenSSL до версии 2.4.9 я теперь получаю следующее предупреждение при запуске HTTPD:

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

Согласно руководству Apache для mod_ssl, это действительно так:

SSLCertificateChainFile устарел

SSLCertificateChainFile устарел с версией 2.4.8, когда SSLCertificateFile был расширен для загрузки промежуточных сертификатов CA из файла сертификатов сервера.

Просматривая документацию по SSLCertificateFile , выглядело, как будто мне просто нужно было заменить мой вызов SSLCertificateChainFile на SSLCertificateFile .

Это изменение превратило мой ssl.conf из этого:

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

к этому:

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

... но это не работает. Apache просто отказывается запускаться без каких-либо сообщений об ошибках.

Я не уверен, что еще попробовать здесь, так как я не очень знаком с mod_ssl или SSL-сертификатами в целом. Я помню, что нам нужно было добавить файл Apache_Plesk_Install.txt для Internet Explorer, чтобы на нашем сайте не было предупреждения SSL, но кроме этого я понятия не имею.

Любая помощь будет принята с благодарностью. Благодарю.

DOOManiac
источник
6
Вам нужно объединить все сертификаты, клиентский сертификат и промежуточный сертификат (ы)
dawud

Ответы:

9

Я была такая же проблема. Я просто заменил эти строки в/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

Как видите, я только что закомментировал SSLCertificateChainFile. Тогда, видя ту же ошибку , как вы, я сцепляюсь содержание моего chain.crt в конце из domain.crt, например , так:

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

И это сработало как шарм.

user306141
источник
также вполне допустимо в соответствии с комментариями в конфигурации Apache: «Альтернативно, # указанный файл может быть таким же, как SSLCertificateFile #, когда сертификаты CA непосредственно добавляются к # серверу для удобства».
PeanutPower
6

Я использую следующий скрипт для создания пакета сертификатов, который содержит цепочечный сертификат.

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

Чтобы использовать его, начиная с сертификата сервера и последовательно через любые промежуточные сертификаты в цепочке сертификатов обратно к корневому сертификату.

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

где соответствующие имена сертификатов заменены вашим реальным именем сертификата.

sweetfa
источник
4

Имейте сертификат сайта, промежуточные звенья также в файле, указанном директивой SSLCertificateFile, и закрытый ключ, объединенный в файле, указанном SSLCertificateKeyFile, и вы должны быть полностью настроены. Хотя у вас может быть закрытый ключ в том же файле, что и сертификаты, но это не рекомендуется. Пожалуйста, проверьте документацию для получения более подробной информации:
http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslcertificatefile.
Я бы порекомендовал, чтобы сертификат корневого ЦС не был частью SSLCertificateFile, так как клиент должен иметь сертификат корневого центра сертификации как доверенный, чтобы проверка сертификата работала как задумано.
Кроме того, если в журналах ошибок apache ничего нет, можно было бы поместить журнал ошибок в более мелкую гранулярность, как вhttp://httpd.apache.org/docs/current/mod/core.html#loglevel

Khanna111
источник
1
В самом деле? Закрытый ключ? Это кажется плохой идеей. Просто интересно, потому что я твердо уверен, что это личное.
SSL
2
Вы правы - все изменилось по сравнению с тем, что я запомнил из документации, а также с тем, какая документация существует в файле httpd-ssl.conf для этих двух директив. Хотя это разрешено, но практика использования закрытого ключа в файле, указанном SSLCertificateFile, не рекомендуется. Ответ теперь редактируется, чтобы удовлетворить этот факт.
Khanna111