Строго кажучи, вам ніколи не потрібна ланцюжок для функціонування SSL.
Те, що вам завжди потрібно, - це SSLCertificateFile
те, SSLCertificateKeyFile
що містить правильний ключ для цього сертифіката.
Проблема полягає в тому, що якщо Apache дає лише сертифікат, то все, що він повинен надати клієнтам, що підключаються, - це сертифікат - який не розповідає всієї історії про цей SSL-серт. Це говорить: "Я підписаний кимось, але я не збираюся розповідати вам про них".
Зазвичай це працює добре, оскільки у більшості клієнтських систем є великий склад сертифікатів CA (як кореневих, так і проміжних), які він може перевірити на відповідність відносин підписання для встановлення довіри. Однак іноді це не працює; найчастіше проблема, з якою ви зіткнетеся, - це клієнт, який не містить сертифікат проміжного ЦО, який підписав ваш сертифікат.
Ось де заходить ланцюжок; це дозволяє Apache показати клієнту, як саме виглядають відносини довіри, що може допомогти клієнту заповнити проміжки між вашою програмою, коренем, якому він довіряє, та проміжним, про який вони не знають. Ланцюжок може бути включена у вашу конфігурацію одним із двох способів:
- Вбудований у той самий файл, який ви встановили для свого
SSLCertificateFile
, у нових рядках після сертифікату сервера в порядку (корінь має бути внизу). Якщо встановити його так, ви хочете SSLCertificateChainFile
вказати на той самий файл, що і SSLCertificateFile
.
- В окремому файлі, налаштованому в
SSLCertificateChainFile
директиві; сертифікат CA, який видав сертифікат сервера, повинен бути спочатку у файлі, а за ним усі інші в корені.
Перевірте наявний у вас файл сертифіката - я вважаю, що в ньому немає даних про ланцюги. Це, як правило, добре працює, але з часом викличе проблему з певним браузером чи іншим.
/etc/ssl
,/usr/local/etc/ssl
або уssl
підкаталозі, специфічному для веб-сайту (наприклад,/home/www/example.com/data
має веб-сайт, а потімhome/www/example.com/ssl
- certs).