- Let’s encrypt
- Let’s encrypt
- Linux, freebsd
- Linux, freebsd, другие
- Nginx
- Верификация домена
- Генерация сертификата
- Другие бесплатные ssl‑сертификаты
- Другие виды сертификатов
- Какими бывают ssl-сертификаты
- Конфиденциальность
- Наборы шифров
- Несколько фактов о startssl
- Ограничения
- Получение сертификата
- Предупреждения о смешанном содержимом
- Проверка подлинности
- Проходим проверку (2-й уровень верификации)
- Регистрация
- Самоподписанные сертификаты
- Типы ключей
- Шаг 1. создать секретный ключ и запрос на получение сертификата
Let’s encrypt
Процитируем сайт
Let’s Encrypt — это бесплатный, автоматизированный и открытый центр сертификации (CA), который работает для общественного блага. Сервис Let’s Encrypt предоставляется Internet Security Research Group (ISRG).
Ключевые принципы Let’s Encrypt:
Let’s encrypt
Проект создан в 2021 году, чтобы выдавать бесплатные SSL-сертификаты любому пользователю на 90 дней (затем их нужно обновлять). Основные плюсы SSL Let’s Encrypt в том, что защита распространяется на IDN-домены и поддомены сайта. К недостаткам можно отнести поддержку далеко не всех OC и старых браузеров, также сложности в плане совместимости с некоторыми устройствами.
При этом наиболее существенным минусом будет отсутствие гарантии сохранности данных сайта и печати доверия (картинка с логотипом удостоверяющего центра, которая подтверждает, что сайт проверен). Также у Let’s Encrypt нет страхования деятельности, то есть в случае проблем этот удостоверяющий центр ограничится лишь извинениями.
Linux, freebsd
Убедитесь, что установлен OpenSSL. Вы можете проверить это:
openssl version
Если нет, то откройте консоль и установите его для своей платформы:
Затем сгенерируйте секретный ключ и CSR одной командой:
Linux, freebsd, другие
Самый простой способ установить сертификат Let’s Encrypt на своём сервере — использовать
Nginx
Отредактируйте файл конфигурации nginx (
nginx.conf
Эта конфигурация была сгенерирована с помощью упомянутого ранее
. С его помощью проверьте актуальность конфигурации. Отредактируйте правильные пути для сертификата и секретного ключа. Показанная здесь конфигурация сгенерирована с промежуточными настройками — прочитайте об ограничениях и конфигурациях браузера для каждой настройки, прежде чем выбрать наиболее подходящую для себя.
Верификация домена
Перед получением сертификата нам нужно подтвердить право владения доменом. Для этого переходим в раздел Validations Wizard и выбираем пункт Domain Name Validation
Вводим домен
Выбираем email, на который будет отослано письмо для подтверждения (postmaster, hostmaster, webmaster либо email из whois)
Получаем письмо и вводим код из него в поле. Все — домен подтвержден, можно приступать к генерации сертификата. В течении 30 дней мы можем генерировать сертификат. Далее нужно будет повторить процедуру верификации.
Генерация сертификата
Идем в раздел Certificates Wizard и там выбираем Web Server SSL/TSL Certificate
Далее у нас 2 варианта — либо нажать на Skip и ввести запрос на генерацию сертификата, либо генерировать все в мастере. Допустим, запроса сертификата у нас нет, поэтому будем генерировать все в данном мастере.
Вводим пароль для ключа (мин. 10 символов — макс. 32) и размер ключа (20484096).
Получаем и сохраняем ключ.
Выбираем домен, для которого будем генерировать сертификат (домен должен быть уже подтвержден).
Нам дают право на включение в сертификат один поддомен — пусть будет стандартный www
Получили немного информации о сертификате, жмем на Continue.
Теперь ждем подтверждения сотрудником StartSSL сертификата. Обещают в течении 3-х часов, однако на практике все происходит намного быстрее, мне пришлось ждать 10 минут. Ранее заказывал ночью — примерно за такое же время подтверждали запрос.
Другие бесплатные ssl‑сертификаты
Среди бесплатных SSL есть два популярных решения: сертификаты от Let’s Encrypt и Cloudflare. Однако во время их установки и дальнейшей работы есть ряд нюансов, которые стоит учитывать.
Другие виды сертификатов
Напоследок хотелось бы сказать, что помимо обозначенной градации сертификатов — DV, OV, EV — существуют и другие типы сертификатов. Например, сертификаты могут отличаться по количеству доменов, на которые они выдаются. Однодоменные сертификаты (Single Certificate) привязываются к одному домену, указываемому при покупке.
сертификаты (типа Subject Alternative Name, Unified Communications Certificate, Multi Domain Certificate) будут действовать уже для большего числа доменных имен и серверов, но за каждое наименование, включаемое в список сверх обозначенного количества, придется доплачивать отдельно.
Еще существуют поддоменные сертификаты (типа WildCard), которые охватывают все поддомены указанного при регистрации доменного имени. Иногда могут потребоваться сертификаты, которые будут одновременно включать помимо доменов несколько поддоменов.
В таких случаях стоит приобретать сертификаты типа Comodo PositiveSSL Multi-Domain Wildcard и Comodo Multi-Domain Wildcard SSL. Отметим, что в этом случае можно также приобрести обычный мультидоменный сертификат, в котором просто указать необходимые поддомены.
Получить SSL-сертификат можно и самостоятельно: пара ключей для этого получается через любой генератор, например, бесплатный OpenSSL. Такие защищенные каналы связи можно с легкостью использовать для внутренних нужд компании: для обмена между устройствами сети или приложениями.
P.S. Несколько материалов по теме из нашего блога:
Какими бывают ssl-сертификаты
Сертификаты, подписанные центрами, делятся на несколько видов — в зависимости от уровня надежности, того, кто и как их может получить и, соответственно, цены.
Первый называется DV (англ. Domain Validation — проверка домена). Для его получения физическому или юридическому лицу нужно доказать, что они имеют некий контроль над доменом, для которого приобретается сертификат. Проще говоря, что они либо владеют доменом, либо администрируют сайт на нем.
Конфиденциальность
Конфиденциальность представляет собой приватность — так и есть, она защищает информацию от чтения посторонними лицами. Обычно этот процесс предусматривает перевод информации из читаемой формы (в том числе аудио и видео), которая называется
открытый текст
, в зашифрованную, нечитаемую форму, которая называется
шифротекст
. Этот процесс именуется
шифрованием
. Обратный процесс — превращение нечитаемого шифротекста обратно в читаемый открытый текст — называется
расшифровкой
. Для шифрования и расшифровки информации существует много методов —
шифровальных функций
(или
алгоритмов
Чтобы две стороны могли общаться, они должны прийти к согласию по двум вопросам:
- Какой алгоритм (шифровальную функцию) использовать в коммуникации.
- Какие параметры, пароли или правила (то есть секрет) будут использоваться с выбранным методом.
Есть два основных метода шифрования:
Симметричные методы шифрования полагаются на то, что обе стороны владеют одним и тем же секретом, который отправитель использует для шифрования, а получатель — для расшифровки тем же методом и тем же ключом (см. иллюстрацию внизу). Проблема этих методов состоит в том, как сторонам договориться (то есть обменяться) о секретном ключе, не встречаясь физически друг с другом — им нужно установить какой-то безопасный канал связи.

Симметричное шифрование (см. большую версию)
Асимметричные методы решают проблемы такого рода — они основаны на понятии публичных и секретных ключей. Открытый текст шифруется одним ключом и может быть расшифрован с использованием парного ему ключа.
Итак, как это работает? Предположим, что у нас есть две стороны, которые желают безопасно общаться друг с другом — Алиса и Боб (в каждом учебнике всегда используются такие имена вымышленных персонажей, в справочниках по безопасности и прочих, мы уважаем эту традицию).
Если Алиса хочет отправить сообщение Бобу, она должна раздобыть его публичный ключ, зашифровать открытый текст и отправить ему шифротекст. Он затем использует свой секретный ключ для расшифровки.
Если Боб хочет отправить сообщение Алисе, он должен раздобыть её публичный ключ, зашифровать открытый текст и отправить ей шифротекст. Она затем использует свой секретный ключ для расшифровки.

Асимметричное шифрование (см. большую версию)
Когда мы используем симметричное, а когда асимметричное шифрование?
Асимметричное шифрование используется для обмена секретом между клиентом и сервером. В реальной жизни нам обычно не нужна двусторонняя асимметричная коммуникация — достаточно, если одна из сторон (назовём её сервер для простоты) владеет набором ключей, так что она может получать зашифрованные сообщения.
В реальности это защищает информацию только в одном направлении — от клиента к серверу, потому что информация, зашифрованная публичным ключом, может быть расшифрована только с помощью парного ему секретного ключа: значит, только сервер может её расшифровать.
Другое направление не защищено — информация, зашифрованная секретным ключом сервера, может быть расшифрована его публичным ключом, который открыт для всех. Другая сторона (также для простоты назовём её клиент) начинает коммуникацию с шифрования случайно сгенерированного секрета сессии публичным ключом сервера, затем отправляет шифротекст обратно на сервер, который, в свою очередь, расшифровывает его с помощью своего секретного ключа, и теперь владеет секретом.
Затем для защиты реальных данных при передаче используется симметричное шифрование, поскольку оно гораздо быстрее асимметричного. Обменявшись секретом, только две стороны (клиент и сервер) могут шифровать и расшифровывать информацию.
Вот почему первая асимметричная часть рукопожатия также известна как обмен ключами и вот почему реально зашифрованные коммуникации используют алгоритмы, известные как методы шифрования.
Наборы шифров
Выбор набора шифров для использования — это компромисс между совместимостью и безопасностью:
OpenSSL перечисляет поддерживаемые комбинации (см. выше) в порядке убывания их криптографической стойкости. Так сделано, чтобы во время первоначального рукопожатия между клиентом и сервером они перебирали комбинации начиная с самой сильной до тех пор, пока не найдут комбинацию, которая поддерживается обеими сторонами.
Википедия содержит исчерпывающий список алгоритмов для всех компонентов TLS и указывает их поддержку в разных версиях SSL и TLS.
Mozilla SSL Configuration Generator — очень полезный и крайне рекомендуемый справочник, какие криптографические методы использовать на сервере. Мы позже будем использовать его в реальных серверных конфигурациях.
Несколько фактов о startssl
- 25 мая 2021 StartSSL был подвергнут атаке сетевых взломщиков (в простонародии хакеров), однако получить фиктивные сертификаты им не удалось. Закрытый ключ, лежащий в основе всех операций, хранится на отдельном компьютере, не подключенном к интернету.
- StartSSL поставляет помимо SSL сертификатов для Web, сертификаты для шифрования почты (S/MIME), для шифрования серверов XMPP (Jabber), сертификаты для подписи ПО Object code signing certificates).
- StartSSL проверяет верность установки сертификатов. После установки сертификата (через некоторое время) я получил уведомление о отсутствии промежуточного сертификата, и ссылка на информацию по установки.
После установки промежуточного сертификата пришло соответствующее письмо. - StartSSL поддерживается множеством ПО: Android, Camino, Firefox, Flock, Chrome, Konqueror, IE, Mozilla Software, Netscape, Opera, Safari, SeaMonkey, Iphone, Windows
- Дружелюбная поддержка на русском языке
- Сравнительная таблица вариантов верификации
- За 59.90$ вы можете создать ∞ количество WildCard сертификатов сроком на 3 года (350 дней, в течении которых вы можете перевыпускать сертификат 2 года, на которые можно выдать сертификат).
- Отзыв сертификата платный — 24,90$. 2-й класс верификации позволяет пересоздать сертификат (насколько я понял, всего один раз). Extended Validation сертификаты освобождены от этого сбора.
Ограничения
Let’s Encrypt выдаёт только сертификаты DV. Сертификаты OV и EV не поддерживаются, и в данный момент нет планов их поддержки. Выдаются сертификаты на один или несколько доменов, но в данный момент нет сертификатов с поддоменами (подстановочными знаками). Для получения дополнительной информации см.
Получение сертификата
Нам осталось только получить сертификат и установить его на сервере. Идем в Tool Box -> Retrieve Certificate, выбираем домен и копируем сертификат.
Про установку не буду писать, информация есть на хабре и на StartSSL.
Предупреждения о смешанном содержимом
Возле адресной строки вы можете увидеть предупреждающий знак и сообщение вроде «Соединение небезопасно! Части страницы не защищены (такие как изображения)». Это не означает, что вы неправильно установили сертификат: просто убедитесь, что ссылки на все ресурсы (изображения, таблицы стилей, скрипты и др.), как локальные так и с удалённых серверов, не начинаются с
Проверка подлинности
Что насчёт
аутентичности
? Проблема с реальными приложениями публичной инфраструктуры ключей состоит в том, что ни у одной стороны нет способа узнать, кем на самом деле является вторая сторона — они физически разделены друг от друга. Чтобы доказать свою аутентичность второй стороне, вовлекается
третья сторона, имеющая взаимное доверие — центр сертификации (CA)
. Этот CA выпускает
сертификат
с подтверждением того, что доменное имя
Проходим проверку (2-й уровень верификации)
Для снятия ограничений бесплатного сертификата нужно пройти идентификацию. Для этого в Validations Wizard выбираем Personal Identity Validation, проходим несколько шагов и нам предлагают загрузить документы
Для загрузки документов нужно только выбрать их в поле. Загрузить нужно не менее 2-х документов, подтверждающих вашу личность (главный разворот паспорта, водительские права, удостоверение личности, карточку социального обеспечения, свидетельство о рождении и т.д., я загружал главный разворот паспорта и студенческого билета). Могут запросить дополнительные документы — у меня запросили счет за телефон, в котором указан мой адрес, номере телефона и имя, в качестве альтернативы можно получить аналоговой почтой письмо для верификации адреса.
Далее вам нужно будет ввести данные своей кредитной картыPayPal. Идем в Tool Box ->Add Credit Card | PayPal | Ticket
Все, на этом подготовка к верификации окончена. Вам должно будет прийти письмо от поддержки с дальнейшими инструкциями. По окончании верификации вы сможете выпускать WildCart сертификаты в течении 350 дней. Далее нужно будет проходить проверку заново.
Регистрация
Выбрав на сайте русский язык вы получаете прекрасный англо-русский интерфейс. Регистрация находится
Жмем Sing-up и переходим к регистрации, где заполняем небольшую форму. Все поля обязательны к заполнению, нужно вводить настоящие данные, могут проверить вашу личность и отозвать сертификат, заблокировать аккаунт. Адрес нужно указывать домашний, а не рабочий.
Нам предлагают ввести проверочный код, который был выслан на email. Вводим. Далее нам предлагают выбрать размер ключа для вашего сертификата (для авторизации на сайте) 2048 или 4096.
Сертификат сгенерирован, и мы должны подтвердить его установку в браузер.
На этом регистрация завершена. Рекомендую сохранить сертификат на физическом носителе (например, записать на болванку).
Самоподписанные сертификаты
Существует возможность самому подписать сертификат, а не отдавать это право центру сертификации. Это хорошо для целей тестирования, потому что с криптографической точки зрения самоподписанный сертификат не отличается от любого другого, но браузеры не станут ему доверять, а начнут показывать предупреждение безопасности — вы можете выдавать себя за кого угодно, но это не проверено доверенной третьей стороной.
Типы ключей
Сертификаты Elliptic Curve Cryptography (
ECC
) быстрее обрабатываются и используют меньше CPU, чем сертификаты RSA, что особенно важно для мобильных клиентов. Однако некоторые сервисы, такие как Amazon, CloudFront и Heroku на момент написания этой статьи пока не поддерживают сертификаты ECC.
256-битная длина ключа для ECC считается достаточной.
Сертификаты Rivest Shamir Adleman (RSA) более медленные, но совместимы с большим разнообразием старых серверов. Ключи RSA больше по размеру, так что 2048-битный ключ RSA считается минимально допустимым. Сертификаты RSA с ключами 4096 бит и больше могут ухудшать производительность — к тому же, скорее всего, они подписаны 2048-битным ключом посредника, что по большей части подрывает дополнительную защиту!
Вы могли заметить расплывчатость заявлений, сделанных выше, и отсутствие каких-либо чисел. То, что может нагрузить один сервер, не нагрузит другой сервер. Лучший способ определить влияние на производительность — это проверить загрузку на своём собственном сервере, с реальным веб-сайтом и реальными посетителями. И даже это изменится со временем.
Шаг 1. создать секретный ключ и запрос на получение сертификата
В следующих примерах мы будем использовать 2048-битные сертификаты RSA, по причине их большей совместимости. Если ваш провайдер, у которого установлен сервер, поддерживает ECC (например, если вы не пользуетесь услугами Heroku или AWS), то можете предпочесть использовать ECC.
