Різниця між SSLCertificateFile та SSLCertificateChainFile?


35

Зазвичай з віртуальним хостом встановлюється ssl з такими директивами:

Listen 443 

SSLCertificateFile /home/web/certs/domain1.public.crt
SSLCertificateKeyFile /home/web/certs/domain1.private.key
SSLCertificateChainFile /home/web/certs/domain1.intermediate.crt

Від: Для включення SSL для одного домену на сервері з муліплею vhosts, чи буде працювати ця конфігурація?

У чому різниця між SSLCertificateFileі SSLCertificateChainFile? Клієнт придбав ключ від CA у GoDaddy. Схоже, GoDaddy надає лише SSLCertificateFile(.crt файл), а SSLCertificateKeyFile (файл .key), а не на SSLCertificateChainFile.

Чи буде мій ssl все ще працювати без SSLCertificateChainFileвказаного шляху?

Також чи є канонічний шлях, куди слід розмістити ці файли?


1
Найчастіше я бачу людей, які розміщують файли cert, у /etc/ssl, /usr/local/etc/sslабо у sslпідкаталозі, специфічному для веб-сайту (наприклад, /home/www/example.com/dataмає веб-сайт, а потім home/www/example.com/ssl- certs).
Chris S

Відповіді:


49

Строго кажучи, вам ніколи не потрібна ланцюжок для функціонування SSL.

Те, що вам завжди потрібно, - це SSLCertificateFileте, SSLCertificateKeyFileщо містить правильний ключ для цього сертифіката.

Проблема полягає в тому, що якщо Apache дає лише сертифікат, то все, що він повинен надати клієнтам, що підключаються, - це сертифікат - який не розповідає всієї історії про цей SSL-серт. Це говорить: "Я підписаний кимось, але я не збираюся розповідати вам про них".

Зазвичай це працює добре, оскільки у більшості клієнтських систем є великий склад сертифікатів CA (як кореневих, так і проміжних), які він може перевірити на відповідність відносин підписання для встановлення довіри. Однак іноді це не працює; найчастіше проблема, з якою ви зіткнетеся, - це клієнт, який не містить сертифікат проміжного ЦО, який підписав ваш сертифікат.

Ось де заходить ланцюжок; це дозволяє Apache показати клієнту, як саме виглядають відносини довіри, що може допомогти клієнту заповнити проміжки між вашою програмою, коренем, якому він довіряє, та проміжним, про який вони не знають. Ланцюжок може бути включена у вашу конфігурацію одним із двох способів:

  • Вбудований у той самий файл, який ви встановили для свого SSLCertificateFile, у нових рядках після сертифікату сервера в порядку (корінь має бути внизу). Якщо встановити його так, ви хочете SSLCertificateChainFileвказати на той самий файл, що і SSLCertificateFile.
  • В окремому файлі, налаштованому в SSLCertificateChainFileдирективі; сертифікат CA, який видав сертифікат сервера, повинен бути спочатку у файлі, а за ним усі інші в корені.

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


2
Я думаю, що "зазвичай добре працює" насправді більше не застосовується до сертифікатів GoDaddy, якщо проміжний продукт не включений. Я навіть не впевнений, чи більше це стосується таких хлопців, як Verisign і Thawte, оскільки вони перенесли, щоб зробити сайт certs більш віддаленим від базових, що входять до браузера. Я гадаю, це спрощує відкликання, оскільки простіше забити проміжні продукти.
cjc

"Вбудований у файл SSLCertificateFile": Я хотів, щоб це спрацювало, але це, схоже, не згадується в документах. Вашу ланцюжок потрібно поставити SSLCertificateChainFile.
Стів Келет

@SteveKehlet Ви маєте рацію, що це не задокументовано, але в минулому я працював успішно - як ви відформатували файл "все в одному"?
Шейн Мадден

1
@SteveKehlet Насправді ти маєш рацію, я згадав неправильно; так, як я його встановив для одного файлу, це було мати обидва SSLCertificateFileі SSLCertificateChainFileвказав на один комбінований файл, який працює - відредагував мою відповідь, щоб виправити це.
Шейн Медден

@ShaneMadden Красиво! Це працює! Велике спасибі за те, що з’ясували.
Стів Келет


4

Насправді GoDaddy справді дає вам проміжний ланцюг:

http://support.godaddy.com/help/5238

Ось ще кілька дискусій.

http://support.godaddy.com/help/868/what-is-an-intermediate-certificate

Електронний лист від GoDaddy, який повідомляє вам про те, як завантажити новий сертифікат, також містить інформацію про проміжний файл сертифіката. Це десь у напрямку до дна, можливо, після того, як ваші очі переслідують від багатослівності та перемоги.

Що стосується того, що станеться, якщо ви не включите належну директиву SSLCertificateChainFile: у вашому браузері з’явиться велике червоне попередження, оскільки ваш веб-сайт SSL не перевірятиметься у веб-переглядачах, оскільки вони не можуть слідувати ланцюжком сертифікатів з вашого сайту cert для одного, який належить сертифікаційному органу, про який браузер знає.


2

Я хотів би додати до попередніх хороших відповідей про SSLCertificateChainFile, що також важливий порядок сертифікатів у цьому файлі. Клієнти, що базуються на OpenSSL, самі розбирають замовлення, але клієнти, що базуються на ґунтах, не зможуть перейти на ланцюжок із неправильним замовленням.

Тестуйте впорядкування за допомогою гнуток-клі, як

gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p https wwwsec.cs.uu.nl

де /etc/ssl/certs/ca-certificates.crt - місце, де ваш дистрибутив ставить комбіновані сертифікати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.