- Основные преимущества
- Что такое ssl-сертификат
- Что такое ssl-сертификат и для чего он нужен
- Что делать если нет сертификата в запросах заявок на сертификат
- Error: letsencrypt challenge request 429
- Безопасность данных
- Где купить ssl-сертификат
- Генерация ключа по алгоритму диффи-хеллмана
- Для чего нужно преобразование сертификатов
- Доверие к сайту
- Использование плагина webroot
- Как заказать выпуск бесплатного ssl-сертификата
- Как получить pfx ключ на iis
- Какие виды ssl-сертификатов есть и кто их выдаёт?
- Каким сайтам нужен ssl?
- Какой ssl-сертификат выбрать?
- Настраиваем конфигурацию nginx для ssl
- Плюсы и минусы бесплатного ssl-сертификата от let’s encrypt
- Получаем pfx ключ для импорта в iis
- Преобразование crt в pem
- Преобразование p7b в pem
- Преобразование pem в key
- Преобразование pfx в pem
- Программная реализация
- Создаем сниппет конфигурации для ssl-ключа и сертификата
- Создаем сниппет конфигурации с устойчивыми настройками шифрования
- Устанавливаем ssl сертификат let’s encrypt (инструкция)
- Установка openssl для windows
- Файлы сертификата
- Шаг 2: создание сертификата
- Шаг 3. настраиваем tls/ssl на веб-сервере
- Шаг 4. настраиваем файрвол
- Шаг 5. подключаем изменения в nginx
- Шаг 6. настраиваем автоматическое обновление
- Шаг 0. подготовка
Основные преимущества
бесплатно:
любой владелец сайта (в частности, доменного имени) может получить и установить доверенный TLS-сертификат Let’s Encrypt (TLS — наследник SSL);
автоматизация:
все функции установки, конфигурации и обновления проводятся в автоматическом режиме;
безопасность:
все методы шифрования Let’s Encrypt отвечают текущим стандартам;
прозрачность:
публичная доступность информации о выпуске и отзыве каждого сертификата для любого желающего;
свободно:
будет использован принцип open standard для протоколов взаимодействия с CA (certificate authority).
Что такое ssl-сертификат
SSL (Secure Sockets Layer — уровень защищённых сокетов) — это протокол шифрования, который позволяет кодировать данные для более безопасного обмена.
Что такое ssl-сертификат и для чего он нужен
Безопасность и конфиденциальность в интернете — важнейший фактор для пользователей при посещении любого сайта. Согласитесь, никому не хочется лишиться пароля от банковской карты или другой конфиденциальной информации после невинного серфинга в сети. От того насколько защищен ваш сайт зависит доверие к нему со стороны пользователей и поисковиков.
SSL — это сертификат или своего рода «удостоверение», подтверждающее, что ваш сайт безопасен для пользователей. Без этого сертификата, данные, которые вы вводите на сайте, могут быть перехвачены злоумышленниками.
Простой пример: вы покупаете книгу в интернет-магазине и вводите данные карты, чтобы расплатиться. Сайт передает их серверу и вот как раз во время передачи они могут быть перехвачены. SSL защищает данные, а вернее шифрует так, что даже если они и попадут в третьи руки, вместо ценной информации злоумышленники получат бесполезный набор случайных символов.
Если пользователь попадает на сайт без SSL, то видит вот такую ужасную картину (с Google):
Аналогично с Яндекса:
В адресной строке все не менее печально.
Как вы понимаете, увидев подобное предупреждение, пользователь тут же покинет сайт. Поэтому SSL нужен не только магазинам, но и вообще любому современному сайту, включая личные блоги.
Соответственно дело за малым — получить сертификат и установить его на сайт. Получить SSL можно бесплатно и платно.
Что делать если нет сертификата в запросах заявок на сертификат
Бывают ситуации, что на вашем сервере по каким-то причинам, в папке запросы на сертификат, может не оказаться вашего, в этом случае вам необходимо будет перейти в этой же mmc в раздел “Личное-Сертификаты”. Выбираем нужный и делаем экспорт.
Появится мастер экспорта сертификатов.
Обратите внимание, что в pfx выгрузить не получится, но это не страшно, нам подойдет и p7b, но с включенной галкой “Включить по возможности все сертификаты в путь сертификации”
Указываем путь сохраняемого файла.
Видим, что все успешно выполнено.
Error: letsencrypt challenge request 429
- Попробуйте удалить домен из панели VestaCP и добавить его снова, после чего повторить попытку выпуска сертификата.
- Повторите попытку выпуска сертификата через 1 час.
Безопасность данных
Конечно же, стоит начать с этого пункта, ведь в этом заключается основная цель использования SSL-сертификатов. Если вы работаете с персональными данными пользователей, вам просто необходимо их шифровать при передаче к серверу. Само по себе использование сертификата не лекарство от всех бед, злоумышленники могут перехватить данные ещё до момента передачи их на сервер на заражённом компьютере или устройстве посетителя сайта. Однако использование протокола шифрования — значительный вклад в снижение уязвимости сайта.
Где купить ssl-сертификат
Платные SSL выпускают разные центры сертификации, самые распространенные: Comodo, IdenTrust, Symantec Group, GeoTrust.
Перед покупкой выберите, какой тип сертификата вам нужен, они бывают:
Генерация ключа по алгоритму диффи-хеллмана
Для повышения безопасности вам необходимо сгенерировать ключ по алгоритму Диффи-Хеллмана. Для генерации ключа длиной 2048 бит используйте такую команду:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048Процесс может занять несколько минут.
Для чего нужно преобразование сертификатов
Тут ответ, очень простой, все дело в формате работы с ними у каждой программы, будь то IIS или же Apache сервер. Более подробно про виды сертификатов и их назначение, я вам посоветую прочитать вот эту статью.
Давайте я подробнее покажу как выглядит ошибка импортирования сертификата. Во первых когда вы получаете от comodo ваш архив с сертификатами, то там будет два файла:
Попытавшись на сервере IIS произвести их импорт вы увидите вот такую картинку.
Сертификат не содержит закрытого ключа
И тут нет ничего удивительного, так как это не pfx архив, то в нем нет нужного приватного ключа. Для его получения придется слегка постараться.
Доверие к сайту
Пользователи привыкают, что все крупные проекты используют SSL-сертификаты. Надпись «Защищено» и замочек дают посетителю сайта представление о том, что он и его данные находятся в безопасности.
Использование плагина webroot
Алгоритм работы Webroot включает в себя создание специального файла в директории /.well-known. Она размещается в корневом каталоге веб-сервера (document root) и может быть открыта сервисом Let’s Encrypt для проверки. В зависимости от ваших настроек, вам может понадобиться явно разрешить доступ к папке /.well-known.
Если вы ещё не установили Nginx, сделайте это, следуя руководству по установке Nginx на Ubuntu 16.04.
Чтобы убедиться в том, что папка доступна сервису Let’s Encrypt, внесем небольшие изменения в конфигурацию Nginx. По умолчанию файл конфигурации находится в папке /etc/nginx/sites-available/default. Мы будем использовать редактор Nano для внесения изменений:
sudo nano /etc/nginx/sites-available/defaultВнутри блока server добавьте такой блок location:
# Добавить в SSL-блок server
location ~ /.well-known {
allow all;
}Вам также стоит посмотреть, где расположен корневой каталог веб-сервера (document root), так как этот путь необходим при работе с Webroot. Если вы используете стандартный файл конфигурации, она будет расположена в /var/www/html.
Сохраните и закройте файл.
Проверьте вашу конфигурацию на синтаксические ошибки:
sudo nginx -tЕсли ошибок нет, перезапустите Nginx, используя эту команду:
sudo systemctl restart nginxКак заказать выпуск бесплатного ssl-сертификата
Рассказываем кратко на примере установки бесплатного SSL для сайта на веб-сервере, работающем на Linux или Windows:
Для подтверждения владения доменом и успешной генерации сертификата нужно будет иметь доступ к записям DNS а также уметь работать с командной строкой.
Как получить pfx ключ на iis
нажимаем сочетание клавиш WIN R и вводим mmc, для вызова оснастки. Я вам уже рассказывал о ее применении и удобстве для системного администратора.
Далее вам необходимо через меню “Файл” добавить новую оснастку.
Находим сертификаты и нажимаем кнопку “Добавить”
В следующем окне выбираем “для учетной записи компьютера”
подтверждаем, что нас интересует локальный компьютер.
Далее находим пункт “Запросы заявок на сертификат”, тут вы обнаружите ваш запрос, находите его и через правый клик экспортируете его.
У вас откроется мастер экспорта сертификатов
Далее вы выбираете “Да, экспортировать закрытый ключ”
Ставим галку “Включить по возможности все сертификаты в путь сертификации” и начинаем наш экспорт PFX архива.
Теперь мастер экспорта, просит вас указать два раза нужный вам пароль, для защиты pfx архива.
Через кнопку обзор, указываем место сохранения вашего файла.
Нажимаем “Готово”
Как видим, все успешно выгружено.
Какие виды ssl-сертификатов есть и кто их выдаёт?
Есть специальные центры сертификации или как ещё называют — удостоверяющие центры (УЦ). Вы могли встречать названия таких УЦ: Symantec, Comodo, GlobalSign, Thawte, GeoTrust, DigiCert. Они подтверждают подлинность ключей шифрования с помощью сертификатов электронной подписи.
Кроме того, есть проекты, CloudFlare или LetsEncrypt, где можно получить сертификат бесплатно и самостоятельно. Такой сертификат выпускается на 3 месяца и далее требует продления. Однако во время их установки и дальнейшей работы есть ряд нюансов, которые стоит учитывать.
Например, при выборе сертификата Cloudflare учтите, что он выдаётся сразу на 50 сайтов. Тем самым сертификат будет защищать не только ваш домен, но и ещё несколько чужих, что несёт за собой риски безопасности. Также у Cloudflare нет печати доверия. Если говорить о недостатках LetsEncrypt, то сюда можно отнести поддержку далеко не всех браузеров, отсутствие гарантии сохранности данных сайта и печати доверия.
Печать доверия — это особый знак, позволяющий посетителям видеть, что соединение с вашим сайтом и все передаваемые данные надёжно защищены.
Итак, существует несколько типов SSL-сертификатов по источнику подписи и типу проверки данных.
- Самоподписанные. Сертификат подписывается самим сервером. Его может сгенерировать любой пользователь самостоятельно. По сути, он бесполезен, потому что доверять ему будет только компьютер, на котором был сгенерирован такой сертификат. Большинство браузеров при посещении сайта с таким сертификатом выдаст предупреждение, что соединение не защищено.
- Подписанные доверенным центром сертификации (валидные). Речь о тех самых авторитетных УЦ выше. Сертификат корректно отображается во всех браузерах. Данные сертификата проверены и подтверждены в сертифицирующем центре.
Так вот, разница между самоподписанными сертифкатами и, выданными УЦ, как раз и заключается в том, что браузер знаком с УЦ и доверяет ему, и при использовании такого сертификата ваш посетитель никогда не увидит огромное уведомление о небезопасности ресурса. Купить такой SSL-сертификат можно как напрямую в УЦ, так и через хостинг-провайдеров.
Подписанные доверенным центром сертификаты, в свою очередь, тоже подразделяются по типу проверки данных:
- DV (Domain Validation) — базовый уровень сертификата, который обеспечивает только шифрование данных, но не подтверждает существование организации. Такие бюджетные сертификаты подойдут физическим и юридическим лицам.
- OV (Organization Validation) — обеспечивает не только шифрование данных, но и подтверждает существование организации. Такие сертификаты доступны только для юридических лиц.
- EV (Extended Validation) — это эффективное решение с самым высоким классом защиты, которое активно применяется в онлайн-бизнесе. Для оформления требуется пройти процедуру расширенной проверки, подтвердить законность организации и право собственности на домен.
Сертификаты всех указанных типов обеспечивают шифрование трафика между сайтом и браузером. Кроме того, у них есть дополнительные опции:
- WildCard — защищает соединение с доменом и всеми его поддоменами.
- SAN — защищает домены по списку, указанному при получении SSL-сертификата.
Каким сайтам нужен ssl?
SSL-сертификат необходимо подключать к сайтам, которые работают с финансами и персональными данными пользователей. Это интернет-магазины, банки, платёжные системы, социальные сети, почтовые сервисы и любые другие проекты.
SSL-сертификат лучше ставить с самого начала, чтобы иметь более высокие позиции в поисковых системах. Если всё же изначально не использовался сертификат, то переехать можно быстро, а вот поисковики могут увидеть это только спустя пару месяцев. Тем более сегодня поставить SSL можно и бесплатно.
Какой ssl-сертификат выбрать?
Итак, мы определились с тем, что SSL-сертификаты различаются между собой не только брендом и ценой. Сегодняшний ассортимент предложений предусматривает широкий круг задач, для которых может потребоваться SSL.
Например, если вы просто хотите уберечь пользователей вашего веб-сайта от навязчивых предупреждений браузера о посещении непроверенного сайта, будет достаточно за несколько минут получить простой DV (Domain Validation) сертификат. Если же вы используете свою интернет-площадку для операций, требующих повышенного уровня безопасности данных компании и клиентов — стоит задуматься об EV (Extended Validation) сертификате.
Для выбора оптимального сертификата для определённого сайта нужно изучить, что предлагают центры сертификации, обращая внимание на следующие аспекты:
- насколько SSL совместим с основными браузерами;
- на каком уровне происходит защита данных пользователей;
- насколько масштабная проверка организации проводится;
- есть ли печать доверия.
Настраиваем конфигурацию nginx для ssl
Теперь, когда мы подготовили сниппеты, можно обновить нашу конфигурацию Nginx и подключить SSL.
В данном руководстве мы полагаем, что вы используете стандартный файл с блоками server, расположенный в папке /etc/nginx/sites-available. Если вы используете другой файл с блоками server, замените название в представленных ниже командах.
Перед тем, как двигаться дальше, давайте сделаем резервную копию нашего текущего файла с блоками server:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bakТеперь откройте файл с блоками server для внесения изменений:
sudo nano /etc/nginx/sites-available/defaultВнутри ваш блок server, вероятно, начинается так:
server {
listen 80 default_server;
listen [::]:80 default_server;
# Конфигурация SSL
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
. . .Плюсы и минусы бесплатного ssl-сертификата от let’s encrypt
Стоит ли устанавливать бесплатный сертификат или лучше купить платный — разбираем достоинства и недостатки:
Плюсы Let’s Encrypt:
- он бесплатный (да, КЭП) и его могут использовать владельцы небольших сайтов;
- надежное шифрование;
- есть возможность обновлять сертификат автоматически при помощи специального клиента, который устанавливается на сервер и может менять его конфигурацию.
Минусы:
- не каждый хостинг поддерживает автоматический выпуск и обновление сертификата;
- сложная установка в ручном режиме;
- клиент для автоматического обновления получает разрешение на изменение конфигурации сервера (при ручной установке на VDS, виртуальных хостингов это не касается). С одной стороны, мы записали это в плюсы, а с другой стороны, из-за неправильных настроек может пострадать весь сайт;
- короткий срок действия. Чаще всего SSL от Let’s Encrypt выпускается на 90 дней, реже на год. То есть каждые 90 дней нужно следить, не слетел ли сертификат во время автоматического обновления или перевыпускать его вручную. Если забыть о сроках, сайт на время может оказаться без сертификата и это повлияет на доверие к нему со стороны пользователей, а также на позицию в выдаче поисковиков;
- могут возникнуть проблемы при установке на виртуальный хостинг (а это обычно самый дешевый хостинг);
- у сертификата есть проблема совместимости с разными устройствами, ОС и операционными системами. Например, сертификат не работает на мобильных устройствах с версией прошивки ниже Android 2.3.6;
- нет гарантий. Let’s Encrypt не несет ответственности за использование своих сертификатов. Если пользователь потеряет деньги на сайте с бесплатным сертификатом, например, в результате взлома, он не сможет их вернуть. Коммерческие центры сертификации возмещают убытки в зависимости от типа SSL-сертификата;
- нет поддержки клиентов — только техническая документация на сайте, которая может показаться сложной для новичков;
- бесплатные сертификаты менее функциональны, чем платные аналоги. Например, SSL Let’s Encrypt не выпускает сертификаты с зеленой строкой или проверкой организации, то есть, не подходит серьезным компаниям.
Как видите, минусов немало и есть над чем подумать. Стоит ли рисковать или лучше купить платный сертификат на год и забыть о нем до очередного продления?
Получаем pfx ключ для импорта в iis
Теперь когда у вас есть все составляющие, вы можете выполнить последнюю команду для создания PFX файла для IIS сервера.
Задаем пароль для pfx файла, потребуется при импортировании.
В итоге вы получаете нужный вам файл, который можно загружать на ваш почтовый сервер.
Преобразование crt в pem
Кладем так же все в одну папку, файл crt вам должны были прислать вместе с ca-bundle.
В итоге у меня получилось, вот так.
Преобразование p7b в pem
Попробует такое преобразование.
Преобразование pem в key
Теперь получим файл с расширением key, для этого есть вот такая команда:
Вас попросят указать пароль от pem ключа.
В итоге я получил закрытый ключ в формате key.
Осталась финишная прямая.
Преобразование pfx в pem
Теперь приступаем к получению фала в формате Pem. Положите в папку с дистрибутивом файл в формате pfx.
Вас попросят указать пароль от Pfx архива, вы его задавали при экспорте, после чего нужно придумать пароль на pem файл.
В папке с дистрибутивом OpenSSL вы обнаружите файл key.pem, он нам нужен будет для следующего этапа.
Программная реализация
Центр Сертификации выдаёт сертификаты, которые генерируются на АСМЕ сервере по протоколу Boulder, написанные на языке GO (доступный в исходниках под лицензией MPL2).
Данный сервер предоставляет RESTful-протокол, который функционирует через канал с TLS шифрованием.
Создаем сниппет конфигурации для ssl-ключа и сертификата
Сперва создадим сниппет конфигурации Nginx в папке /etc/nginx/snippets.
Для правильного распознавания назначения файла назовем его ssl-, затем укажем доменное имя и в конце поставим .conf:
Создаем сниппет конфигурации с устойчивыми настройками шифрования
Следующим шагом мы создадим другой сниппет, определяющий некоторые настройки SSL. Это позволит Nginx подключить устойчивый «набор шифров» SSL (англ. cipher suite) и некоторые дополнительные функции, которые помогут обеспечить безопасность нашего сервера.
Прим. перев. Cipher Suite — это совокупность алгоритмов, используемых в конкретной TLS/SSL-сессии:
- алгоритм выработки сессионных ключей шифрования;
- алгоритм, используемый для аутентификации сервера;
- непосредственно сам симметричный алгоритм шифрования трафика;
- и алгоритм контроля целостности (MAC, message authentication code).
Установленные нами параметры могут быть использованы повторно для конфигураций Nginx в будущем, поэтому дадим файлу стандартное название:
sudo nano /etc/nginx/snippets/ssl-params.confДля настройки безопасной связки Nginx-SSL мы будем использовать рекомендации сайта Cipherli.st. Он создан для предоставления быстрого доступа к готовым настройкам шифрования популярного программного обеспечения. Дополнительная информация доступна в руководстве по настройке SSL для Nginx.
Примечание. Предлагаемые стандартные настройки на сайте Cipherli.st обеспечивают устойчивую безопасность, но иногда это приводит к ухудшению совместимости. Если вам необходимо поддерживать более старые версии клиентов, используйте альтернативный список настроек, доступный при нажатии на значок «Yes, give me a ciphersuite that works with legacy/old software.» Составить такой список можно и вручную.
Для наших целей можно скопировать предлагаемые настройки целиком. Нам потребуется внести лишь некоторые изменения.
Сперва добавим DNS-резолвер. Используем для нашего руководства тот, что предлагает Google. Затем установим в качестве параметра ssl_dhparam указатель на файл ключа Диффи-Хеллмана, который мы сгенерировали ранее.
Устанавливаем ssl сертификат let’s encrypt (инструкция)
Рассмотрим использование сертификата применительно к серверам , используемым на нашем хостинге.
Подавляющее большинство наших серверов используют версию Plesk 12.5 где данный модуль уже включён в дистрибутив Plesk 12.5 и установка его проста и удобна. Достаточно зайти в панель плеск в раздел «Сайты и домены », кликнуть на модуль Let’s Encrypt,
выбрать нужные опции и после нажатия кнопки «Установить», установка произойдёт менее чем за минуту.
Так как данный сертификат рассчитан на срок не более 90 дней, то в панели плеск создана соответствующая задача cron в разделе Инструменты и настройки – Планировщик задач
Стоит заметить, что существуют некоторые ограничения на генерацию сертификата:
- дублирующие сертификаты — не более 5 в неделю;
- количество попыток генерации сертификата не более 5 раз в час.
Установка openssl для windows
Теперь нам необходимо наш файл pfx переделать в pem, Pem преобразовать в key:
Вы получите из этих трех файлов, нужный для импорта pfx архив. Во всем этом нам поможет утилита OpenSSL для Windows.
Файлы сертификата
После получения сертификата у вас должны появиться следующие файлы в PEM-кодировке:
Шаг 2: создание сертификата
Откройте командную строку (cmd) от имени администратора и поочерёдно введите следующие команды:
- Выполните
C:wacswacs.exe. - Далее выберите:
- Укажите ваше доменное имя и два раза нажмите Enter для подтверждения.
- Затем последовательно выберите:
- Укажите папку для сохранения сертификатов
C:wacscrt. - После этого выберите:
- Укажите адрес электронной почты для уведомлений об ошибках.
- На дополнительные вопросы отвечайте следующим образом:
Шаг 3. настраиваем tls/ssl на веб-сервере
Теперь, когда у вас есть SSL-сертификат, необходимо настроить веб-сервер Nginx так, чтобы он начал его использовать.
Внесем некоторые изменения в нашу конфигурацию:
- Создадим сниппет конфигурации, содержащий расположение нашего SSL-ключа и файлов сертификата.
- Создадим сниппет конфигурации, содержащий настройки устойчивого SSL, которые можно будет использовать в будущем для любого сертификата.
- Обновим блоки
serverв конфигурации Nginx, которые будут управлять SSL-запросами и использовать оба вышеуказанных сниппета.
Такой подход к настройке Nginx позволяет сохранить блоки server чистыми и сделать конфигурацию доступной для повторного использования.
Шаг 4. настраиваем файрвол
Если у вас включен файрвол ufw, вам необходимо обновить настройки и разрешить SSL-трафик. К счастью, Nginx регистрирует несколько профилей с ufw после установки.
Вы можете посмотреть текущие настройки, введя:
sudo ufw statusШаг 5. подключаем изменения в nginx
Теперь, когда мы внесли изменения в конфигурацию и обновили правила файрвола, нужно перезапустить Nginx, чтобы изменения вступили в силу.
Первым делом стоит проверить и убедиться, что синтаксические ошибки в наших файлах отсутствуют. Это можно сделать, введя:
sudo nginx -tВ случае успеха ваш результат должен выглядеть следующим образом:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulЕсли ваш результат совпадает с тем, что вы видите выше, значит, ваш файл конфигурации не содержит синтаксических ошибок. Для активации изменений безопасно перезапустим Nginx:
sudo systemctl restart nginxШаг 6. настраиваем автоматическое обновление
Сертификаты от Let’s Encrypt действуют только в течение 90 дней. Это побуждает пользователей к автоматизации процесса обновления. Нам понадобится создать регулярно запускающуюся команду для проверки и автоматического обновления сертификатов, срок которых истекает.
Для запуска проверки ежедневных обновлений мы будем использовать Cron — стандартный системный сервис для запуска повторяющихся задач. Задачи Cron указываются в файле под названием crontab:
sudo crontab -eВставьте следующую строчку в конец файла, затем сохраните и закройте его:
Шаг 0. подготовка
Перед тем, как приступить к работе, вам нужно убедиться в нескольких вещах.
У вас должен быть установлен сервер на Ubuntu 16.04, и создан пользователь (не root), для которого настроены sudo привилегии. Узнать, как это сделать, вы можете, следуя руководству по первичной настройке сервера на Ubuntu 16.04.
Вы должны быть владельцем доменного имени, для которого планируется использовать сертификат, или иметь доступ к его настройке. Если у вас нет зарегистрированного доменного имени, вы можете сделать это, используя один из регистраторов (например, Namecheap или GoDaddy).
