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


77

Я надаю SSL-сторінки на своєму веб-сервері і маю запитання. У чому різниця між SSLCACertificateFile та SSLCertificateChainFile?

Коли я використовую SSLCertificateChainFile, я отримував попередження від японського браузера стільникового телефону, але коли я використовую браузер ПК (наприклад, IE, FF), проблем не було. З іншого боку, SSLCACertificateFile не створював жодних проблем для обох браузерів.

Чи є різниця, коли браузери підключаються до apache?


це занадто просто Кореневий файл sig не знаходиться у кореневому сховищі мобільного телефону, що є загальним

Відповіді:


74

SSLCertificateChainFile був правильним варіантом вибору, але ця директива застаріла з Apache 2.4.8 . Ця директива спричинила надсилання вказаного файлу разом із сертифікатом будь-яким клієнтам, які підключаються.

SSLCACertificateFile (надалі "CACert") замінює SSLCertificateChainFile (надалі "Мережа") і додатково дозволяє використовувати відповідний сертифікат для підписання сертифікатів клієнта . Цей тип автентифікації є досить рідкісним (принаймні на даний момент), і якщо ви не використовуєте його, у IMHO немає причин збільшувати його функціональність, використовуючи CACert замість Chain. З іншого боку, можна стверджувати, що додатковій функціональності немає шкоди, і CACert охоплює всі випадки. Обидва аргументи справедливі.

Само собою зрозуміло, що якщо ви запитаєте у постачальника сертифікатів, вони завжди наполягатимуть на CACert over Chain, оскільки це дає їм іншу річ (клієнтські сертифікати), що вони потенційно можуть продати вас за чергою. ;)


Насправді слід врахувати ще один алгоритм. "Але будьте обережні: надання ланцюжка сертифікатів працює лише в тому випадку, якщо ви використовуєте єдиний (або RSA, або DSA) сертифікат сервера. Якщо ви використовуєте пов'язану пару сертифікатів RSA + DSA, це буде працювати, лише якщо насправді обидва сертифікати використовують однакові ланцюжок сертифікатів. В іншому випадку браузери будуть плутатись у цій ситуації ". ---- httpd.apache.org/docs/2.0/mod/…
Едді

@Eddie Correct, хоча я вважаю важливим згадати, що це однаково впливає на обидва варіанти. Також, мабуть, варто зазначити, що сертифікати DSA (милосердно) зникають рідко.
BMDan

20

Насправді обидва варіанти можуть бути дійсними.

Використовуйте SSLCertificateChainFile для публікації вашого сертифіката, підписаного публічним центром сертифікації (VeriSign, RapidSSL тощо)

Використовуйте SSLCACertificateFile, щоб надати свій «приватний» ЦС, який може видавати сертифікати клієнта, який ви можете розповсюджувати серед вибраних користувачів. Ці clientсертифікати насправді чудово підходять для автентифікації (порівняно з базовою автентифікацією за паролем), і, як правило, їх не потрібно розповсюджувати загальнодоступним центром сертифікації (отже, ви можете заощадити гроші).

Отже, якщо ви хочете додати безпечну авторизацію до якоїсь частини вашого веб-сайту, зробіть наступне:

<Directory /var/www/html/authorized>
  SSLVerifyClient require
  SSLVerifyDepth  5

  SSLOptions +StrictRequire
  SSLUserName SSL_CLIENT_S_DN_CN
  SSLRequireSSL
</Directory>

Лише для короткого пояснення SSLUserName SSL_CLIENT_S_DN_CNвстановить для ідентифікованого імені користувача значення CommonName сертифіката порівняно з цілою темою x509 '/ OU = Foo / CN = ...'

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