Let's Encrypt для сайта на хостинге Nic.ru (RU center)

Памятка о выпуске сертификата Let's Encrypt и добавлении его в панель хостинга NIC.ru

Думал для начала высказать свое мнение об этой <censored> конторе. Но не буду.

Просто вопрос: почему вы еще там? Если можете переезжайте к нормальному хостингу, который поддерживает выпуск и, что важнее, автоматический перевыпуск сертификатов LE.

Если же, как и один из моих клиентов, не можете пока от них переехать, то вот инструкция как выпустить и добавить сертификат к своему домену у этого провайдера.

Выпуск сертификата

Для этого будем использовать certbot запускаемый в docker. Можно было бы установить certbot в системе, но мне просто не нравится держать ПО, которое я буду использовать единожды (или, в данном случае, очень редко).

Для ОС Windows нужно предварительно проверить в Docker Desktop:

  • В левом нижнем углу что сервис запущен или в режиме энергосбережения. Если это не так, нажмите кнопку плей рядом со статусом. ("1" на изображении ниже)
  • Открыть окно терминала PowerShell:
    • В правом нижнем углу нажмите ">_Terminal" ("2" на изображении ниже)
    • Удостоверьтесь что терминал запущен в режиме PowerShell ("3" на изображении ниже)
      • Если это не так, нажмите ˅ ("4" на изображении ниже) и выберите из списка Windows PowerShell

Первым делом нужно создать директорию, в которой будем хранить выпускаемые сертификаты.

> mkdir ~/certbot
> cd ~/certbot
> mkdir ./LE

Если не знаете какой путь до текущей директории, его можно посмотреть командой:

> pwd

# вывод в Linux
/home/rame0/certbot

# вывод в Windows PowerShell
Path
----
C:\Users\rame0\certbot

Поскольку запускать certbot будем на локальной машине, выпускать сертификат будем в ручном режиме, а подтверждать с помощью файла-токена.

Запускаем:

Linux
> docker run --rm -it -v $(pwd)/LE/:/etc/letsencrypt/ certbot/certbot certonly \
      --authenticator manual \
      -m test@rame0.ru \
      -d test.rame0.ru
Windows
> docker run --rm -it -v C:\Users\<USER_NAME>\certbot\LE:/etc/letsencrypt/ certbot/certbot certonly --authenticator manual -m test@rame0.ru -d test.rame0.ru
  • <USER_NAME> - название папки текущего пользователя. (См. выше как узнать папку)
  • docker run ... certbot/certbot ... - запускает образа certbot
    • Флаг --rm говорит докеру удалить контейнер после завершения работы, т.к. он больше не нужен (файлы останутся целыми)
    • флаги -it запустят интерактивный режим
    • флаг -v позволяет смонтироваь локальную директорию $(pwd)/LE/ в запущенный образ по пути /etc/letsencrypt/live (в нее certbot сохраняет выданные сертификаты)
  • команда certonly выпускает сертификат, без установки его на машине
    • флаг --authenticator manual говорит certbot, что подтверждать владение мы будем в ручном режиме.
    • -m - ваша почта
    • -d домен (или список доменов) для которого нужно выпустить сертификат

В результате запускается скрипт выпуска, который попросит:

  1. Согласиться с условиями использования
  2. Отказаться от получения e-mail рассылки (можете согласиться если хотите)

Выглядит это так:

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in
order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: n
Account registered.
Requesting a certificate for test.rame0.ru

После ответа на все вопросы, certbot ненадолго задумается, а потом выдаст вам токен и путь по которому нужно создать файл с этим токеном:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:

NxEX2UnofAWrvjGvOsPR5EyByMfXJOcgSX3IWtWg2OE.O3YdVfuKyFJeeB-vPoQniJOtV7xybqotlUwY26eieBA

And make it available on your web server at this URL:

http://test.rame0.ru/.well-known/acme-challenge/NxEX2UnofAWrvjGvOsPR5EyByMfXJOcgSX3IWtWg2OE

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue  

Текст выше означает, что вам нужно будет на своем хостинге, в корневой папке сайта, создать директорию .well-known в ней создать директорию acme-challenge. Вэтой папке нужно создать файл NxEX2UnofAWrvjGvOsPR5EyByMfXJOcgSX3IWtWg2OE и в этот файл вставить токен NxEX2UnofAWrvjGvOsPR5EyByMfXJOcgSX3IWtWg2OE.O3YdVfuKyFJeeB-vPoQniJOtV7xybqotlUwY26eieBA

Когда этот файл создан и доступен (перейдите по ссылке и проверьте), нажмите Enter в консоли, чтобы продолжить. LE начнет проверку наличия токена верификации по указанному пути. Если всё Ок, вы увидите следующее сообщение:

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/test.rame0.ru/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/test.rame0.ru/privkey.pem
This certificate expires on 2024-08-07.
These files will be updated when the certificate renews.

NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Теперь в директории ~/certbot/LE/live/<domain> (linux) или C:\Users\<USER_NAME>\certbot\LE\live\<domain> (windows) лежат созданные сертификат и ключ:

❯ sudo ls -l ./LE/live/test.rame0.ru/
total 4
lrwxrwxrwx 1 root root  38 мая  9 18:45 cert.pem
lrwxrwxrwx 1 root root  39 мая  9 18:45 chain.pem
lrwxrwxrwx 1 root root  43 мая  9 18:45 fullchain.pem
lrwxrwxrwx 1 root root  41 мая  9 18:45 privkey.pem
-rw-r--r-- 1 root root 692 мая  9 18:45 README

В linux нужно сменить владельца файлов (root) в этой директории на себя:

sudo chown -R $USER:$USER ./LE/live/

Добавление сертификата в NIC.ru

Идем в панель хостинга и переходим там в раздел "SSL и антивирус".

Там нажимаем кнопку "Установить". Откроется окно для добавления сертификатов.

В раздел "Сертификат" загружаем файл fullchain.pem из папки LE/live/text.rame0.ru/.

В раздел "Приватный ключ сертификата" загружаем файл privkey.pem.

Жмем "Установить".

Сертификат будет добавлен и появится окно:

Здесь сразу же можно привязать сертификат к домену.

PS сертификат Let's Encrypt действует только 90 дней. Поэтому, через, примерно, дней 85 вам нужно будет проделать процедуру выпуска и добавления сертификата снова.

Комментарии ()