Что такое SSL и зачем нужен HTTPS

Зачем нужен HTTPS сейчас

Раньше, страницы с безопасной передачей данных в интернете встречались довольно редко — это были страницы оплаты, входа или регистрации. Сейчас зеленый замочек слева от адресной строки есть у каждого популярного сайта. Формально, он символизирует, что передача данных между вашим компьютером и сервером сайта происходит в зашифрованным виде, и никто не может на пути между этими двумя точка узнать номер вашей карточки или логин с паролем. За последние три года, передача данных через безопасный протокол HTTPS стал де факто стандартом в современном интернете.

Любопытно, что с ростом популярности протокола, появились причины его использовать, не связанные напрямую с факторами безопасностью. Вот некоторые из них:

  1. Многие продвинутые возможности API взаимодействия с браузером требуют HTTPS, например, использование камеры, запись звука, использования оффлайн возможностей.
  2. Посещаемость сайта. Гугл заявил, что доступность безопасного протокола является одним из фактором поисковой выдачи, а популярные браузеры хотят в будущем помечать небезопасные сайты специальной отметкой, что будет отпугивать аудиторию.
  3. Многие технические возможности или их реализации, например, использование нового протокола передачи данных HTTP/2 или Websockets в некоторых старых браузерах, требуют обязательного использования шифрования.
  4. Ваш сайт становится безопаснее — больше в него нельзя врезать рекламные блоки или контент с небезопасных сайтов.

SSL, TSL

Однако факт общения с сайтом через HTTPS не означает того, что вашим данным обеспечена безопасность. Дело в том, что есть разные варианты криптографических протоколов, и новые продолжают разрабатываться до сих пор. Например, все SSL протоколы уже считаются устаревшими и не отвечают современным требованиями безопасности — известно, как их можно обойти. Их заменили более новые TSL протоколы. Кроме этого, необходимо произвести настройку веб-сервера таким образом, чтобы максимально использовать все возможности безопасности. Проект SSLTest позволяет оценить, насколько современные и безопасные варианты протоколов и опции используются на сайте. На момент написания этой заметки, этот сайт имеет высшую оценку от SSLLabs — A+. Ниже фрагмент конфига веб-сервера Nginx, который позволяет получить такую оценку:

Прогресс не стоит на месте, изобретаются новые шифры и находятся новые уязвимости; со временем этот конфиг устареет, поэтому перед использованием обязательно убедитесь в его актуальности.

Let’s encrypt

Наверное, одним из серьёзных факторов роста популярности HTTPS стала доступность приобретения сертификатов. Цена в 400 долларов за сертификат — довольно дорого, но теперь есть отличный способ получать сертификаты совсем бесплатно. Некоммерческая организация Let’s encrypt создала автоматизированный сервис по выдаче сертификатов, поэтому теперь вопрос цены отпал. Ложка дёгтя — такие сертификаты действительны только три месяца, поэтому их надо часто генерировать заново.

Есть большое множество клиентов для сервиса, я перепробовал несколько и мне больше всего понравился вариант на языке Ruby. Вот как выглядит генерация сертификата для одного домена в командной строке:

Первая команда сгенерирует вам ключ, вторая команда получит сертификат, если осталось меньше 20 дней до окончания срока действия сертификата текущего или если его нет. Нужно подставить свои пути к ключу, который сгенерировали первой командой, путь к доступной из интернета корневой директории сайта (в современных фреймворках такие директории обычно называют public, web, webroot) и ключ для сохранения всех данных. Последнюю команду можно использовать как задачу для Cron и автоматически обновлять сертификаты.

Я советую эту книгу для полного понимания того, как работает шифрование. Надеюсь, эта информация поможет вам сделать ваши проекты безопаснее и удобнее.


Also published on Medium.

Добавить комментарий