Как установить бесплатный ssl-сертификат для своего сайта
Содержание:
Типы сертификатов
Существует три распространенных типа шифрования — каждый выполняет свою функцию для защиты.
Подтвержденный домен (DV)
Сертификат, подтвержденный доменом, считается наиболее распространенным доступным типом. Их обычно называют протоколом с низкой степенью уверенности. Поставляется с автоматической проверкой — он только гарантирует, что определенное доменное имя зарегистрировано и что администратор утверждает запрос на сертификацию.
Веб мастер подтверждает этот вид контроля путем настройки записи DNS для определенного ресурса или по электронной почте. Для получения сертификата требуется от нескольких минут до нескольких часов.
Подтвержденный организацией (OV)
Подтвержденный организацией SSL сертификат — еще один распространенный тип, который мы часто видим. Его обычно называют протоколом высокой надежности. Процесс проверки более сложен — агенты обязаны проверять владельца домена вместе со сведениями о конкретной организации. Это включает в себя:
- название,
- адрес организации,
- страну,
- город.
Проверка занимает немного более длительное время обработки. Потому что потребуется подтверждение полной информации. Чтобы завершить процесс от начала до конца потребуется от нескольких часов до пары дней. Бизнес и компании являются субъектами, чаще всего использующие этот тип шифрования.
Расширенная (EV)
Новый тип сертификата — он имеет один из самых глубоких доступных процессов аутоинтефикации. Для получения такого вида документа, агенты проверяют, является ли бизнес работающим юридическим лицом. Вы также должны предоставить им подтверждение того, что являетесь владельцем определенного домена.
Однако, если вы сделаете это и пройдете проверку — возле адресной строки браузера отобразится зеленый замок, обозначающий безопасность. Это повысит уверенность клиента в том, что все закодировано и безопасно. Сам процесс занимает от нескольких дней до нескольких недель. Рекомендуется для предприятий электронной коммерции.
Шаг 2. Получаем SSL-сертификат
Certbot предоставляет несколько способов получения SSL-сертификатов при помощи разных плагинов. В отличие от плагина для Apache, который описан в другом руководстве, большинство плагинов помогут вам только получить сертификат, который придётся настроить на вашем сервере вручную. Плагины, которые позволяют только получать сертификаты и не устанавливают их, называются «аутентификаторами», так как они используются для подтверждения подлинности сервера, которому сертификат выдаётся.
Давайте разберёмся, как использовать плагин Webroot для получения SSL-сертификата.
Использование плагина Webroot
Алгоритм работы Webroot включает в себя создание специального файла в директории . Она размещается в корневом каталоге веб-сервера (document root) и может быть открыта сервисом Let’s Encrypt для проверки. В зависимости от ваших настроек, вам может понадобиться явно разрешить доступ к папке .
Если вы ещё не установили Nginx, сделайте это, следуя руководству по установке Nginx на Ubuntu 16.04.
Чтобы убедиться в том, что папка доступна сервису Let’s Encrypt, внесем небольшие изменения в конфигурацию Nginx. По умолчанию файл конфигурации находится в папке . Мы будем использовать редактор Nano для внесения изменений:
Внутри блока добавьте такой блок :
Вам также стоит посмотреть, где расположен корневой каталог веб-сервера (document root), так как этот путь необходим при работе с Webroot. Если вы используете стандартный файл конфигурации, она будет расположена в .
Сохраните и закройте файл.
Проверьте вашу конфигурацию на синтаксические ошибки:
Если ошибок нет, перезапустите Nginx, используя эту команду:
Теперь, когда мы знаем , можно выполнить запрос на получение SSL-сертификата. При помощи ключа указываются доменные имена. Если вы хотите использовать единый сертификат для нескольких доменных имен (например, и ), не забудьте добавить их все. Также убедитесь, что вы заменили значения и доменные имена на соответствующие вашим:
Если это первый запуск Certbot, вам будет предложено ввести адрес электронной почты и подтвердить согласие с правилами использования сервиса. После этого вы увидите сообщение об успешном завершении и путь, куда были сохранены ваши сертификаты:
Обратите внимание, что путь к сертификату и дата истечения срока его использования указаны в начале сообщения
Файлы сертификата
После получения сертификата у вас должны появиться следующие файлы в PEM-кодировке:
- cert.pem — сертификат вашего доменного имени;
- chain.pem — Let’s Encrypt;
- fullchain.pem — объединённые и ;
- privkey.pem — приватный (секретный) ключ вашего сертификата.
Важно запомнить расположение этих файлов, так как они будут использоваться в конфигурации вашего сервера. Сами файлы расположены в папке
Однако Certbot создает симлинки на наиболее актуальные файлы сертификата в папке . Так как символьные ссылки указывают на наиболее актуальные файлы сертификата, именно этот путь лучше использовать при обращении к ним.
Вы можете проверить существование файлов, используя такую команду (подставьте ваше доменное имя):
Результатом выполнения команды должны быть указанные выше файлы сертификата. Теперь вы можете настроить ваш сервер так, чтобы использовался в качестве файла сертификата, а в качестве ключа сертификата.
Генерация ключа по алгоритму Диффи-Хеллмана
Для повышения безопасности вам необходимо сгенерировать ключ по алгоритму Диффи-Хеллмана. Для генерации ключа длиной 2048 бит используйте такую команду:
Процесс может занять несколько минут.
Сравнение популярных сертификатов
Чтобы понять, чем именно отличаются бесплатные сертификаты от платных, а также — в чем разница между разными видами платных цифровых подписей, рассмотрим их конкретные примеры.
Бесплатный сертификат Let’s Encrypt
Проект Let’s Encrypt начал свою работу в 2012 году, но только в 2015 начал выпуск сертификатов. Установить сертификат можно с помощью официальных клиентов на Linux и Windows. С 2018 года пользователям Let’s Encrypt доступны SSL-сертификаты типа Wildcard.
Особенности Let’s Encrypt
- Ограниченный срок действия — обновлять сертификат нужно каждые 90 дней. Обычно обновление происходит вручную, хотя на некоторых панелях управления хостингом есть возможность делать его в автоматическом режиме.
- Нет гарантий на компенсацию за утечку пользовательских данных.
- Проверка только 20 поддоменов в неделю.
- Не подходит для IDN-доменов (с кириллическим адресом, типа «мойдомен.рф»).
- Нет возможности проверить владельца ресурса.
Comodo Positive SSL / Wildcard
Positive SSL — это наиболее доступный вариант, который подключается всего за 10 минут. Версия Wildcard требуется в том случае, если защита устанавливается для множества поддоменов.
Positive SSL подходит для шифрования сайтов с небольшим объемом онлайн-транзакций. Он пригодится владельцам новых ресурсов, для которых требуется подтверждение доменного имени. Сертификат устанавливается на 2 года и может перевыпускаться неограниченное количество раз.
Особенности Positive SSL
- Устанавливается на веб- и почтовые сервера.
- Поддержка IDN-доменов.
- Регистрация как через юридическое, так и через физическое лицо.
- Относительно низкая стоимость.
- Нет зеленой адресной строки с названием компании ресурса.
- Защита предоставляется на один домен или поддомен.
Преимущества Wildcard
- Гарантия возврата денежных средств в течение 30 дней.
- Шифрование на 128/256 бит.
- Защита множества поддоменов одним сертификатом.
Основная разница SSL-сертификатов Wildcard от обычных — защита поддоменов. Это преимущество есть у всех Wildcard-сертификатов, независимо от других условий и центров сертификации.
Версия Comodo Positive SSL Wildcard — это идеальный вариант для сайтов с большим количеством поддоменов.
Comodo Essential SSL / Wildcard
Как и все продукты Comodo, пакет Essential предлагает высокую совместимость с существующими браузерами и неограниченное количество перевыпусков. Выдается дольше, чем обычная версия (около двух дней).
Особенности Essential
- Бесплатная печать доверия сайта.
- Дает гарантию на утерю данных на $10000.
- Возможность бесплатного перехода на Comodo EV SSL.
- Более длинный ключ шифрования.
RapidSSL / Wildcard
RapidSSL — это отделение GeoTrust. Поэтому, все продукты компании подписываются корневым сертификатом и пользуются доверием пользователей по всему миру.
Wildcard поддерживает домены со сложной структурой. Благодаря этой версии защита обеспечивается для всех разделов сайта. Пакет позволяет экономить, не заказывая каждый раз отдельный сертификат для всех поддоменов.
Особенности RapidSSL
- Ни обычная версия, ни Wildcard не предлагают поддержку кириллических доменных имен.
- Нет проверки компаний и расширенной проверки.
- Не поддерживается SAN.
Подключение SSL в Spring Boot для RestController
Но в мире Java разработки Spring стал де факто стандартом для DI. А вместе с внедрением зависимости люди используют и другие технологии, которые удобно собрать в одном Spring Boot приложении, не расходуя множество времени на конфигурирование всего зоопарка технологий. Конечно же, это приводит к избыточности зависимостей и к увеличению времени загрузки, но упрощает разработку. Куда проще написать аннотацию RestController, чем самому разбираться с тем, как корректно хендлить запросы через сервлеты. А для того, чтобы перенаправить всё взаимодействие через сервлеты в защищённый канал с использованием сертификатов, в Spring Boot есть два пути проcтой и более сложный для кастомных решений.
В первом случае достаточно воспользоваться набором пропертей
И все будет сделано за вас. Либо, если требуется более кастомная конфигурация, поднятие коннекторов на разных портах с нестандартными настройками и так далее, тогда путь лежит в сторону использования интерфейса WebServerFactoryCustomizer, имплементации которого существуют для всех основных контейнеров будь то Jetty, Tomcat или Undertow.
Поскольку это функциональный интерфейс, его довольно просто можно описать через lambda c параметром типа Connector. Для него мы можем выставить флаг setSecure(true), затем заполнить необходимые параметры для ProtocolHandler-а, выставив ему пути до jks c keystore и trustStore и соответствующие пароли к ним. Например, для tomcat код будет выглядеть подобным образом:
И после этого мы отдаем на откуп «магии» спринга перехват всех веб-запросов к нашему сервису, для того чтобы обеспечить безопасность соединения.
Что такое SSL сертификат самыми простыми словами
Вспомните, как часто происходит дело в шпионских детективах. Нам нужно отправить послание сообщнику в другую страну, и нам очень не хочется, чтобы враги перехватили наше послание и прочитали его.
Поэтому мы с сообщником условились о специальном шифре. У меня есть книга (допустим «Пикник на обочине» Стругацких), и у него есть такая же книга. Я пишу письмо сначала простыми человеческими словами, а потом каждое слово заменяю на цифру. Например, цифра «137» будет обозначать, что данное слово находится на первой странице книги, на третьей строчке, седьмое слово по счету.
Мой сообщник получает письмо с цифрами «137-536-9978», берет свой томик Стругацких, и в обратной последовательности расшифровывает мое послание. Понятно, что даже если письмо будет перехвачено по дороге – никто не поймет, что там написано, потому что только мы с сообщником знаем, какую именно книгу мы используем для шифрования.
Вот и SSL протокол работает схожим образом. Только вы с сообщником каждого нового письма используете новую книгу. Кроме того, ваши книги – уникальны. То есть, нигде в мире больше нет ни одного экземпляра этой книги – только у вас и у сообщника.
Ну и, плюс ко всему, письмо вы отправляете не «Почтой России», а привязываете его к лапе самого быстрого ястреба, который летит от вас прямо по нужному адресу, и скорее погибнет, чем даст кому-то забрать у него ваше письмо.
Вы – это ваш сайт. Ваш сообщник – это ваш хостер-провайдер. Сообщение, которое вы передаете – это любая информация, которую пользователи вводят у вас на сайте – номера банковских карточек, пароли, емейлы и прочее. Быстрый ястреб-камикадзе – это прямой цифровой туннель для сообщения между вашим сайтом и сервером.
Такая работа через «уникальные книги» называется «SSL протоколом». А чтобы иметь возможность работать через этот протокол – вам надо сначала получить SSL сертификат. Это своеобразное удостоверение личности вашего сайта в интернете.
Можно ли взломать SSL протокол?
Теоретически, взломать можно даже эту сложную систему шифрования. То и дело на разных конференциях зачитываются доклады о том, как можно перехватывать сообщения по SSL, и как можно их расшифровывать.
Но на практике все эти способы либо очень сложные, либо очень долгие. То есть на расшифровку одной «буквы» послания может уйти до 2-3 часов времени. Естественно, такая «расшифровка» не сможет применяться для реального воровства ваших данных. И до сих пор SSL протокол считается «невзламываемым».
Но вот другой вопрос. Означает ли это, что ваш сайт и ваши данные в безопасности? Как ни удивительно, но вовсе не означает.
В чем главная опасность SSL сертификата?
То, что вы используете уникальные книги для шифрования, не значит, что злоумышленник не может притаиться где-нибудь на втором этаже вашего дома. В бинокль он увидит все, что вы пишите на листочке бумаги, и ему не придется даже ничего расшифровывать – он считает сообщение еще до того, как оно будет хитро зашифровано.
Кроме того, получить SSL сертификат сегодня очень просто. Самый распространенный вариант – это сертификат для подтверждения домена (так называемые DV – Domain Validation). То есть для его получения достаточно подтвердить, что у вас есть доступ к емейлу, на который зарегистрирован домен, вот и все. Никто не проверяет, что это за сайт, какой деятельностью он занимается, нет ли на нем вирусов.
Соответственно, любой хакер может сделать сайт, купить для него SSL (или даже взять бесплатный, их сейчас хватает) – и собирать ваши данные себе в копилку. Да, на его сервер они попадут в безопасности. Но куда они отправятся оттуда? Вопрос открытый.
И главной опасностью всей этой истории с SSL я считаю то, что у рядовых пользователей возникает ложное ощущение безопасности (либо наоборот – опасности), когда они видят, что сайт на https-протоколе (либо наоборот – на обычном «http»).
А масла в огонь подливает мой любимый Гугл.
Мол, и сайты-то без «https» мы будем помечать как «небезопасные» (читай – «мошеннические» с точки зрения пользователей), и как сигнал для SEO-ранжирования это включим. И все вебмастера в срочном порядке бросились переходить на SSL. Вот тут-то и открылась вся страшная правда.
Далеко не для всех сайтов SSL одинаково полезен. А во многих случаях даже вреден.
Платные сертификаты
Наиболее безопасный и современный способ получить SSL-сертификат — купить его в центре сертификации. Сделать это можно, связавшись с Удостоверяющим центром (УЦ), а также хостинг-провайдером или регистратором вашего домена, издателем, дилером или представителем сертификатов.
Где можно купить
Сертификаты можно приобрести напрямую в удостоверяющих центрах: например, DigiCert, GeoTrust, Thawte — их сертификаты широко известны, узнаваемы и надежны, обеспечивают безопасность передачи данных и доверие к сайту, повышают позиции в выдаче поисковых систем. Русскоязычным пользователям, как правило, удобнее покупать SSL у российских официальных партнёров этих удостоверяющих центров. Например, у регистраторов доменов и хостинг-провайдеров. RU-CENTER всегда выбирает лучших поставщиков для своих клиентов — подходящий вариант можно выбрать в каталоге.
Основные типы
Вы можете выбрать подходящий для вашего сайта тип сертификата:
- Для небольших интернет-проектов (личных сайтов, блогов, микробизнеса, ИП) — DV (Domain Validation) SSL. Подтверждают доменное имя, но не содержат информации о том, кому оно принадлежит. Выпускаются по результатам упрощенной автоматизированной проверки заявителя, поэтому обеспечивают базовый уровень надежности.
- Для бизнеса — OV (Organization Validation) SSL. Удостоверяют домен и его принадлежность той или иной компании. Стандартный уровень надежности.
- Для крупных брендов, банков и сайтов, принимающих платежи — EV (Extended Validation) SSL. Перед выпуском сертификата в отношении его будущего владельца проводится расширенная проверка, обеспечивающая максимальный уровень доверия. Такие сертификаты обладают функционалом OV, кроме того, для использующих их сайтов браузеры отображают зеленую адресную строку как дополнительный индикатор подлинности.
- Для компаний, использующих несколько доменов или поддоменов — мультидоменные OV-сертификаты.
Плюсы
- Удобство. Не нужно ставить напоминания и переоформлять сертификаты каждые 90 дней, как при работе с бесплатными сертификатами, и бояться истечения сроков. Обновлять платные сертификаты надо будет только раз в год.
- Совместимость с 99% браузеров. Это значит, что большинство пользователей не получают пугающих уведомлений о ненадёжности сайта, спокойно ходят по нему, вводят свои данные и без опаски покупают ваши товары.
- Высокий уровень защиты. Ключи платных сертификатов обычно большей длины, чем бесплатных. Это сильно затрудняет их расшифровку и сокращает до минимума количество взломов.
- Гарантии от взлома. Платные сертификаты предполагают страховку, сумма которой зависит от вида сертификата и центра сертификации. Если ваш SSL-сертификат всё же взломают, вы получите гарантированное возмещение.
- Меньше отказов, чем на страницах с сомнительными SSL-сертификатами. Это хорошо для SEO-продвижения.
- Поддержка по телефону и email по вопросам установки и работы с SSL на всех этапах использования. Плюс большое количество инструкций на русском языке. Если возникнут проблемы, например, с выпуском или продлением сертификата, компания-поставщик сама свяжется с УЦ и всё решит.
Минусы
- Это платно. Вам придётся потратить на такой сертификат примерно от 1 000 до 15 000 рублей в год, в зависимости от типа сертификата и количества доменов, которые вы захотите защитить.
- Иногда долгое оформление. Сроки зависят от типа сертификата. DV (Domain Validation) SSL выпускаются практически моментально, если клиент быстро подтверждает данные со своей стороны. Если подтверждение затягивается, то сертификат выпускается в течение суток или нескольких дней. OV (Organization Validation) SSL — за 1–3 дня, а вот EV (Extended Validation) SSL оформляются дольше всех — от 5 дней и выше, так как нужно будет предоставить документы, подтверждающие деятельность компании.
Как работает защищенное соединение?
Чтобы не загружать вас тяжелыми терминами и чрезмерно технической информацией, я постараюсь объяснить все просто и на пальцах.
Каждый сертификат, выдаваемый той или иной компанией, заносится в общую базу. При соединении с сайтом браузер отправляет запрос через HTTPS в эту самую базу, откуда ему приходят данные о сертификате – когда, кем и на какой срок выдан. Если все хорошо, веб-ресурс открывается и вы видите его содержимое, а также зеленый замочек в адресной строке.
Если по каким-то причинам сертификат отсутствует или содержит ошибки, то более новые версии браузеров сразу же оповещают вас об этом, предотвращая загрузку файлов веб-ресурса.
Теперь поговорим о самом шифровании и о том, что оно из себя представляет. Все данные, передаваемые по защищенному каналу, шифруются с помощью специальных ключей. Расшифровать их можно только при наличии этих самых ключей. Стоит отметить, что у сервера и клиента есть по паре закрытых ключей и один открытый. Они математически связаны между собой. Какое-то стороннее вмешательство практически невозможно.
Таким образом, мы можем понять, что даже если в цепочке клиент – сервер появится третий лишний, то он ни в коем случае не сможет узнать закрытые ключи и не получит доступ к информации.
Потому-то HTTPS и называют защищенным протоколом. Ваши данные находятся под полной защитой от несанкционированного доступа. Многие пользователи очень ценят это, поэтому проекты с таким типом протокола имеют в их глазах куда большее значение, чем проигнорировавшие эту возможность.
Бесплатные сертификаты
Самоподписанные сертификаты
Самоподписанный (самоизданный, самозаверенный, self-signed) сертификат — тот, который вы сами создали для своего домена или IP-адреса. Многим владельцам сайтов может показаться, что это идеальный вариант:
- Бесплатно.
- Доступно. Такой SSL-сертификат может создать любой владелец домена.
- Без обращения к поставщикам услуг. Не нужно ждать ответа от центра сертификации.
- Быстро. Но только если вы знаете, что делать и как пользоваться специальными программами или библиотеками. Например, для Windows можно воспользоваться криптографическим хранилищем OpenSSL или консолью PowerShell.
- Можно создать сколько угодно сертификатов.
Вам уже кажется, что выбор сделан и читать дальше нет смысла? Всё не совсем так.
Минусы
- Нет надёжной защиты. Браузеры не доверяют таким сертификатам, потому что заверяют их не специальные центры, а неизвестный им человек или юрлицо.
- Есть риск потерять данные. Причём как пользователей, так и ваши, с сайта компании.
- Отпугивает посетителей сайта. Пользователи, заходя на страницу с самоподписанным сертификатом, видят предупреждение о небезопасности: в результате количество посетителей сайта, готовых совершать на нем действия, снижается. Мало ли что — вдруг сайт мошеннический.
- Возможные ошибки в оформлении и отображении сертификата, если он был создан неправильно.
Если вам нужно провести тесты на внутренних ресурсах компании, а заморачиваться с доверенными сертификатами не хочется, можно сделать самоизданный SSL-сертификат. Но и здесь вы рискуете: если у вас крупная компания, понадобится много труда и времени, чтобы наладить работу и объяснить всем сотрудникам, что делать с этим страшным предупреждением об опасности. В целом же, на практике использовать такой сертификат точно не стоит.
Бесплатные доверенные сертификаты
Такие SSL-сертификаты можно оформить довольно быстро. Часто ими пользуются стартапы, чтобы понять, что вообще такое SSL и как это работает. Бывают только одного вида — DV SSL (Domain Validation). Это сертификаты, удостоверяющие доменное имя.
Плюсы
- Быстро. Такой сертификат могут выдать вам уже через несколько минут. Всё потому, что тип такого сертификата — DV (Domain Validation) SSL и для его оформления нужно только подтверждение владения доменом, как и у платных DV.
- Просто получать и устанавливать.
- Отлично подойдёт для теста с возможностью сэкономить в первые несколько месяцев.
- Известные компании-поставщики. Те же Let’s Encrypt на рынке с 2012 года и поддерживаются Google, Facebook и другими крупными корпорациями.
Минусы
- Небольшой срок действия. Например, сертификаты Let`s Encrypt необходимо перевыпускать каждые 3 месяца.
- Сложности с продлением. Хостеры автоматически продлевают некоторые бесплатные сертификаты. Но здесь бывают проблемы. Перед выпуском сертификационный центр обращается к сайту за специальным файлом. Иногда он в системе не обнаруживается: не было места на диске и файл не записался, во время проверки почему-то закрылся доступ к сайту и пр. Итог один — сертификат не обновляется, а вы даже не узнаете об этом, если не решите вдруг проверить срок действия вручную.
- Отсутствие поддержки. Для корректной работы SSL-сертификата важна грамотная полноценная поддержка (по телефону, по email, в чатах). Она недоступна для бесплатных SSL. На официальных сайтах удостоверяющих центров, как правило, размещены ответы на часто задаваемые вопросы, которые в основном описывают общие случаи и могут быть бесполезны для решения конкретной проблемы. Также есть неофициальная информация на тематических форумах, но среди неё ещё надо найти нужную.
- Есть вероятность не заметить, что сертификат не работает. Как мы писали выше, посмотреть сроки действия сертификата можно вручную. Есть и другой способ: проверять даты с помощью специального скрипта, который не так просто создать. Поддержки нет. Если не проверять сроки, можно пропустить время продления, и сертификаты будут аннулированы. В безопасности сайта появятся дыры, посетители, увидев уведомление о ненадёжности сайта, станут покидать сайт и трафик снизится.
В 2017 году кредитное бюро Equifax сообщило о масштабном взломе: хакеры украли данные 143 млн человек — почти половины населения США. Это произошло отчасти из-за истечения срока действия сертификата, который был неактивным в течение 19 месяцев.