Бесплатный ssl сертификат

TLDR:

certbot certonly --webroot --agree-tos --expand -w /path/to/your/domain/public/dir/ -d yourdomain.name,www.yourdomain.name

Я знаю 2 популярных способа получить бесплатный ssl сертификат:

1.Letsencrypt

Let's Encrypt -- некоммерческая организация, раздающая сертификаты, валидные 90 дней. Для работы нужно установить специальную программу certbot. Можно забрать из github, либо из репозиториев вашего дистрибутива. Далее запрашиваем сертификат (запускаем от рута) с помощью команды из начала поста. Путь и домен нужно отредактировать.

На выходе получим что-то вроде:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for sarafan.guru
Using the webroot path /path/to/your/domain/public/dir/ for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/yourdomain.name/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/yourdomain.name/privkey.pem
   Your cert will expire on 2019-00-00. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, 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/yourdomain.name/fullchain.pem и /etc/letsencrypt/live/yourdomain.name/privkey.pem. Их добавляем к конфиг nginx, сертификат готов.

Важно, т.к. сертификат действует только 3 месяца, letsencrypt рекомендует одновляет его ежемесячно. Для этого достаточно добавить в рутовый крон такой таск:


#letsencrypt MANUAL
20 20 * * *     certbot renew >/dev/null 2>&1

2.Cloudflare

cloudflare.com -- облачный сервис, предоставляющий услуги CDN, защиты от DDOS-атак, DNS и собственно бесплатные сертификаты.

Подключать гораздо проще, нет нужды обновлять раз в месяц, но зато нужно изменять ns-сервера и пускать трафик через cloudflare.

Заключение

Если есть доступ к администрированию домена, я предпочитаю cloudflare: настройка быстрее и куча плюшек из коробки. Кроме того, реально объяснить человеку по телефону, как на его сайте настроить сертификат. С letsencrypt такой фокус не пройдет.

Однако, cloudflare -- это комплексное решение. Если стоит задача только "переключиться на https", letsencrypt вписывается лучше. Кроме того, использование certbot относительно легко автоматизировать.

published 2019-03-26 13dagger