Как установить lets encrypt

Getting Started

To enable HTTPS on your website, you need to get a certificate (a type of file) from a Certificate Authority (CA). Let’s Encrypt is a CA. In order to get a certificate for your website’s domain from Let’s Encrypt, you have to demonstrate control over the domain. With Let’s Encrypt, you do this using software that uses the ACME protocol which typically runs on your web host.

To figure out what method will work best for you, you will need to know whether you have shell access (also known as SSH access) to your web host. If you manage your website entirely through a control panel like cPanel, Plesk, or WordPress, there’s a good chance you don’t have shell access. You can ask your hosting provider to be sure.

With Shell Access

We recommend that most people with shell access use the Certbot ACME client. It can automate certificate issuance and installation with no downtime. It also has expert modes for people who don’t want autoconfiguration. It’s easy to use, works on many operating systems, and has great documentation. Visit the Certbot site to get customized instructions for your operating system and web server.

If Certbot does not meet your needs, or you’d like to try something else, there are many more ACME clients to choose from. Once you’ve chosen ACME client software, see the documentation for that client to proceed.

If you’re experimenting with different ACME clients, use our staging environment to avoid hitting rate limits.

Without Shell Access

The best way to use Let’s Encrypt without shell access is by using built-in support from your hosting provider. If your hosting provider offers Let’s Encrypt support, they can request a free certificate on your behalf, install it, and keep it up-to-date automatically. For some hosting providers, this is a configuration setting you need to turn on. Other providers automatically request and install certificates for all their customers.

Check our list of hosting providers to see if yours is on it. If so, follow their documentation to set up your Let’s Encrypt certificate.

If your hosting provider does not support Let’s Encrypt, you can contact them to request support. We do our best to make it very easy to add Let’s Encrypt support, and providers are often happy to hear suggestions from customers!

If your hosting provider doesn’t want to integrate Let’s Encrypt, but does support uploading custom certificates, you can install Certbot on your own computer and use it in manual mode. In manual mode, you upload a specific file to your website to prove your control. Certbot will then retrieve a certificate that you can upload to your hosting provider. We don’t recommend this option because it is time-consuming and you will need to repeat it several times per year as your certificate expires. For most people it is better to request Let’s Encrypt support from your hosting provider, or switch providers if they do not plan to implement it.

Getting Help

If you have questions about selecting an ACME client, or about using a particular client, or anything else related to Let’s Encrypt, please try our helpful community forums.

Источник

Let’s Encrypt – бесплатный SSL-сертификат для сайта: инструкция по получению, установке, перевыпуску, а также преимущества и недостатки

В этой публикации укажу преимущества и недостатки бесплатных сертификатов SSL Let’s Encrypt перед платными. Дам подробную инструкцию по установке на основе своего опыта и наглядно покажу как БЫСТРО получить (создать), и, если надо, перевыпустить (обновить) SSL-сертификат.

Вы увидите, как просто установить SSL-сертификат на сайт из хостинг-панели ISPmanager Business, буквально в пару кликов.

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

С сентября 2018 года Google настойчиво порекомендовал всем сайтам без исключения, даже если он там реально не нужен, использовать SSL-сертификаты. Посему, теперь уже не имеет значения, что думаю по этому поводу я, вы или кто-либо другой! Придется ставить… Участь сайтов без SSL-сертификатов также указана Google.

Хорошо, что есть бесплатные SSL-сертификаты от Let’s Encrypt.

Так что же такое SSL-сертификаты?

Если обратиться к мадам Wiki, то SSL-серификат это:

SSL (англ. Secure Sockets Layer — уровень защищённых cокетов )– это криптографический протокол, который подразумевает более безопасную связь. Он использует асимметричную криптографию для аутентификации ключей обмена, симметричное шифрование… и бла-бла-бла…

Большинству непосвященным, но очень заинтересованным людям, тяжело понять без поллитра суть SSL, если вы не родились с этим знанием. … Или родились?! Нет? Тоже так думаю…

Давайте разберём человеко-понятным языком, что такое SSL-сертификат и зачем он нужен:

SSL-сертификат – это неведомая для вас цифровая штука, которая за счёт хитрого шифрования обеспечивает безопасную передачу данных между сайтом (который вы открыли) и вашим браузером (через который вы просматриваете сайты).

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

Кому интересно знать больше о SSL-сертификатах и о принципах их работы, если смысл читать публикации, полностью посвященные этому вопросу, сейчас же немного другая задача.

Кому нужны мои данные, и каковы последствия?

Обращайте внимание на сайты без SSL-сертификатов, на которых вам предлагается оставить свои данные.

В лучшем случае, вам будут слать спам или на электронную почту, или на телефон, может, украдут ваш логин и пароль, которые вы используете на сайте без SSL-сертификата и начнут там развлекаться.

В худшем, украдут деньги или чего ещё.

Вот так выглядит сайт, у которого истек срок действия SSL-сертификата, это опасный сайт:

Вот так выглядит сайт, у которого SSL-сертификат надежно защищает ваши данные:

Как получить (создать) и установить на сайт SSL Let’s Encrypt

Преимущества

Недостатки

Другие явные недостатки не заметил.

Он полностью бесплатный! «Бесплатный сыр бывает только в мышеловке» так гласит старинная мудрость. На подсознательном уровне всегда ждешь подвох от халявы! А ведь в 2017 году был реально зарегистрирован сбой на одном из серверов Let’s Encrypt, как вы думаете, понесла ли Let’s Encrypt финансовую ответственность перед пользователями? Конечно же, нет, он же бесплатный, какая тут может быть ответственность, делайте выводы сами.

Лично я, использую почти везде SSL Let’s Encrypt, но всегда готов перейти на платные SSL, например, RapidSSL или Comodo PositiveSSL, они не очень дорогие и простые в установке.

Перевыпуск (обновление) SSL

SSL Let’s Encrypt в хостинг-панели ISPmanager Business перевыпускается АВТОМАТИЧЕСКИ!

Получается, что раз установили и забыли. Круто! Платные SSL-сертификаты этим похвастаться не могут.

Ручной перевыпуск (обновление) SSL-сертификата

Вывод:

Как вы убедились, всё предельно просто, даже для человека, который никогда не сталкивался с SSL-сертификатами ранее.

Теперь вы не только понимаете, что такое SSL-сертификат, для чего он нужен и как он работает, но и знаете, как установить и переустановить его БЕСПЛАТНО для любого своего сайта, буквально за пару кликов, опираясь на подробную инструкцию.

Если у вас есть вопросы, хотите дополнить данную информацию или, ещё лучше, покритиковать меня или статью, пишите в комментариях, я буду рад.

Если эта информация стала для вас полезной, вы можете сказать «спасибо», нажав кнопку вашей любимой социальной сети:

Источник

Let’s Encrypt: получение сертификата по шагам

В данной статье будет описан реальный способ получения сертификата от Let’s Encrypt в ручном режиме для его дальнейшей установки на веб-сервер Windows (IIS/Microsoft Azure) или Linux (полностью ручной режим). Из-за отсутствия официального клиента под Windows для генерации сертификата будет использоваться дистрибутив Linux.

В первые дни открытия заявок на бета-тестирование и было принято решение записаться и вот недавно пришло письмо, которое сообщает о том, что теперь программа ACME сгенерирует валидный сертификат для нашего домена.

Читайте также:  пенсионный фонд можайского района г москвы телефон

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

Как это работает

Полное описание процесса доступно по этой ссылке.
Важно лишь знать, что для подтверждения владения доменом и успешной генерации сертификата нужно будет иметь доступ к записям DNS или к серверу куда ссылается A-запись, что вполне логично.

Смысл программного набора Automated Certificate Management Environment (ACME) (написан на Python) в том, чтобы автоматизировать генерацию и установку сертификата в Linux-окружении.

Существует неофициальный Windows-клиент с открытыми исходными кодами, который может генерировать и устанавливать сертификаты на Windows IIS и Amazon Web Services, но у нас была задача получить ключи и установить их вручную. Предлагаю любому желающему написать статью по работе с ним.

Процесс по шагам

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

[11/01/17] Новый клиент CertBot

Небольшое обновление статьи в 2017 году.
Теперь можно установить CertBot и получить сертификат в ручном режиме.

1. Скачиванием дистрибутив

2. Установка прав на файл

chmod a+x certbot-auto

3. Запуск для получения сертификата в ручном режиме

4. Следуйте указаниям программы (подробнее смотрите в полной инструкции ниже с шага № 4).

Подробная инструкция (старый клиент — всё ещё работает)

Использовалась официальная инструкция.
Пользователи Linux могут использовать текст ниже как пример генерации сертификата в ручном режиме.

1. Запустите ваш любимый дистрибутив Linux (мы использовали Debian 8).

либо 2. Установите Git и выполните команды ниже:

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt

или 2. Скачайте и распакуйте в папку данный архив и перейдите в эту папку

3. Запустите установку и генерацию с помощью

Вам будет предложено ввести электронную почту для восстановления в будущем.
Ключ -a manual позволит сгенерировать ключи в ручном режиме без их автоматической установки на веб-сервер.

4. Далее введите домены для которых вы хотите создать сертификаты

5. Подтвердите сохранение вашего адреса в логах Let’s Encrypt

6. Подтвердите владение доменом

В сентябре 2016 года произошли небольшие изменения в порядке получения сертификата. Спасибо toxi_roman за обновление.

Это один из ответственных моментов в режиме ручной регистрации.
Обратите внимание: нас просят создать ответ на запрос, который возвращает Content-Type text/plain.

Такой ответ не пройдёт и подтверждение выдаст ошибку:

Нужно, чтобы было так:

7. После успешной проверки, будут созданы следующие сертификаты в папке /etc/letsencrypt/live/[имя домена]:

privkey.pem — приватный ключ для сертификата
Используется Apache для SSLCertificateKeyFile и nginx для ssl_certificate_key.

cert.pem (сертификат сервера)
Используется Apache для SSLCertificateFile.

chain.pem (сертификат цепочки)
Он же используется Apache для SSLCertificateChainFile.

fullchain.pem (соединение chain.pem и cert.pem)
Он же используется nginx для ssl_certificate.

7. Теперь пришло время сконвертировать его в родной для Windows .pfx формат.
Перейдите в папку /etc/letsencrypt/live/[имя домена] (откройте терминал в режиме администратора с помощью команды su):

cd /etc/letsencrypt/live/[имя домена]

Запустите OpenSSL с помощью команды:

и начните конвертацию с помощью команды:

Вас попросят ввести пароль и подтвердить его.

7.2 Выходим из OpenSSL с помощью команды quit

8. Мы получили сертификат mydomain.pfx, который теперь можем использовать в Windows-окружении.

Важно знать, что сертификаты Let’s Encrypt валидны 90 дней. Рекомендуется обновлять их каждые 60 дней. На электронную почту, которую вы указали для генерации, будут приходить уведомления об истечении сертификата.

Буду рад услышать ваши замечания или пожелания к статье.

Источник

Выпуск и установка SSL-сертификатов от Let’s Encrypt на VPS

Что такое SSL-сертификат и зачем он нужен?

SSL-сертификат (TLS-сертификат) — это специальный цифровой документ, который связывает между собой криптографический ключ и информацию о сайте, для которого он был выпущен. Наличие SSL-сертификата, выпущенного доверенным центром сертификации является обязательным условием для установления безопасного соединения между сервером и клиентами по протоколу HTTPS.

До недавнего времени, практически все центры сертификации выпускали SSL-сертификаты на платной основе. При этом существует несколько разновидностей таких сертификатов, различающихся степенью глубины проверки данных о владельце сайта. Из-за того, что такие SSL-сертификаты являлись платными, их достаточно редко использовали для небольших сайтов, домашних страниц, личных блогов и т.п. В результате, большая часть сайтов в интернете не использовала защищенные протоколы для связи с клиентами.

К счастью, на текущий момент, благодаря Let’s Encrypt, у владельцев сайтов появилась возможность совершенно бесплатно и автоматически выпускать SSL-сертификат для своего сайта и перейти на использование защищенного протокола HTTPS.

Let’s Encrypt — некоммерческий центр сертификации, у которого можно получить бесплатный SSL‑сертификат сроком действия в 90 дней. Для получения такого сертификата необходимо подтвердить факт владения доменом с использованием протокола аутентификации ACME (Automated Certificate Management Environment), согласно которому к веб-серверу, запросившему выпуск сертификата, производится серия запросов для валидации домена. После выполнения этой процедуры клиенту выдается SSL-сертификат и приватный ключ, которые необходимо передать своему веб-серверу для перехода на работу по протоколу HTTPS.

Мы подготовили простые инструкции, которые позволят вам выпустить бесплатный SSL-сертификат и настроить его автоматическое обновления для веб-серверов Nginx, Apache и панели управления VestaCP, в зависимости от того, что вы используете на своем виртуальном сервере.

Выпуск и настройка сертификата для панели управления VestaCP

Поддержка Let’s Encrypt доступна в VestaCP из коробки.

Для выпуска и установки сертификата вы можете отметить дополнительные опции сразу при добавлении домена в разделе WEB панели VestaCP:

Или отредактировать настройки домена в разделе WEB, выбрав опции поддержки SSL уже после добавления:

Выпуск и автоматическая установка сертификата занимают до 5 минут. После этого данные SSL-сертификата будут доступны также в настройках домена.

Помимо этого, добавляется cron-задание для автоматического обновления сертификатов, истекающих через 30 и менее дней. Проверить это можно в разделе CRON панели VestaCP:

Решение возможных проблем

Error: Let’s Encrypt validation status 400

Error: LetsEncrypt challenge request 429

Выпуск и настройка сертификата для веб-серверов Apache и Nginx

В случае использования веб-сервера без панели управления выпуск, дальнейшее обновление сертификата и настройку веб-сервера удобно будет выполнять при помощи Certbot.

Certbot — это клиент протокола ACME, который устанавливается на конечном сервере и используется для запроса сертификата, валидации домена, установки сертификата и дальнейшего автоматического продления сертификатов от Let’s Encrypt. Для получения сертификатов у Certbot есть несколько плагинов, которые делятся на два типа — аутентификаторы и установщики.

Аутентификатор используется только для получения сертификатов — он проверяет, что вы имеете доступ к домену, для которого запрашиваете сертификат, получает сертификат для указанного домена и помещает файлы сертификата в каталог /etc/letsencrypt/ на вашем сервере. Аутентификатор не устанавливает сертификат и не редактирует конфигурацию вашего веб-сервера для настройки сертификата.

Установщик — это плагин, который помимо получения сертификатов устанавливает его путем изменения конфигурации вашего веб-сервера. На сегодняшний день установка сертификатов полностью автоматизирована и для Apache, и для Nginx.

Для веб-сервера Apache

Установка Certbot на Ubuntu 18.04 с веб-сервером Apache:

CentOS 7 с веб-сервером Apache:

Debian 9 с веб-сервером Apache:

Инструкция по установке Certbot на другие дистрибутивы доступна на официальном сайте Certbot.

После установки Certbot можно приступать к выпуску сертификата. Самый простой и быстрый способ — использовать плагин Apache для выпуска и автоматической установки сертификата:

Плагин получает сертификат для домена (доменов) и автоматически устанавливает его, конфигурируя соответствующим образом Apache.

Если вы запускаете Certbot впервые, вам будет предложено указать email для регистрации в Let’s Encrypt и получения важных уведомлений, а также ознакомиться с условиями использования и принять их.

После окончания установки сертификата Certbot предоставит вам дополнительную информацию, а также ссылку для проверки установленного сертификата:

Плагин Webroot

Чтобы получить только SSL-сертификат для дальнейшей самостоятельной установки, используйте плагин apache с командой certonly:

Плагин apache с командой certonly внесет временные изменения в конфигурацию веб-сервера (добавит новый виртуальный хост для проверки прав на домен согласно протоколу ACME) и откатит их назад после получения подтверждения, а также при необходимости активирует mod_ssl.

Читайте также:  Желчный мешочек у беременных что это

Если вы не хотите, чтобы Certbot каким-либо образом конфигурировал файлы Apache, используйте плагин webroot.

После запуска плагина вы сможете указать доменное имя (или имена) для запроса сертификата, а также путь к директории с файлами сайта.

По результатам работы Certbot уведомит вас и в случае успеха укажет путь к файлам сертификата. В нашем примере файлы размещены по пути:

Путь к этим файлам необходимо указать в ssl конфигурации Apache. Если для домена нет отдельной конфигурации — скопируйте и переименуйте файл дефолтной конфигурации, например:

Затем откройте файл для правки и исправьте значения следующих директив на соответствующие вашему домену пути:

В том же файле в директиве необходимо вместо хоста по умолчанию указать «*» :

Теперь необходимо активировать mod_ssl и включить новую конфигурацию, после чего перезагрузить веб-сервер:

Обновление сертификатов

Сразу при установке Certbot добавляет cron-задание для автоматического обновления полученных им сертификатов. Задание будет запускаться дважды в день и обновлять те сертификаты, срок действия которых истекает через 30 дней и менее. Чтобы убедиться в этом, откройте файл /etc/cron.d/certbot и проверьте наличие задания.

Протестировать автоматическое обновление сертификатов вы можете, выполнив команду:

Для веб-сервера Nginx

Установка Certbot на Ubuntu 18.04 с веб-сервером Nginx.

CentOS 7 с веб-сервером Nginx:

Debian 9 с веб-сервером Nginx:

Инструкция по установке Certbot на другие дистрибутивы доступна на официальном сайте Certbot.

После установки Certbot можно приступать к выпуску сертификата. Самый простой и быстрый способ — использовать плагин Nginx для выпуска и автоматической установки сертификата

Плагин получает сертификат для домена (доменов) и автоматически устанавливает его, конфигурируя соответствующим образом Nginx.

Если вы запускаете Certbot впервые, вам будет предложено указать email для регистрации в Let’s Encrypt и получения важных уведомлений, а также ознакомиться с условиями использования и принять их.

После окончания установки сертификата Certbot предоставит вам дополнительную информацию, а также ссылку для проверки установленного сертификата:

Плагин Webroot

Чтобы получить только SSL-сертификат для дальнейшей самостоятельной установки, используйте плагин nginx с командой certonly:

Плагин nginx с командой certonly внесет временные изменения в конфигурацию веб-сервера (добавит новый блок server для проверки прав на домен согласно протоколу ACME) и откатит их назад после получения подтверждения.

Если вы не хотите, чтобы Certbot каким-либо образом конфигурировал файлы Nginx, используйте плагин webroot.

После запуска плагина вы сможете указать доменное имя (или имена) для запроса сертификата, а также путь к директории с файлами сайта.

По результатам работы Certbot уведомит вас и в случае успеха укажет путь к файлам сертификата. В нашем примере файлы размещены по пути:

Путь к этим файлам необходимо указать в блоке server конфигурации Nginx. Пример настроек SSL для Nginx в файле /etc/nginx/sites-available/default:

После этого проверим корректность конфигурации:

После чего перезагрузим веб-сервер:

Обновление сертификатов

Сразу при установке Certbot добавляет cron-задание для автоматического обновления полученных им сертификатов. Задание будет запускаться дважды в день и обновлять те сертификаты, срок действия которых истекает через 30 дней и менее. Чтобы убедиться в этом, откройте файл /etc/cron.d/certbot и проверьте наличие задания.

Протестировать автоматическое обновление сертификатов вы можете, выполнив команду:

Источник

Let’s Encrypt и nginx: настройка в Debian и Ubuntu

Если вдруг вся эта история прошла мимо вас, Let’s Encrypt — центр сертификации от некоммерческой организации ISRG, существующий при поддержке EFF и многих компаний, взявшей на себя миссию дать людям бесплатные SSL/TLS сертификаты для сайтов и серверов. Сертификаты от Let’s Encrypt уже используются на более чем 10 миллионах доменов.

Кроме очевидной бесплатности у сертификатов от Let’s Encrypt есть особое, отсутствующее у любых других коммерческих сертификационных центров, достоинство: если вы однажды получили сертификат от Let’s Encrypt, то, при прочих равных, это навсегда. Не нужно раз в год-два вручную обновлять сертификаты. Не нужно вообще вспоминать что сертификаты где-то есть. Получил, настроил и забыл!

Внимательный читатель сразу захочет возразить: как же так, ведь известно что сертификаты выдаются со сроком действия в три месяца? Всё дело в автоматическом обновлении сертификатов, которое возможно при полном отсутствии действий со стороны человека.

Организации автоматического обновления сертификатов в статье уделено пристальное внимание, с тем чтобы вы могли в полной мере оценить это принципиальное преимущество Let’s Encrypt.

Почему эта статья

На сайте EFF есть краткие инструкции по использованию Certbot, рекомендуемой программы для получения сертификатов, но они скорей рассчитаны на тех, кто заходит на свой сервер по SSH лишь по острой необходимости. Более подробная документация тоже есть, но пока всю ее прочитаешь и найдешь всё то, что действительно нужно знать… К тому же, в ней не рассмотрены некоторые важные стратегические вопросы использования сертификатов.

Очевидно, нужна короткая и понятная инструкция для тех, кто привычен к серверной консоли, но хочет во всём разобраться без излишних трат времени.

Содержание

Из этой статьи вы узнаете.

Caveat emptor

В инструкциях ниже я исхожу из того что ваши сайты будут использовать SNI. Это расширение протокола TLS позволяет браузерам сообщить желаемое имя сайта до получения и проверки SSL сертификата от сервера. Благодаря SNI вы можете разместить сколько угодно сайтов за HTTPS на одном IP. Но не всё так просто — иначе бы зачем я об этом писал?

Есть ряд старых браузеров в принципе не поддерживающих SNI. В их число входят любые версии IE в уже заброшенном Windows XP, встроенный браузер в Android 2.3 и 2.2 из 2010 года, а также некоторые другие более экзотические браузеры и библиотеки типа Java версии 1.6 и Python до версии 2.7.9.

Если вы всё-таки хотите чтобы ваш сайт открывался в IE в Windows XP, то одним отказом от SNI эта проблема не решается. Нужно специальным образом подбирать шифры, уже отказываясь от forward secrecy и рискуя получить низкую оценку от SSL Labs. Как можно догадаться, этот вопрос заслуживает отдельного обсуждения хотя бы потому что пользователям IE под XP можно посочувствовать — у них уже не открывается половина интернета!

Еще год назад от перехода на SNI вас могла бы удержать ограниченная поддержка этой технологии некоторыми поисковыми ботами типа Bing, но сейчас, с появлением десятков сайтов с бесплатными сертификатами от Cloudflare, что без SNI не открываются, бот Bing (что легко проверить), и боты других основных поисковиков, пришли в согласие с реальностью. Сейчас за это можно не волноваться. Отмечу, что у Googlebot таких проблем не было никогда.

Другим поводом для волнений могут быть различные средства доступа к API вашего сайта. Если у вас давно есть API, то есть небольшой шанс что среди ваших клиентов есть какие-то, использующие устаревшие версии Java или Python. Если у вас таких нет, то не о чем переживать. Если же есть — мои соболезнования.

Почему лучше рассчитывать на SNI?

Это просто. Вам не нужно постоянно держать в голове факты о выданных сертификатах. Для какого домена сертификат был выдан первым. К какому сертификату нужно добавлять еще домены. И так далее… Ни о чем таком со SNI не нужно думать.

Например, так можно посмотреть домены в сертификате Тематических Медиа:

На момент написания статьи эта команда выведет подробный список всевозможных доменов ТМ:

Никакой секретности и никаких тайн. Вы этого хотите?

Установка Certbot

Если вы читаете этот текст из будущего, когда Certbot уже есть в Debian stable и Ubuntu без обиняков и оговорок, то всё просто:

Либо используйте aptitude или другой пакетный менеджер вашего дистрибутива.

Установка в Jessie

Если у вас еще в ходу актуальный на конец 2016 года Debian stable «jessie», то всё лишь немного сложнее.

Нужно подключить Debian Backports, добавив строчку в /etc/apt/sources.list :

Теперь можно устанавливать с указанием источника:

(Раздел актуален пока только stretch не стал stable.)

Читайте также:  утрожестан при беременности зачем назначают во втором триместре беременности

Ubuntu версий ниже 16.10 (yakkety)

Другой дистрибутив

Если у вас какой-то другой дистрибутив, то дополнительные инструкции по установке есть на официальном сайте Certbot. Если обходиться без пакетного менеджера, то обычно установка сводится к.

Certbot и webroot

Мы будем получать сертификаты по методу webroot без перенастройки или остановки веб-сервера, под которым подразумевается nginx. Нам нужен какой-то каталог, в который certbot будет писать свои файлы, и какой должен быть доступен из сети удостоверяющему серверу согласно протокола ACME.

Чтобы не писать каждый раз длинную строку из опций, а еще лучше — не вспоминать о них, запишем основные настройки в файл конфигурации, который certbot ожидает найти в /etc/letsencrypt/cli.ini :

Последняя директива нужна чтобы избавить нас от прелестей и красивостей ncurses, что нужно чтобы вы могли сравнить вывод команд здесь, в этой статье, и у себя.

Также нам нужно мягко перезагрузить nginx (без перерыва в обслуживании) при успешном обновлении сертификатов. Ничего не мешает в этот же момент перезапускать и другие сервисы вроде Postfix, использующие полученные сертификаты. Команды указываются через точку с запятой.

Если вы видите такую ошибку:

Что будет делать Certbot

Ожидается что certbot будет создавать необходимые для проверки прав на домен файлы в подкаталогах ниже по иерархии к указанному. Вроде таких:

Эти файлы должны будут быть доступны из сети на целевом домене по крайней мере по HTTP:

Для следующих проверок создадим какой-то такой файл:

Регистрация в Let’s Encrypt

Регистрацию нужно сделать только один раз:

Здесь ничего сложного.

Подготовим nginx к получению сертификатов

В общем случае для получения сертификата необходимо во всех блоках server добавить следующий блок до других блоков location :

Понятно, что вписывать для каждого сайта такой блок явно — это моветон, потому создадим файл /etc/nginx/acme с содержанием блока выше.

Затем для каждого домена и поддомена, для которых нужно получить сертификаты, в блоке server перед всеми блоками location укажем:

Хосты-редиректоры (например, с голого домена на www) можно пропустить. ACME сервер обязан учитывать стандартную переадресацию. Подробней об этом ниже.

Перезагрузим nginx и проверим что наш тестовый файл виден:

После проверки лучше удалить тестовый файл — certbot любит удалять за собой всё лишнее, а такой файл будет мешать и вызывать сообщение об ошибке (Unable to clean up challenge directory).

О переадресации с кодами 301 и 302

Как было уже сказано, ACME сервер Boulder учитывает переадресацию с кодами 301 и 302. В этом смысле не имеет значения где, в конечном счете, находятся файлы, требуемые для прохождения проверок. Переадресация возможна даже на нестандартные порты, без ограничений по конечному протоколу HTTP или HTTPS. Сами Let’s Encrypt рекомендуют использовать переадресацию для создания единой точки проверки прав на домены.

Если вы можете получить эти файлы с помощью curl с ограничением в десять переадресаций, то и Boulder эти файлы увидит. Не должно быть никаких ограничений по IP адресам.

Это удобно если у вас сложная структура переадресаций между разными версиями сайтов. Должно быть достаточно подключить тот блок с location только на основном сайте для получения сертификатов для всех остальных.

Проверка всегда начинается с запроса по протоколу HTTP на 80 порту.

Если у вас уже всё зашифровано.

Другое дело что можно сократить путь и подключить наш блок с location в умолчальном сервере для 80 порта, который делает переадресацию на HTTPS. Тогда не нужно будет ничего дописывать в конфиги отдельных сайтов.

Пример конфигурации такого переадресующего всё-подряд-на-HTTPS сервера:

Сервер запускаем явно на внешнем IP чтобы не перенастраивать Apache на другой порт. Если для вас это не проблема, то указание имени сервера в директиве listen можно пропустить.

Если нужно получить сертификат для домена без сайта.

Типичный пример — сертификат для выделенных под SMTP или IMAP серверов, на которых вообще нет каких-то сайтов. Либо используйте универсальный переадресатор что выше, либо.

К сожалению, протокол ACME требует чтобы такой сервер был доступен во время каждой проверки. Это практически эквивалентно постоянной доступности, ввиду требования получения и обновления сертификатов без перезагрузки сервера. Не удаляйте такой конфиг после получения сертификата.

Если у вас только Apache2.

Если у вас Apache2, а перейти на всеми любимый nginx возможности нет, то… Добавьте следующие строчки в /etc/apache2/conf-available/certbot.conf :

И обязательно проверьте, так:

Существует много причин почему такая схема может у вас в Apache2 не заработать. Пары экранов текста не хватит чтобы описать их все. Не серчайте — статья про nginx.

Получаем сертификаты

У Let’s Encrypt есть лимиты на количество обращений за сертификатами, потому сначала попробуем получить необходимый сертификат в режиме для тестов:

В конце программа должна отчитаться об успешной работе:

Теперь можно смело получать сертификат уже в самом деле. Не забудьте явно указать все необходимые поддомены, такие как www.

Ура! С получением сертификата закончено!

Если нужно добавить поддомен или домен в сертификат

Вам будет безальтернативно предложено добавить этот домен в сертификат. Если хочется избежать вопросов, то можно сразу указать одобряющий такое поведение ключ:

Операцию можно повторять.

Проверим полученный сертификат

Убедимся что полученный сертификат — именно тот, что нам нужен:

Или, если подробности вам не нужны:

Команда должна вывести список доменов в сертификате.

Установка и использование сертификатов

Certbot не перезаписывает сертификаты, а заменяет их ссылками на самые актуальные варианты сертификатов в определенном каталоге, одноименном с первым доменом сертификата (т.е. CN ).

Давайте посмотрим что за файлы у нас есть:

С этим знанием мы можем задать настройки SSL для nginx:

Как видите, cert.pem нигде в конфиге не используется, и это не ошибка. Для nginx он не нужен.

Полный рабочий пример конфига:

Конфиг для переадресации с голого домена без www:

Подразумевается что вы используете какой-то локальный сервер для кеширования DNS запросов. Если это не так, то 127.0.0.1 в директиве resolver нужно заменить на IP используемого DNS сервера.

Perfect Forward Secrecy

Если вы переживаете что Certbot может утащить ключи от вашего сертификата не смотря на открытые исходные коды, а значит, в теории, какие-то злодеи смогут расшифровать весь трафик, то спешу вас успокоить. Если для соединения с вашим сайтом используются шифры из семейств DHE и ECDHE, то утечка ключа не позволит расшифровать трафик. В этих шифрах ключ сертификата используется только для подтверждения подлинности, и не используется в качестве ключа для шифрования. Все современные браузеры поддерживают эти шифры.

Если для ECDHE на эллиптических кривых ничего не нужно делать, то для DHE можно было бы использовать усиленные параметры. Лучше всего будет отключить DHE вообще.

Если по какой-то причине без DHE вы не можете обойтись, то сначала создадим параметры:

Потом пропишем в /etc/nginx/conf.d/ssl_dhparam.conf одной строкой:

Продление сертификатов

Сертификаты выдаются на три месяца. Не на полгода, не на год, а лишь на три месяца. Естественно это вызывает вопросы. Нужно ли проходить всю эту процедуру через три месяца? Нужно ли это делать всегда до искончания веков? Может стоит всё-таки вложиться в платный сертификат чтобы забыть об этом всем и не воспоминать пару лет?

Но нет, не спешите искать платежные средства! Как и было обещано в начале статьи, с обновлением сертификатов проблем нет.

Если у вас Debian и systemd, то посмотрите эти инструкции.

Как это работает

Например, были у вас на сервере были сайты www.example.com и shop.example.com, проходящие под одним сертификатом, но потом вы перенесли shop.example.com на другой сервер. Если такой ключ не указать, то Certbot упадет с ошибкой при попытке подтвердить владение shop.example.com, не получив для вас вообще никакого сертификата. Сертификат истечет и ваш сайт уйдет в оффлайн. С этим ключом вы всё же получите сертификаты хотя бы для частичного набора доменов, оставив ваши сайты в сети.

Вот и всё

Источник

Обучающий проект