Получение ключей SSL-сертификата Let’s Encrypt через certbot и DNS для шаред-хостинга
В настоящее время существует куча инструкций по получение SSL-сертификата, а многие хостинги предоставляют эти возможности в один клик. Но у меня оказался исключительный случай. ISP не хотела получать сертификат в один клик. Имеющиеся инструкции по получению SSL-сертификата от Let’s Encrypt через файл не работали, потому что на хостинге ограничен доступ к папке well-known/acme-challenge/. Поэтому было необходимо найти решение получения через DNS, ведь это доступно Let’s Encrypt. А ещё с этого года появится возможность получать сертификат для поддоменов по маске, а это доступно будет только через DNS.
Ниже инструкция актуальна для людей с Unix-подобными OS и установленным GIT. Если вы не знаете что такое GIT, то, вероятно, эта статья не для вас.
certbot: error: unrecognized arguments: ‑‑manual ‑‑preferred-challenges dns
— удалите дефисы и наберите их вручную. Движок сайта их ломает!
Первым делом надо клонировать себе с GIT пакет certbot, любезно предоставленный EFF. Открываем консоль и вставляем:
git clone https://github.com/certbot/certbot
Далее запускаем его:
./certbot-auto certonly --manual --preferred-challenges dns
certonly — только получение, без установки;
manual — для ручного создания (на самом деле не это значит, но смысл тот же);
dns — указываем, что через DNS записи.
Далее следуем инструкциям certbot’а:
- Он попросит указать домены:
Please enter in your domain name(s) (comma and/or space separated) (Enter ‘c’ to cancel):
Указывайте необходимые доменны и поддомены через пробел. Разрешено указывать до 100 имён.
- Далее он просит опубликовать ваш IP в своей базе. Необходимо набрать Y, иначе он не даст продолжить.
Are you OK with your IP being logged?
(Y)es/(N)o:
Далее самое главное и мучительное — указать для каждого указанного ранее домена новую текстовую (TXT) запись на своём DNS сервере.
Please deploy a DNS TXT record under the name
_acme-challenge.ВАШ.ДОМЕН with the following value:
УНИКАЛЬНЫЙ КОД
Before continuing, verify the record is deployed.
Press Enter to Continue
У регистратора r01.ru выглядит это так:
После того, как добавите последний домен (считайте!) — не жмите ENTER, необходимо подождать некоторое время, пока новые записи вступят в силу. У регистратора r01 предположительно может занять до 40 минут. Поэтому 1-2 час лучше подождать. И только потом нажать ENTER, иначе можете увидеть вот такую ошибку:
Ничего страшного в этом нет. Только вот после этого вам придётся заново прописывать (редактировать имеющиеся, не надо новые создавать) TXT записи и снова ждать. И, говорят, что количество попыток в сутки/неделю ограничено.
Если вы всё правильно сделали, то вы увидите надпись «Cleaning up challenges». Поздравляю, вы получили сертификат на 3 месяца. На Linux они лежат в папке /etc/letsencrypt/live/ВАШДОМЕН/. Расположение сертификатов должно появиться в консоли.
Вся процедура выглядит примерно так:
Заходим в папку с правами админа (я делаю это через MC) и видим 4 наших файла. Далее я их вставил в ISP: в поле «SSL-сертификат» текст из cert.pem, в «Ключ SSL-сертификата» — privkey.pem и «Цепочка SSL-сертификатов» — fullchain.pem.
Не забудьте, что сертификат Let’s Encrypt действителен только 4 месяца! После этого его надо продлевать! Дата окончания написана в последних строчках, в случае удачного создания.
UPDATE 1 (02.06.2018)
К сожалению на данный момент продлить аттестат у меня не получилось и я его пересоздаю. Предположительная проблема — динамический IP адрес.
UPDATE 2 (02.06.2018)
Команда, чтобы не вводить домены отдельно
./certbot-auto certonly --manual --preferred-challenges dns -d Ваши,домены,через,запятую
У меня ничего не выходит
На каком этапе возникает проблема?
Хорошая статья, если сайт находится на windows нужно конвертировать сертификат с .pem в .ptx формат
openssl pkcs12 -export -in «patch to file publik key .pem» -inkey «patch to file private key .pem» -out «patch to file with the converted certificate .pfx»