Let’s Encrypt – бесплатный, открытый и автоматизированный центр сертификации, который уже выдал [https://letsencrypt.org/stats/ более 5 млн сертификатов]. Основные преимущества включают:
Let’s Encrypt предоставляет упрощенный способ получения сертификата для включения зашифрованного соединения с веб-сервером (веб-сайтом). Сервис как-раз и нужен, чтобы [p467 включить TLS]. Примечательно, что процесс получения и установки сертификата на Apache полностью автоматизирован, поэтому мы рассмотрим установку, настройку и использование Let’s Encrypt на Nginx и Ubuntu.
У Let’s Encrypt также есть свои минусы. Во-первых, сертификаты выдаются всего на 90 дней. Сертификаты на более длительный срок не предусмотрены. Во-вторых, сервис всего 2 месяца назад вышел из статуса беты в продакшн. В-третьих, для получения сертификатов используется множество зависимостей и плагинов. Само по себе это не страшно, но когда приходится обновлять сертификат каждые 3 месяца, неизбежно появятся проблемы. Кроме всего прочего, Let’s Encrypt все еще находится в активной разработке, так что баги и ошибки неизбежны.
Если “за” перевешивают все “против”, то можно приступать к установке и настройке.
Для начала нужно выбрать клиент Let’s Encrypt. Основатели проекта рекомендуют использовать [https://certbot.eff.org/ Certbot], но вы можете взять любой из [https://letsencrypt.org/docs/client-options/ альтернативных клиентов].
Let’s Encrypt присутствует в пакетах ОС, так что для установки нужно выполнить:
$ sudo aptitude install letsencrypt
## В новых версиях в пакеты будет входить как certbot
Клиент доступен для различных ОС и веб-серверов, его также можно собрать из исходников:
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto
./certbot-auto --help
## Используются существующие и дополнительные зависимости в виртуальной среде Python
Let’s Encrypt выдает сертификаты при помощи различных клиентов и методов. К сожалению, полноценный плагин для Nginx пока экспериментальный, поэтому не всегда работает корректно и приводит к сбоям веб-сервера. Если вы готовы к проблемам, то нужно собрать Certbot с исходников на [https://github.com/certbot/certbot GitHub], затем установить [https://github.com/certbot/certbot/tree/master/certbot-nginx плагин Nginx] и использовать его как опцию –nginx.
Но на данном этапе рекомендуется использовать плагин [https://certbot.eff.org/docs/using.html#webroot Webroot].
Плагин удобен, если вы можете самостоятельно изменять файлы на сервере и для применения в продакшене. Он создает временные файлы для каждого домена:
${webroot-path}/.well-known/acme-challenge
## Не забудьте настроить сервер для раздачи файлов из скрытых директорий
А сервер валидации проверяет их в виде:
66.133.109.36 - - [05/Jan/2016:20:11:24 -0500] "GET /.well-known/acme-challenge/HGr8U1IeTW4kY_Z6UIyaakzOkyQgPr_7ArlLgtZE8SX HTTP/1.1" 200 87 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"
## Проверяет, что DNS для запрашиваемого домена ведет на сервер с certbot
Желательно отредактировать файл настроек сайтов Nginx /etc/nginx/sites-available/default:
location ~ /.well-known {
allow all;
}
## Нужно добавить в блок server с включенным TLS
После этого можно получить сертификат:
$ letsencrypt certonly --webroot -w /var/www/somesite -d somesite.com -d www.somesite.com -w /var/www/other -d other.somesite.net
## Получение сертификатов и размещение их в директориях
Рассмотрим команду подробнее:
Запустится процесс получения, нужно будет указать e-mail для восстановления, принять условия использования. Сообщение об успешном получении будет выглядеть так:
Output:
IMPORTANT NOTES:
- If you lose your account credentials, you can recover through
e-mails sent to **user@somesite.com**
- Congratulations! Your certificate and chain have been saved at
**/etc/letsencrypt/live/example.com/fullchain.pem**. Your
cert will expire on 2016-09-15. To obtain a new version of the
certificate in the future, simply run Let's Encrypt again.
- Your account credentials have been saved in your Let's Encrypt
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Let's
Encrypt so making regular backups of this folder is ideal.
- If like Let's Encrypt, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
## Кроме дополнительной информации, указывает путь к файлам сертификации
В директории /etc/letsencrypt/live/your_domain_name будут лежать такие файлы:
Теперь можно [p467 настраивать и оптимизировать TLS] в Nginx. И не забывайте делать [p177 301 редирект] с незащищенного http:// на защищенный https://.
Дополнительно можно сгенерировать группу по [https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB_%D0%94%D0%B8%D1%84%D1%84%D0%B8_%E2%80%94_%D0%A5%D0%B5%D0%BB%D0%BB%D0%BC%D0%B0%D0%BD%D0%B0 протоколу Диффи-Хеллмана]:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
## Используется библиотека openssl и 2048-битное шифрование
Учтите, что сертификаты Let’s Encrypt выдаются только на 90 дней. Поэтому рекомендуем настроить автоматическое обновление сертификатов. Для этого нужно поместить команду в crontab или systemd:
sudo crontab -e
* * 30 * * letsencrypt renew >> /var/log/le-renew.log
## Автоматическая проверка и обновление сертификата каждые 30 дней
Обязательно включайте и оптимизируйте TLS на веб-сервере. А Let’s Encrypt поможет получать проверенные сертификаты быстро и бесплатно.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…