Попередження про депрекацію 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, але крім цього я не маю підказки.

Будь-яка допомога буде дуже вдячна. Спасибі.


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

І це спрацювало як шарм.


цілком справедливий і згідно з коментарями в apache config: "Альтернативно # посилається файл може бути таким же, як 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

де відповідні імена сертифікатів замінені на ваше справжнє ім'я сертифіката.


4

Майте сертифікат сайту, проміжні продукти, а також файл, визначений директивою SSLCertificateFile та приватний ключ, об'єднані у файл, визначений SSLCertificateKeyFile, і вам слід все налаштувати. Хоча ви можете мати приватний ключ у тому ж файлі, що і сертифікати, але це не рекомендується. Будь ласка, перегляньте документацію для отримання більш детальної інформації:
http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslcertificatefile
Я рекомендую, щоб кореневий сертифікат CA не був частиною SSLCertificateFile, оскільки клієнт повинен мати кореневий сертифікат CA як довірений для того, щоб перевірка сертифіката працювала, як було розроблено.
Крім того, якщо в журналах помилок apache немає нічого, тоді можна помістити журнал помилок до більш тонкої деталізації, як уhttp://httpd.apache.org/docs/current/mod/core.html#loglevel


1
Дійсно? Приватний ключ? Це здається поганою ідеєю. Цікаво, бо моє тверде припущення, що це приватне життя.
ssl

2
Ви маєте рацію - все змінилося з того, що я запам'ятав у документації, а також того, що існує у файлі httpd-ssl.conf для цих двох директив. Хоча це дозволено, але практика використання приватного ключа у файлі, визначеному SSLCertificateFile, не перешкоджає. Відповідь зараз редагується, щоб задовольнити цей факт.
Khanna111
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.