Translation(s): English - Français - Русский
Contents
Let’s Encrypt
Let’s Encrypt это автоматизированный центр сертификации, предоставляющий бесплатно (с проверкой домена (Domain Validation)), сертификаты TLS, которые получены с использованием протокола ACME.
Клиенты для Let’s Encrypt
letsencrypt.sh переименован в dehydrated
Jessie Howto
Подключаем репозиторий Backports: https://backports.debian.org/Instructions/
Устанавливаем certbot: https://certbot.eff.org/#debianjessie-apache
- apt-get install python-certbot-apache -t jessie-backports
- certbot --apache
- Опционально: следуйте инструкциям certbot и добавьте задания в cron или запускайте обновление сертификатов вручную
Также можно включить Perfect Forward Secrecy: https://www.sslplus.de/wiki/Wie_konfiguriert_man_Apache_2.x_f%C3%BCr_Perfect_Forward_Secrecy
- Для этого отредактируйте файл "/etc/apache2/mods-available/ssl.conf" и раскомментируйте "SSLHonorCipherOrder on"
Ручная установка сертификата и настройка nginx
Устанавливаем certbot:
apt-get install -t jessie-backports certbot
Устанавливаем сертификат вручную :
certbot certonly --webroot --agree-tos --email admin_mail@mysite.ru -w /var/www/mysite.ru/ -d mysite.ru -d www.mysite.ru
Ключи:
* --email - указываем почту администратора сертификата * -w - используется для указания директории с сайтом * -d - используется для перечисления всех доменных имен на которых будет использоваться сертификат. Например указываем сайт с www и без www
В директории /etc/letsencrypt/live/mysite.ru/ должны появиться сертификаты: fullchain.pem и privkey.pem
Автоматическое продление сертификата
укажите в cron автоматические обновление на любые 2 даты, например на 10 и 25
0 0 10,25 * * certbot renew
- Сертификат обновится только в случае если он истекает менее чем через 30 дней! Сертификаты которые истекают более чем через 30 дней - пропускаются!
Не забывайте! Чтобы применить новый сертификат, его нужно подгрузить самому nginx! Вам потребуется добавить в cron автоматический перезапуск настроек nginx.
Важное замечание: обновление сертификата делается только по протоколу http! Поэтому, если вы сделаете перенаправление всего трафика на https ( редирект с http на https), то укажите в настройках Nginx следующие правила:
server { listen 80; server_name mysite.ru www.mysite.ru; root /var/www/mysite.ru; location /.well-known/acme-challenge/ { access_log off; default_type "text/plain"; } location / { rewrite ^(.*)$ https://mysite.ru permanent; } } server { listen 443; server_name mysite.ru www.mysite.ru; ... (далее ваше конфиг сайта) }
Подключение сертификата в nginx
Используйте только современное шифрование! Конечно в браузерах постепенно отключается поддержка небезопасных шифрований, но все же. Отключайте небезопасные шифрования в конфиге nginx!
server { listen 443; server_name mysite.ru www.mysite.ru; ssl on; ssl_certificate /etc/letsencrypt/live/mysite.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mysite.ru/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers kEECDH+AESGCM+AES128:kEECDH+AES128:kRSA+AESGCM+AES128:kRSA+AES128:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2; ssl_prefer_server_ciphers on; add_header Strict-Transport-Security max-age=31536000; ... (далее ваш конфиг сайта) }