Как Let’s Encrypt, только роднее: автоматическое получение бесплатного RSA DV-сертификата НУЦ

от автора

Зарубежные корневые центры сертификации (root CA) продолжают отзывать серверные сертификаты российских компаний, но есть способ не попасть под раздачу отзыв.
Отечественный SSL сертификат для сайта можно бесплатно получить на портале ЕПГУ, заполнив несколько полей и выполнив несложное задание — добавить в DNS поле TEXT или положить файл к остальным файлам вашего сайта. Этот процесс наглядный, но не слишком быстрый и неудобный, особенно если сайтов у вас несколько или вы не уверены (например, как я), что через 89 дней вспомните, что сертификат на сервере пора обновить. Да, сертификат для сайта (DV-сертификат) выдаётся на 90 дней.
К счастью, специалисты НУЦ выпустили программу и инструкцию, как автоматизировать действия с сертификатом.
Мой сайт статичный, использует nginx и работает на Ubuntu Linux (так дешевле хостинг).
Действовал я по инструкции от НУЦ и теперь сертификат для моего сайта будет обновляться автоматически. Для выпуска, обновления, отзыва сертификата используется модифицированная версия acme.sh v.3.1.2
Использование программы оказалось для меня удобнее и быстрее, чем заполнение полей на ЕПГУ, а главное, не нужно помнить про периодическое обновление сертификата, так как программа ещё настроила и автообновление сертификата.

Итак, что делал:

  1. Получил корневой сертификат НУЦ

    С портала ЕПГУ из раздела «Сертификаты для Linux» cкачал архив с корневыми сертификатами НУЦ

На портале сертификаты НУЦ почему-то называются сертификатами Минцифры, хотя в самих сертификатах о Минцифры ни слова. И почему-то нет инструкции для Ubuntu, а только для RedHat, который ушёл из России.
Так как автоматизация НУЦ выпускает DV-сертификаты безопасности с применением международных криптографических алгоритмов (читай RSA), из архива нам понадобится корневой сертификат с названием russian_trusted_root_ca_pem.crt , который надо скопировать на сервер в Вашу домашнюю папку.

2. Добавил сертификат НУЦ в Linux

Скопировал сертификат НУЦ, куда положено sudo cp ~/russian_trusted_root_ca_pem.crt /usr/local/share/ca-certificates/ и добавил его в список доверенных сертификатов sudo update-ca-certificates

3. Установил acme.sh

Скопировал и распаковал архив с программой , для этого пришлось установить разархиватор sudo apt install unrar-free, и лишь затем распаковать архив пограммы unrar -x acme_client_fix.rar
Создал папку mkdir ~/.acme.sh, так как сама программа почему-то не смогла, установил acme.sh командойbash ./acme.sh --install -m myemail@example.ru и перезашёл в терминал.

4. Настроил программу на НУЦ acme.sh --set-default-ca --server https://nuc-acme.voskhod.ru/acme/api/v1/directory и зарегистрировался в НУЦ acme.sh --register-account --email myemail@example.ru --accountkeylength 2048

myemail@example.ru в приведённых примерах поменял на свой, хотя на почту мне ничего и не приходило.

5. Выпустил ключ и сертификат НУЦ.

У меня сервер был без сертификата, так что, как просила инструкция, порт 80 был открыт, но можно использовать и встроенный в программу сервер. Поменял в команде sudo acme.sh --issue --domain mydomain.ru --webroot /var/www/html --keylength 2048 --force --always-force-new-domain-key имя домена mydomain.ru на свой и указал путь к файлам сайта /var/www/html/mydomain.ru.

Есть другой способ, подтвердить владение сервером через DNS, но тогда придётся немного подождать, когда DNS запись обновится, но я им от нетерпения не воспользовался.

6. Добавил получившиеся файлы mydomain.ru.cer и mydonain,ru.key в nginx

vi /etc/nginx/sites-available/mydomain.ru.conf

server { listen 80; listen 443 ssl;client_max_body_size 200M;server_name mydomain.ru www.mydomain.ru;ssl_certificate      /home/www-user/.acme.sh/mydomain.ru/mydomain.ru.cer;ssl_certificate_key  /home/www-user/.acme.sh/mydomain.ru/mydomain.ru.key;root /var/www/html/mydomain.ru;index index.html;}

и перезагрузил веб-серверsystemctl reload nginx

7. Настроил автоматическое обновление сертификата и ключа каждые три недели acme.sh --install-cronjob

8. У программы acme.sh ещё много разных параметров acme.sh --help

Спасибо шести сотням разработчиков acme.sh и сотрудникам НУЦ за сертификаты.
Жду теперь, когда корневой сертификат НУЦ добавят в дистрибутивы Windows и браузеров.

ссылка на оригинал статьи https://habr.com/ru/articles/1053232/