Чи може Https працювати без сертифіката?


9

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

Це суперечить усім, що я припускав про https.

Я читаю wikipedia, і в ній згадується, що вам потрібен або довірений сертифікат, або самопідписаний сертифікат для налаштування https.

Чи можна настроїти IIS відповідати на https без будь-якого сертифіката?


7
Ви можете виявити, що це лише питання комунікації. Ваш сервер, ймовірно, готовий до запуску сертифікатів, які підписали себе. Між іншим, цього попередження ви уникаєте, використовуючи публічний довірений сертифікат: m86security.com/kb/article.aspx?id=13446Це може бути прийнятним у вашому середовищі, а може не робити. Я б сказав, що це більше, ніж просто душевний спокій - на публічному веб-сайті це ознака професіоналізму!
День

5
Сертифіковані сертифікати дають вам шифрування, але воно не може захистити від людини від посередніх атак, оскільки ви отримуєте такі ж попередження про недійсні або неперевірені сертифікати для самопідписаних, як і ви, коли хтось перехоплює трафік, розшифровуючи його, вкрасти дані та повторно зашифрувати їх для повернення клієнту.
Барт Сільверстрім

1
"Сертифіковані сертифікати дають вам шифрування, але він не може захистити від людини від посередніх атак [...]", якщо користувач не може довіряти цим самопідписаним сертифікатам явно за допомогою позамежового механізму, який є можливе лише для невеликої користувальницької бази, яка знає вас за допомогою такого позадіапазонного механізму. Навряд чи справді.
Бруно

Або якщо вони довіряють йому вперше, вони будуть попереджені, якщо це зміниться в майбутньому. Так само, як і SSH підписи.
mfinni

1
Технічно SSL / TLS не потребує сертифікатів для захисту каналу зв'язку. Насправді SSL / TLS може використовувати інший механізм для захисту каналу: pgp certs, ім'я користувача / пароль, загальнодоступні ключі або "анонімні" (взагалі немає аутентифікації). Аналогічно, SSL / TLS не гарантує шифрування, є багато різних циферблатів, які він може використовувати, включаючи "null" (шифрування взагалі немає). І є подібні варіанти аутентифікації дайджесту. Отож, це все чудово, але які програми використовують будь-яку програму: в основному це взагалі жодна, безумовно, немає головного серверного чи браузерного програмного забезпечення (всі вони вимагають сертифікатів).
Chris S

Відповіді:


24

Ні. Ви повинні мати сертифікат. Він може бути самостійно підписаний, але для обміну даними сеансу між сервером і клієнтом повинна бути пара публічних / приватних ключів.


Анонімний Діффі-Хеллман, як зазначалося в іншій відповіді, дозволив з'єднання без сертифіката - але сучасні версії OpenSSL зазвичай складаються без підтримки ADH.
Брендон Родос,

12

Коротше кажучи, ні, але можуть бути тонкі випадки залежно від способу розгортання системи.

HTTPS - це HTTP через SSL / TLS, і ви можете використовувати SSL / TLS без сертифіката або з сертифікатами інших типів, ніж X.509 .

  • Анонімні набори шифрів: вони можуть забезпечити шифрування, але без автентифікації. Щодо безкорисності, що стосується безпеки ... Цитуючи RFC 4346 : " анонімний Діффі-Хеллман сильно зневірився, оскільки він не може запобігти атакам " людиною в середині ".
  • Попередньо розділені ключі : у нього є власний механізм перевірки віддаленої ідентичності, але спільний характер ключів приносить свій набір проблем (зокрема обмежене розгортання).
  • Набір шифрів Kerberos : клієнт може перевірити особистість сервера щодо основного імені Kerberos.

Строго кажучи, специфікація HTTP over TLS говорить наступне:

Взагалі, HTTP / TLS-запити генеруються шляхом перенаправлення URI. Як наслідок, ім'я хоста для сервера відоме клієнту. Якщо ім'я хоста доступне, клієнт ОБОВ'ЯЗКОВО його перевіряє на предмет ідентичності сервера, як це представлено у повідомленні Сертифіката сервера, щоб запобігти атакам "посередника".

Якщо клієнт має зовнішню інформацію щодо очікуваної ідентичності сервера, перевірку імені хоста МОЖЕ бути пропущено. (Наприклад, клієнт, можливо, підключається до машини, адреса та ім'я хоста якої є динамічними, але клієнт знає сертифікат, який подасть сервер.) У таких випадках важливо максимально звузити область прийнятних сертифікатів у щоб запобігти людині в середині нападів. В особливих випадках клієнту може бути доречно просто ігнорувати особу сервера, але слід розуміти, що це залишає з'єднання відкритим для активної атаки.

Коротше кажучи, він чітко призначений для використання з сертифікатом X.509 (він чітко посилається на RFC 2459, пізніше замінений RFC 3280 та 5280: PKI з сертифікатами X.509).

Під час використання пакетів шифрів Kerberos може бути певний випадок. Можливо, має сенс ставитися до сервісного квитка Kerberos сервера, якщо він може вважати таким же призначенням, як сертифікат X.509 у звичайних HTTPS, для перевірки особи віддаленої сторони. Це не зовсім вписується в правила RFC 2818 (хоча може потрапити під " Якщо клієнт має зовнішню інформацію щодо очікуваної ідентичності сервера, перевірка імені хоста МОЖЕ бути пропущена "), але це не було б абсолютно абсурдно. З цього приводу я не думаю, що звичайні браузери взагалі підтримують шифрові набори TLS Kerberos (кількість може підтримувати Kerberos за допомогою аутентифікації SPNEGO, але це не пов'язано). Крім того, це також працює лише в умовах, коли використання Kerberos підходить.

" [Даючи] спокій споживачам, що вони підключаються до правильного веб-сайту " - це насправді одна з ключових вимог щодо забезпечення зв'язку між ними та вашим сервером. Використовуйте сертифікат, який вони можуть підтвердити, за допомогою відповідних умов іменування (RFC 2818 або останнім часом RFC 6125).


1

Ви не можете використовувати https без будь-якого сертифіката. Вам потрібно або придбати довірений сертифікат, або створити сертифікат, який підписав власноруч. Частина налаштування вашого веб-сервера для використання https - це вказівка ​​його на правильні файли ключів. Звичайно, це стосується всіх веб-серверів не лише iis.


Щоб перевірити, чи може ваш OpenSSL підтримувати з'єднання без сертифікатів , запустіть openssl ciphersі шукайте ADHпротокол на зразок ADH-AES256-SHA- якщо такий протокол присутній, ви можете технічно налаштувати з'єднання без будь-яких сертифікатів.
Брендон Родос,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.