Let's Encrypt для сайта на хостинге Nic.ru (RU center)
Памятка о выпуске сертификата Let's Encrypt и добавлении его в панель хостинга NIC.ru
Думал для начала высказать свое мнение об этой <censored> конторе. Но не буду.
Просто вопрос: почему вы еще там? Если можете переезжайте к нормальному хостингу, который поддерживает выпуск и, что важнее, автоматический перевыпуск сертификатов LE.
Если же, как и один из моих клиентов, не можете пока от них переехать, то вот инструкция как выпустить и добавить сертификат к своему домену у этого провайдера.
Выпуск сертификата
Для этого будем использовать certbot
запускаемый в docker
. Можно было бы установить certbot
в системе, но мне просто не нравится держать ПО, которое я буду использовать единожды (или, в данном случае, очень редко).
Первым делом нужно создать директорию, в которой будем хранить выпускаемые сертификаты.
mkdir ~/projects/tools/certbot
cd ~/projects/tools/certbot
mkdir ./LE
Поскольку запускать certbot
будем на локальной машине, выпускать сертификат будем в ручном режиме, а подтверждать с помощью файла-токена.
Запускаем:
docker run -it -v $(pwd)/LE/:/etc/letsencrypt/ certbot/certbot certonly \
--authenticator manual \
-m test@rame0.ru \
-d test.rame0.ru
docker run ... certbot/certbot ...
- запускает образаcertbot
- флаги
-it
запустят интерактивный режим - флаг
-v
позволяет смонтироваь локальную директорию$(pwd)/LE/
в запущенный образ по пути/etc/letsencrypt/live
(в нееcertbot
сохраняет выданные сертификаты)
- флаги
- команда
certonly
выпускает сертификат, без установки его на машине- флаг
--authenticator manual
говоритcertbot
, что подтверждать владение мы будем в ручном режиме. -m
- ваша почта-d
домен (или список доменов) для которого нужно выпустить сертификат
- флаг
В результате запускается скрипт выпуска, который попросит:
- Ваш email
- Согласиться с условиями использования
- Отказаться от получения 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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Теперь в директории ./LE/live/<domain>
лежит созданный сертификат и ключ:
❯ 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
Как видим, владелец файлов root
, сменим пользователя на нас:
sudo chown -R $USER:$USER ./LE/live/
Добавление сертификата в NIC.ru
Идем в панель хостинга и переходим там в раздел "SSL и антивирус".
Там нажимаем кнопку "Установить". Откроется окно для добавления сертификатов.
В раздел "Сертификат" загружаем файл fullchain.pem
из папки LE2/live/text.rame0.ru/
.
В раздел "Приватный ключ сертификата" загружаем файл privkey.pem
.
Жмем "Установить".
Сертификат будет добавлен и появится окно:
Здесь сразу же можно привязать сертификат к домену.
PS сертификат Let's Encrypt действует только 90 дней. Поэтому, через, примерно, дней 85 вам нужно будет проделать процедуру выпуска и добавления сертификата снова.