Может ли https работать без сертификата?

9

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

Это идет вразрез со всем, что я предположил о https.

Я прочитал википедию, и там упоминается, что вам нужен либо доверенный сертификат, либо самозаверяющий сертификат для настройки https.

Можно ли настроить IIS для ответа на https без какого-либо сертификата?

отметка
источник
7
Вы можете обнаружить, что это просто проблема общения. Ваш сервер, вероятно, имеет собственные сертификаты, готовые к работе. Кстати, именно этого предупреждения вы избегаете, используя общедоступный доверенный сертификат: m86security.com/kb/article.aspx?id=13446. Это может быть приемлемо в вашей среде, а может и нет. Я бы сказал, что это больше, чем просто спокойствие - на общедоступном веб-сайте это признак профессионализма!
Дан
5
Самозаверяющие сертификаты дают вам шифрование, но оно не может защитить от атак посредников, поскольку вы получаете те же предупреждения о недействительных или непроверенных сертификатах для самозаверяющих, как и для какого-то парня, перехватывающего трафик, дешифрующего его, кража данных и повторное шифрование их для возврата клиенту.
Барт Сильверстрим
1
«Самозаверяющие сертификаты дают вам шифрование, но оно не может защитить от атак посредника [...]», если пользователь не может явно доверять этим самоподписанным сертификатам с помощью какого-либо внеполосного механизма, который только реально возможно для небольшой пользовательской базы, которая знает вас через такой внеполосный механизм. Вряд ли, действительно.
Бруно
Или, если они доверяют этому в первый раз, они будут предупреждены, если это изменится в будущем. Точно так же как подписи SSH, действительно.
mfinni
1
Технически SSL / TLS не требует сертификатов для защиты канала связи. Фактически это SSL / TLS может использовать другой механизм для защиты канала: сертификаты pgp, имя пользователя / пароль, предварительные общие ключи или «анонимный» (без аутентификации вообще). Точно так же SSL / TLS не гарантирует шифрование, есть много разных шифров, которые он может использовать, включая «ноль» (без шифрования вообще). И есть аналогичные опции для дайджест-аутентификации. Так что это все замечательно, но какие программы используют какие-либо из них: в основном их вообще нет, определенно нет крупного сервера или программного обеспечения для браузера (все они требуют сертификатов).
Крис С

Ответы:

24

Нет. У вас должен быть сертификат. Он может быть самоподписанным, но для обмена симметричным ключом сеанса между сервером и клиентом для шифрования данных должна быть пара открытых / закрытых ключей.

Driftpeasant
источник
Анонимный Диффи-Хеллман, как отмечалось в другом ответе, разрешил соединение без сертификата - но современные версии 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).

Bruno
источник
1

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

Халед
источник
Чтобы проверить, может ли ваш OpenSSL поддерживать соединения без сертификатов, запустите openssl ciphersи ищите такой ADHпротокол ADH-AES256-SHA- если такой протокол присутствует, то вы можете технически установить соединение без каких-либо сертификатов.
Брэндон Родс