Архив за день: 21.01.2021



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

В одной из старых статей я рассказал о способе для генерации бесплатного SSL-сертификата.
Сегодня обнаружил подводные камни — SSL For Free (она же ZeroSSL) выдала мне, что мой лимит на бесплатный сертификаты исчерпан и теперь придётся приобрести коммерческий план минимум с тарифом Basic! Который стоит 10$ в месяц!

You have reached the maximum amount of 90-day certificates allowed on the Free Plan.

Ok, пойдём в обход…
1. Заходим на Let’s Encrypt
2. На странице приветствия находим ссылку для тех, у кого нет доступа к Shell:

If your hosting provider doesn’t want to integrate Let’s Encrypt, but does support uploading custom certificates, you can install Certbot on your own computer and use it in manual mode

3. Нам потребуется виртуальная машина с Линуксом (я воспользуюсь Kubuntu).

Будет время, гляну, как это можно реализовать прямо в Windows (у них есть реализация под Винду).

 

4. Нам нужно установить certbot, для этого выполним в шелле:

sudo apt-install certbot

5. Выполняем создание сертификата вручную:

sudo certbot certonly --manual

6. Указываем имя нашего домена:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
to cancel): dentnt.trmw.ru

7. Разрешаем сохранить наш IP в логах, для этого жмём Y , после чего нажимаем Enter :

NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

8. Далее нам нужно создать на сервере файл 6Gt4QZgmyRtGTvlWPATqKLqva31MGyEDj6GxtNqbDns и поместить в него всего лишь одну строчку (6Gt4QZgmyRtGTvlWPATqKLqva31MGyEDj6GxtNqbDns.nFNCALfkNmb-SToGzoms_IyzXepYzt0OKUfTgpRc—U), согласно инструкции:

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

6Gt4QZgmyRtGTvlWPATqKLqva31MGyEDj6GxtNqbDns.nFNCALfkNmb-SToGzoms_IyzXepYzt0OKUfTgpRc--U

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

http://dentnt.trmw.ru/.well-known/acme-challenge/6Gt4QZgmyRtGTvlWPATqKLqva31MGyEDj6GxtNqbDns

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
У вас соответственно будут другие имя файла и сгенерированная строка!

 

9. Поместив файл с указанной строкой в папку на сервере (у меня путь получился такой: /dentnt.trmw.ru/docs/.well-known/acme-challenge), нажимаем в консоли Enter .

Если нажать Enter раньше, то проверка не пройдёт и файл нужно будет создавать заново (будет другое имя)

 

10. Если всё прошло хорошо, нам сообщат в следующем сообщении в консоли:

Press Enter to Continue
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/dentnt.trmw.ru/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/dentnt.trmw.ru/privkey.pem
   Your cert will expire on 2021-04-20. 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

Осталось эти ключи сохранить в Панели управления хостинга, согласно их инструкции. У меня это RU-CENTER.

Использование сертификатов

Приватный ключ зашифрован, поэтому его не получится перекинуть на основную машину, из-за чего действия по установке сертификата придётся производить из гостевой (виртуальной машины)!

 

Для просмотра приватного ключа можно воспользоваться такой командой (предварительно изменив путь на свой):

sudo cat /etc/letsencrypt/live/dentnt.trmw.ru/privkey.pem

Список сохранённых сертификатов (и срок годности) можно посмотреть такой командой:

sudo certbot certificates

Продление сертификатов

Как было сказано в подсказке выше, продлить сертификаты можно одной командой:

sudo certbot renew

Ошибки

Если попытаться выполнить

sudo certbot certonly --manual

Можно получить такую сообщение:

Another instance of Certbot is already running.

В этом случае может помочь перезагрузка, либо можно найти и убить процесс certb.