Является ли самоподписанный сертификат SSL ложным чувством безопасности?
Если вас перехватывают, пользователь просто примет сертификат, как он / она всегда.
Интересный вопрос, на мой взгляд, это зависит от использования. Вы по-прежнему защищены с точки зрения того, что сеанс зашифрован, но у вас нет возможности узнать, является ли это правильный сертификат SSL, представленный вам, если вы не распространите свой корневой сертификат CA пользователям / клиентам. Для проектов внутреннего тестирования / разработки это будет отлично работать, вы создаете сертификат корневого ЦС, который используете для распространения среди своих пользователей (это можно сделать с помощью групповой политики в Windows и с помощью командной строки openssl в Linux / BSD), а затем используйте этот корневой сертификат для подписание вашего CSR. Пользователи не увидят предупреждений или чего-либо еще, и вы знаете, что сертификат подписан вашим внутренним центром сертификации.
Для внешних сайтов, где вы не можете этого гарантировать, я бы сказал, что самоподписанный сертификат лучше, чем отсутствие SSL, если вы отправляете пароли или другую конфиденциальную информацию по соединению.
Однако есть и положительные стороны: есть множество очень дешевых "коммерческих" эмитентов сертификатов, GoDaddy будучи одним из них. Вы можете получить сертификат примерно за 40 евро в год. GoDaddy даже предлагает бесплатные сертификаты для веб-сайтов проектов OpenSource.
Я собираюсь не согласиться, один раз по узким техническим причинам, а другой по общим.
Узкая техническая основа заключается в том, что OP спрашивал о самозаверяющих сертификатах, а несколько других ответов относятся к сертификатам, подписанным частными центрами сертификации, что является немного другой проблемой. Но не сильно отличается, так что на самом деле это всего лишь примечание.
Основное возражение состоит в том, что я считаю, что до тех пор, пока коммерчески подписанные сертификаты обходятся более чем тривиально, а 40 долларов в год - это не тривиальные расходы для многих людей на этой планете - самоподписанные сертификаты играют важную роль в обеспечении безопасности в Интернете, при условии признания их ограничений.
Самозаверяющий сертификат похож на ssh-ключ от моего known_hosts
файл. Без независимой проверки он не может гарантировать мне, что я обращаюсь к системе, которой я считаю себя; но это жестяная банка заверьте меня, что система, с которой я говорю сейчас, - это та же система, с которой я разговаривал в прошлый раз, когда думал, что разговариваю с ней. Мы все время кэшируем ssh-ключи, и я еще никогда не встречал системного администратора, который независимо проверял бы более части открытых ключей в его / ее. known_hosts
файл.
Самозаверяющие сертификаты (и, в этом отношении, сертификаты, подписанные нередко действующими центрами сертификации) намного лучше, чем отсутствие SSL вообще, если люди понимают, что, если они не проверит их, они защищают связь только с собой, сервером. на другом конце DNS-записи и любых посредников, находящихся на линии. Если они независимо проверяют сертификат, то аутентификация и шифрование по крайней мере такие же надежные, как и сертификаты, подписанные признанным центром сертификации.
Более того, тем, кто желает представить использование сертификатов, подписанных признанным центром сертификации, как единственную панацею интернет-безопасности, возможно, придется хорошо подумать над такими проблемами, как включение подписывающего ЦС правительства Китая в стандартный пакет Mozilla, и поддельные SSL-сертификаты, подписанные Comodo.
Смотря как. Если вы думаете, что это делает вас более защищенным, то это увеличивает ваш риск, поскольку вы выбираете более рискованные поступки со своим ложным чувством безопасности. Если вы относитесь к нему функционально как к HTTP, я бы сказал, что вы немного более безопасны.
Без SSL / HTTPS любой, у кого есть wirehark в вашей сети (или в локальной сети любого, кто входит в систему), может легко прослушивать и захватывать имя пользователя / пароли, отправленные в виде простого текста.
С самоподписанным SSL они не могут просто прослушивать, но теперь должны подделать ваш сайт, потенциально изменить DNS, чтобы сделать атаку посредника (MITM). Это по-прежнему угроза, но им гораздо труднее справиться.
Другая проблема с использованием самоподписанного SSL заключается в том, что многие браузеры рассматривают самозаверяющие сертификаты как серьезную угрозу безопасности и предупреждают вас перед вводом (например, хром) с гигантской красной страницей. http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html Это могло быть серьезным неудобством.
Итак, суть в следующем: если вы запускаете что-то, что не должно быть особенно безопасным (например, без данных кредитной карты, без номеров социального страхования) и не можете позволить себе надлежащий сертификат, самозаверяющий сертификат может иметь некоторый смысл. (чтобы сказать, чтобы другие пользователи сети не могли легко обнюхать их данные для входа).
Для внешних сайтов, на которых у пользователей не установлен ваш сертификат CA (что является наиболее распространенным случаем), да, самозаверяющий сертификат дает ложное ощущение безопасности, а значит, хуже, чем бесполезно:
Во-первых, без предварительно установленного сертификата CA, как пользователь проверяет, действительно ли сертификат исходит от вас, а не от злоумышленника? Разумеется, сопоставив поля сертификата (CN, отпечатки пальцев и т. Д.) - но против чего? Итак, теперь вам нужен побочный канал для проверки сертификата - и в тех немногих случаях, которые я видел, операторы линии поддержки (которые должны были служить побочным каналом для проверки) не понимают, что который должно означать; Кроме того, использование такого побочного канала на порядки дороже, чем получение сертификата, подписанного доверенным центром сертификации, поэтому пользователь должен слепо доверять вам.
Во-вторых, пугающее предупреждение, которое получает пользователь, пугает по уважительной причине: поскольку пользователь не может / не будет проверять представленный сертификат, они могут быть надежно передача данных на Elbonian Haxx0r D00dz.
В-третьих, что хуже всего, вы снижаете чувствительность пользователей: "Мне сказали, что я должен игнорировать это предупреждение на https://mysite.example.com/ , и наковальня не сделал упасть мне на голову, и моя золотая рыбка тоже не погибла; оооочень, это означает, что это просто еще одно окно с предупреждением, не имеющее никакого реального значения, поэтому я могу игнорировать это поле всякий раз, когда я его встречаю - я все равно получаю эту симпатичную иконку с замком, и это важно ».
Другими словами, уровень защиты сопоставим с обычным HTTP (за исключением прослушивания по сети: хотя данные зашифрованы при передаче, это довольно анемичная функция без проверки конечной точки), но чувство защиты неоправданно высока. Плохая аналогия с автомобилем: «У меня есть АБС, поэтому теперь я могу водить безопаснее в плохих условиях» - за исключением того, что АБС существует только в рекламной брошюре автомобиля, но фактически не присутствует в машине.
Предлагаемое чтение: OWASP SSL Лучшие практики
TL; DR: Используя самозаверяющие сертификаты на общедоступных сайтах, вы делаете Интернет еще хуже, по одному невежественному пользователю.
Это зависит от того, что вы имеете в виду под словом «безопасность» и какова степень.
Например, ваш браузер поставляется с набором CA, принятым по умолчанию. Это означает, что любой сертификат, выданный этим ЦС, принимается вашим браузером (до тех пор, пока он не совпадет с именем DNS). А теперь представьте, что какое-то злое правительство владеет ЦС или может заставить ЦС выдать сертификат для сайта, который вы посещаете. Затем выполнить MITM очень просто: они могут проксировать ваше соединение, отправив в ваш браузер имеющийся у них сертификат, и ваш браузер примет его, поскольку он исходит от «доверенного» центра сертификации. Пока они не будут прозрачными для DNS (что является основой для MITM), это нормально.
Итак, «список одобренных CA» - это, по сути, большая дыра в безопасности, пока один из этих CA не сотрудничает с каким-то злым правительством. Намного лучше иметь собственный центр сертификации.
Конечно, вы можете сделать это в своей компании или на своем домашнем сервере, потому что вы можете установить свой собственный сертификат CA в клиент, который вы тоже контролируете. На общедоступном сервере вы не можете иметь дело с каким-либо пользователем, прося его добавить исключение или добавить ваш сертификат.
Итак, это зависит от того, что вы подразумеваете под «безопасностью», и от объема. ЕСЛИ у вас есть клиенты, конечно, самоподписанный будет безопаснее, пока вы не установите на самом клиенте сертификат вашего собственного CA.
Конечно, вы не можете сделать это на общедоступном веб-сайте, поскольку не являетесь владельцем всех клиентов. Таким образом, вы подвергнетесь опасности из-за разного поведения, что небезопасно.