====== Let's Encrypt ======
Let’s Encrypt (в переводе с английского: Давайте шифровать) — центр сертификации, начавший работу в бета-режиме с 3 декабря 2015 года, предоставляющий бесплатные криптографические сертификаты X.509 для TLS шифрования (HTTPS). Процесс выдачи сертификатов полностью автоматизирован.
Проект Let’s Encrypt создан для того, чтобы большая часть интернет-сайтов смогла перейти к шифрованным подключениям (HTTPS). В отличие от коммерческих центров сертификации, в данном проекте не требуется оплата, переконфигурация веб-серверов, использование электронной почты, обработка просроченных сертификатов, что делает процесс установки и настройки TLS-шифрования значительно более простым. Например, на типичном веб-сервере на базе Linux, требуется исполнить две команды, которые настроят HTTPS шифрование, получат и установят сертификат примерно за 20-30 секунд.
Пакет с утилитами автонастройки и получения сертификата включён в официальные репозитории дистрибутива [[debian:debian|Debian]]. Разработчики популярных браузеров, Mozilla и Google намерены постепенно отказаться от поддержки незашифрованного протокола HTTP путём отказа от поддержки новых веб-стандартов для http-сайтов.
https://letsencrypt.org/
[[letsencrypt:wildcard|Let's Encrypt wildcard]]
====== Certbot ======
Certbot — набор скриптов для автоматизации процессов создания и обновления сертификатов Let's Encrypt.
https://certbot.eff.org
[[https://certbot.eff.org/docs/|Certbot documentation]]
====== acme.sh ======
acme.sh альтернатива [[#Certbot]]
https://github.com/Neilpang/acme.sh
[[https://wiki.dieg.info/let_s_encrypt#acmesh_alternativa_certbot|Центр сертификации Let’s Encrypt [АйТи бубен]]]
====== Apache ======
Настройка [[apache:apache|Apache]] под [[debian:debian|Debian]] 8 (jessie).
Примеры файлов [[apache:examples#let_s_encrypt|здесь]].
===== Debian 9 (stretch) =====
- Устанавливаем необходимые пакеты: apt-get install certbot python-certbot-apache
- Настраиваем [[apache:apache|]]: certbot --apache
Проверка:
* Список сертификатов и возможность их обновления (automatic renewal) certbot renew --dry-run
* Данные о задании автообновления systemctl list-timers grep certbot.timer
----
https://certbot.eff.org/lets-encrypt/debianstretch-apache
===== Debian 8 (jessie) =====
[[https://certbot.eff.org/#debianjessie-apache|CertBot: Apache on Debian 8 (jessie)]]
1. Устанавливаем необходимые пакеты:
apt-get install python-certbot-apache -t jessie-backports
Если необходимо, то модно установить пакет с документацией:
apt-get install python-certbot-doc
2. Настраиваем [[apache:apache|Apache]]:
certbot --apache
В процессе настройки программа будет задавать ряд вопросов.
Если возникает ошибка:
Expected but saw
Нужно выполнить:
for f in /etc/apache2/sites-available/*; do sed -i '$a\' "$f"; done
и повторить команду настройки.
В случае успешной установки вы увидите поздравление:
Congratulations! You have successfully enabled
https://wiki.yola.ru
А также предложение выполнить анализ вашего сайта:
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=wiki.yola.ru
===== Debian 7 (wheezy) =====
Настройка [[apache:apache|Apache]] под [[debian:debian|Debian]] 7 (wheezy).
[[https://certbot.eff.org/#debianwheezy-apache|Apache on Debian 7 (wheezy)]]
{{anchor:mailservers}}
====== Почтовые серверы ======
Использование сертификатов для почтовых серверов:
* [[dovecot:dovecot#letsencrypt|Dovecot]]
* [[postfix:postfix#letsencrypt|Postfix]]
Тестирование:
openssl s_client domain.ru:443
openssl s_client -starttls smtp -connect domain.ru:587
----
[[https://rusua.org.ua/2017/03/10/sertifikaty-letsencrypt-i-postfixcourier-popimap/|Сертификаты Let’sEncrypt и Postfix,Courier-pop/imap или Dovecot | Блокнот обычного админа =)]]
====== Добавление домена ======
FIXME
certbot --apache -d example.com -d www.example.com
====== Обновление сертификата ======
Поскольку сертификат Let's Encrypt выдаётся на 90 дней, нужно настроить автоматическое обновление сертификата.
В пакете для Debian присутствует файл настройки для [[cron:cron|Cron]] который выполняет процедуру проверки срока действия сертификата и выполняет его обновление только в том случае, если до окончания действия сертификата остаётся 30 или менее дней. Протокол выполнения процедуры обновления записывается в файл ''/var/log/letsencrypt/letsencrypt.log''. Вот это файл для Cron:
# /etc/cron.d/certbot: crontab entries for the certbot package
#
# Upstream recommends attempting renewal twice a day
#
# Eventually, this will be an opportunity to validate certificates
# haven't been revoked, etc. Renewal will only occur if expiration
# is within 30 days.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew
===== Ручное обновление =====
Также можно вручную настроить [[cron:cron|Cron]], вот пример:
1 4 * * 1 /usr/bin/certbot renew >> /var/log/letsencrypt/certbot-renew.log
====== Замена файлов ключа после обновления ======
Замена файлов ключа в [[apache:apache|Apache]]:
#!/bin/bash
prefix='domain.ru' # префикс
file_private='privkey.pem' # имя файла ключа
file_cert='cert.pem' # имя сертификата
path1=/etc/letsencrypt/live/ # путь к исходным файлам
path2_private=/etc/ssl/private/ # путь конечным файлам private
path2_cert=/etc/ssl/certs/ # путь конечным файлам cert
file1_private=$path1$prefix/$file_private # полный путь и имя исходного ключа
file1_cert=$path1$prefix/$file_cert # полный путь и имя исходного сертификата
file2_private=$path2_private$prefix"_"$file_private # полный путь и имя конечного ключа
file2_cert=$path2_cert$prefix'_'$file_cert # полный путь и имя конечного сертификата
cp -f $file1_cert $file2_cert
cp -f $file1_private $file2_private
chmod 0600 $file2_private
service apache2 reload
====== TLS-SNI-01 validation is reaching end-of-life ======
Нужен ''certbot'' версии старше 0.28
#!/bin/bash
apt-get remove certbot
cd /usr/local/sbin
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
Выполняем для проверки:
/usr/local/sbin/certbot-auto renew
Пример задания для [[cron:cron|Cron]]
0 0,12 * * * /usr/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/sbin/certbot-auto renew
----
[[https://community.letsencrypt.org/t/how-to-stop-using-tls-sni-01-with-certbot/83210|How to stop using TLS-SNI-01 with Certbot - Client dev - Let's Encrypt Community Support]]
[[https://certbot.eff.org/lets-encrypt/debianjessie-apache|Install Certbot for Apache on Debian 8 (jessie)]]
====== IdenTrust DST Root CA X3 2021-09-30 ======
30 сентября 2021 конец срока действия IdenTrust DST Root CA X3.
Тест:
faketime -f '@2021-10-01 00:00:00' curl https://letsencrypt.org/
Чтобы проверить наличие сертификата ISRG Root X1 в числе доверенных:
awk -v cmd='openssl x509 -noout -subject' ' /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/c
**Решение**
* Вариант 1:
\\ В файле ''/etc/ca-certificates.conf'' нужно найти строчку:
mozilla/DST_Root_CA_X3.crt
и поставить в начало сроки символ "!":
!mozilla/DST_Root_CA_X3.crt
Далее, необходимо выполнить команду:
sudo update-ca-certificates
* Вариант 2:
Установить новый сертификат {{isrg_root_x1_2015-06-04_2035-06-04.pem|ISRG Root X1 (до 2035-06-04)}}. \\ [[https://letsencrypt.org/certs/isrgrootx1.pem.txt|источник]], [[https://censys.io/certificates/6d99fb265eb1c5b3744765fcbc648f3cd8e1bffafdc4c2f99b9d47cf7ff1c24f|источник 2]]
----
[[https://www.opennet.ru/opennews/art.shtml?num=55875|Устаревание корневого сертификата IdenTrust приведёт к потере доверия к Let's Encrypt на старых устройствах]]
[[https://habr.com/ru/post/580092/|30 сентября: Let's Encrypt и конец срока действия IdenTrust DST Root CA X3 / Хабр]]
====== Ссылки ======
[[https://ru.wikipedia.org/wiki/Let's_Encrypt]]
[[https://certbot.eff.org|Certbot: An automatic client for enabling HTTPS on your website.]]
https://wiki.debian.org/ru/LetsEncrypt
[[https://losst.ru/ustanovka-ssl-sertifikata-apache-ot-lets-encrypt|Установка ssl сертификата Apache от Lets Encrypt]]
[[https://www.8host.com/blog/sozdanie-sertifikata-lets-encrypt-dlya-apache-v-debian-8/|Создание сертификата Let’s Encrypt для Apache в Debian 8]]
[[http://askubuntu.com/questions/813608/letsencrypt-expected-virtualhost-but-saw-virtualhost-ifmodule|Letsencrypt: Expected but saw ]]
https://github.com/sprokhorov/zabbix_letsencrypt
[[https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-debian-8|How To Secure Nginx with Let's Encrypt on Debian 8]]
[[http://www.opennet.ru/opennews/art.shtml?num=47168|opennet.ru: Вступили в силу требования к удостоверяющим центрам по проверке CAA-записей в DNS]]
[[http://www.opennet.ru/tips/3028_ssl_https_caa_cert_dns.shtml|opennet.ru: Использование CAA записей в DNS для защиты от генерации фиктивных HTTPS-сертификатов]]
[[http://www.opennet.ru/opennews/art.shtml?num=47598|opennet.ru: Let's Encrypt занял 36% рынка удостоверяющих центров]]
[[http://www.opennet.ru/opennews/art.shtml?num=48255|opennet.ru: Проект Let's Encrypt ввёл в строй протокол ACMEv2 и поддержку масок]]
[[https://upcloud.com/community/tutorials/secure-postfix-using-lets-encrypt/|How to secure Postfix using Let's Encrypt - UpCloud]]
**[[https://wiki.calculate-linux.org/ru/lets_encrypt|wiki.calculate-linux: Let's Encrypt - получение бесплатного сертификата]]**
{{tag>Encryption}}