Чем отличается защищенное соединение от незащищенного – знает довольно большое количество людей. А вот дальше довольно часто начинается темный лес: откуда берется сертификат, чем один сертификат отличается от другого, в чем разница между SSL и TLS и кто это вообще такие, какое отношение сертификат имеет к безопасности и так далее.
В рамках этого поста мы попробуем ответить хотя бы на часть этих и подобных вопросов, а начнем все-таки издалека – с того, что значат HTTP и HTTPS в адресной строке.
Что такое HTTP и HTTPS и чем они отличаются
Когда кто-нибудь из нас заходит на какой-нибудь сайт в Интернете, просто читает его или вводит на нем какие-то данные, происходит обмен информацией между нашим компьютером и сервером, на котором размещен сайт. Происходит он в соответствии с протоколом передачи данных — набором соглашений, определяющих порядок обмена информацией между разными программами.
Протокол, который используется для передачи данных в сети и получения информации с сайтов, называется HTTP (англ. HyperText Transfer Protocol — протокол передачи гипертекста). У него существует расширение, которое называется HTTPS (англ. HyperText Transfer Protocol Secure — безопасный протокол передачи гипертекста). Его суть — в том, что расширение позволяет передавать информацию между клиентом и сервером в зашифрованном виде. То есть информация, которой обмениваются клиент и сервер, доступна только этому клиенту и этому серверу, а не третьим лицам (например, провайдеру или администратору Wi-Fi-сети).
Шифрование данных, которые передаются от клиента к серверу, происходит, в свою очередь, в соответствии со своим, криптографическим протоколом. Сначала для этого использовался протокол под названием SSL (англ. Secure Sockets). У него было несколько версий, но все они в какой-то момент подвергались критике из-за наличия проблем с безопасностью. В итоге была выпущена та версия, которая используется сейчас — ее переименовали в TLS (англ. Transport Layer Security). Однако название SSL прижилось лучше, и новую версию протокола до сих пор часто называют так.
Для того чтобы использовать шифрование, у сайта должен быть специальный сертификат, или, как он еще называется, цифровая подпись, который подтверждает, что механизм шифрования действительно надежен и соответствует протоколу. Индикаторами того, что у сайта такой сертификат есть, являются, помимо буквы «S» в HTTPS, зеленый замочек и надпись «Защищено» или название компании в адресной строке браузера.
Как сайту получить SSL-сертификат
Существует два способа. Способ первый — веб-мастер может издать и подписать сертификат самостоятельно, сгенерировав криптографические ключи. Такой сертификат будет называться самоподписанным (англ. Self-Signed). В этом случае соединение с сайтом также будет зашифровано, но при попытке зайти на сайт с таким сертификатом пользователю будет показано предупреждение, что сертификат — недоверенный (неподтвержденный центром или устаревший). Обычно в окне браузер показывает перечеркнутый замочек и выделенные красным буквы HTTPS, или выделяет красным и перечеркивает буквы HTTPS в поисковой строке — зависит от браузера.
Второй способ (и единственный правильный) — приобрести сертификат, подписанный каким-либо из доверенных центров сертификации (Certificate authority). Сертификационные центры изучают документы владельца сайта и его право на владение доменом — ведь, по идее, наличие сертификата должно также гарантировать пользователю, что ресурс, с которым он обменивается информацией, принадлежит реальной легитимной компании, зарегистрированной в определенном регионе.
Сертификационных центров существует довольно много, но авторитетные среди них можно пересчитать по пальцам. От репутации центра зависит то, насколько ему будут доверять компании-разработчики браузеров и как они будут отображать сайт с таким сертификатом. От вида сертификата, срока его действия и репутации центра и зависит цена на сертификат.
Какими бывают SSL-сертификаты
Сертификаты, подписанные центрами, делятся на несколько видов — в зависимости от уровня надежности, того, кто и как их может получить и, соответственно, цены.
Первый называется DV (англ. Domain Validation — проверка домена). Для его получения физическому или юридическому лицу нужно доказать, что они имеют некий контроль над доменом, для которого приобретается сертификат. Проще говоря, что они либо владеют доменом, либо администрируют сайт на нем. Этот сертификат позволяет установить защищенное соединение, но в нем нет данных об организации, которой он выдан, а для его оформления не требуется никаких документов. Процесс получения такого сертификата обычно занимает несколько минут.
Сертификаты более высокого уровня — OV (англ. Organization Validation — проверка организации). Такие сертификаты выдаются только юридическим лицам, и от них требуются документы, подтверждающие существование организации, — так подтверждается не только безопасность соединения с доменом, но и то, что домен принадлежит организации, указанной в электронном сертификате. Оформление может занимать несколько дней, пока проверяются все документы. Наличие DV или OV-сертификата у сайта в браузере отображается серым или зеленым замочком, словом Secure и буквами HTTPS в адресной строке.
И еще есть EV (англ. Extended Validation — расширенная проверка) — сертификаты самого высокого уровня. Такой сертификат также могут получить только юридические лица, предоставившие все необходимые документы, а отличительной особенностью является то, что название и локация организации отображаются зеленой надписью в адресной строке после зеленого замочка. Такие сертификаты пользуются наибольшим доверием у браузеров, но они и дороже всего. В основном их приобретают крупные компании. Даже банки часто приобретают их в основном не для основного сайта, а отдельно для домена своего сервиса онлайн-платежей.
Информацию о сертификате (кем выдан, когда и сколько действует) можно посмотреть, кликнув на название организации или надпись Secure — правда, это можно сделать не во всех браузерах.
Что может быть не так с сертификатами
Один из принципов, по которым основные разработчики браузеров, такие как Google и Mozilla, выстраивают свою политику — безопасность Интернета и пользовательских данных в нем. В этой связи осенью 2017 года Google анонсировала, что отныне будет маркировать все страницы, использующие HTTP-соединение, как «незащищенные», и, по сути, блокировать пользователям доступ к ним.
Фактически, это условие вынудило все сайты на HTTP в ускоренном темпе приобретать доверенные сертификаты. Соответственно, спрос на услуги сертификационных центров вырос в разы, а время на проверку документов последним, естественно, хотелось бы сократить, чтобы выдать как можно больше этих самых сертификатов. Поэтому многие из центров стали проводить проверку гораздо менее тщательно.
Результатом этого становится то, что надежные сертификаты получают далеко не самые надежные сайты. Так, Google провела расследование, по результатам которого выяснилось, что один из самых крупных и авторитетных центров выдал более 30 тыс. сертификатов, не осуществив при этом должной проверки. Последствия для центра не радужные: Google заявила, что перестанет считать доверенными все сертификаты, выданные центром, пока тот полностью не переделает всю систему проверки и не установит новые стандарты. Mozilla также планирует ужесточить верификацию сертификатов в своих браузерах и тем самым повлиять на требования к их выдаче.
Тем не менее пока полностью уверенным в надежности сертификата и получившей его организации быть нельзя. Даже если это EV-сертификат, внешне соответствующий всем требованиям безопасности, не стоит доверять тому, что написано зеленым шрифтом, безоговорочно.
С EV-сертификатами все даже особенно плохо: злоумышленник может зарегистрировать компанию с названием, подозрительно похожим на название какой-нибудь известной компании и получить для своего сайта EV-сертификат. В этом случае зелеными буквами в адресной строке будет написано как раз-таки название компании (очень похожее на название другой известной компании), что позволит злоумышленнику повысить доверие пользователя к фишинговому сайту. Поэтому никогда не забывайте об осторожности и соблюдении правил при использовании любой веб-страницы.