Получаем lets’encrypt wildcard сертификат

В предыдущей статьe я писал как получить сертфикат lets encrypt для домена. Сегодня стало возможно получать wilсard cert от Let’s Encrypt бесплатно.
Получаем lets’encrypt wildcard сертификат. Наконец-то сегодня можно получиться wildcard cert. Слушаем сюда как это сделать.
Получаем бота.Клонируем репу.

cd /etc/nginx ;
mkdir ACME2 ;
cd ACME2 ;
git clone https://github.com/certbot/certbot.git ;
cd /etc/nginx/ACME2/certbot

Для начала используем stage server https://acme-staging-v02.api.letsencrypt.org/directory – для проверки.
Сразу определимся что мы получаем корневой сертификат вдовесок к wildcard – чтобы не лохануться, иначе вас пошлют лесом, так как обычный wildcard не захватывает корневой домен.

./certbot-auto certonly --agree-tos --manual --preferred-challenges dns --server https://acme-staging-v02.api.letsencrypt.org/directory  -d "*.itc-life.ru" -d "itc-life.ru"

В интерактивном меню отвечаем на вопросы:

  1. Вводим свой email
  2. Подтверждаем право – создаем тxt записи в поддомене “_acme-challenge”. Их будет 2 так как мы выпускаем для корненово домена itc-life.ru и для wildcard *.itc-life.ru.
    2.1 Создаем поддомен.
_acme-challenge.itc-life.ru

2.2 Добавляем txt запись №1 для созданного поддомена

Znib1EqvV1UCsqY35oOW-mFGqJwqeqeq9FH_вn1kTT_-U8

2.3 Добавляем txt запись №2 для созданного поддомена

Znib1EqvV1UCsqY35oOWsdsdsdsdsdsdT_-U8

2.4 Проверяем приминилась ли она – на всякий случай подождем 1 минуту – этого будет достаточно.

dig -t txt _acme-challenge.itc-life.ru

Видим

; <<>> DiG 9.10.3-P4-Ubuntu <<>> -t txt _acme-challenge.itc-life.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64393
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;_acme-challenge.itc-life.ru.   IN  TXT
;; ANSWER SECTION:
_acme-challenge.itc-life.ru. 299 IN TXT "Znib1EqvV1UCsqY35oOW-mFGqJwqeqeq9FH_вn1kTT_-U8"
_acme-challenge.itc-life.ru. 299 IN TXT "Znib1EqvV1UCsqY35oOWsdsdsdsdsdsdT_-U8"
;; Query time: 81 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Wed Mar 14 20:28:01 +05 2018
;; MSG SIZE  rcvd: 112

2.5 Нажимаем далее. Видим.

Press Enter to Continue
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/itc-life.ru-0002/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/itc-life.ru-0002/privkey.pem
   Your cert will expire on 2018-06-12. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - 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

Всё прошло успешно, но это фейковый сертификат, так что пока его не добавляем.
Теперь выпустим доверенный сертификат с продакшен сервера lets’encrypt https://acme-v02.api.letsencrypt.org/directory.

cd /etc/nginx/ACME2/certbot \
;  ./certbot-auto certonly --agree-tos --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory  -d "*.itc-life.ru" -d "itc-life.ru"

Так же будет предложено добавить новые txt записи в наш поддомен _acme-challenge,ввести email, cогласиться на условия.
Вот вывод.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
-------------------------------------------------------------------------------
You have an existing certificate that contains a portion of the domains you
requested (ref: /etc/letsencrypt/renewal/itc-life.ru-0002.conf)
It contains these names: *.itc-life.ru
You requested these names for the new certificate: *.itc-life.ru, itc-life.ru.
Do you want to expand and replace this existing certificate with the new
certificate?
-------------------------------------------------------------------------------
(E)xpand/(C)ancel: E
Renewing an existing certificate
Performing the following challenges:
dns-01 challenge for itc-life.ru
dns-01 challenge for itc-life.ru
-------------------------------------------------------------------------------
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
-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.itc-life.ru with the following value:
zeD23232323f32sdsdsd
Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue
-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.itc-life.ru with the following value:
8ZRrz6k0awC-vK2EXyV4esfdsfsdf
Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/itc-life.ru-0002/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/itc-life.ru-0002/privkey.pem
   Your cert will expire on 2018-06-12. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto 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

Получаем сообщение об успешной генерации сертификата.
Если у вас уже был сертификат просто делаем reload nginx.
Получить сертификат можно так же с помощью докера
Тестируем

docker run -it --rm --name certbot \
            -v "/docker-compose2/certbot/etc/letsencrypt:/etc/letsencrypt" \
            -v "/docker-compose2/certbot/var/lib/letsencrypt:/var/lib/letsencrypt" \
            certbot/certbot certonly --agree-tos --manual --preferred-challenges dns --server https://acme-staging-v02.api.letsencrypt.org/directory  -d "*.linux2be.com" -d "linux2be.com"

Получаем

docker run -it --rm --name certbot \
            -v "/docker-compose2/certbot/etc/letsencrypt:/etc/letsencrypt" \
            -v "/docker-compose2/certbot/var/lib/letsencrypt:/var/lib/letsencrypt" \
            certbot/certbot certonly --agree-tos --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory  -d "*.linux2be.com" -d "linux2be.com"

Не забываем создать каталоги для монтирования

nginx -t
nginx -s reload

Если нет создаем конфиг

nano /etc/nginx/ssl.d/itc-life.ru/ssl.conf
    ssl_stapling on;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/itc-life.ru-0002/fullchain.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/itc-life.ru-0002/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/itc-life.ru-0002/privkey.pem;
    ssl_dhparam /etc/nginx/dhparam.pem;
    ssl_session_timeout 24h;
    ssl_session_cache shared:SSL:2m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
    ssl_prefer_server_ciphers on;
    add_header Strict-Transport-Security "max-age=31536000;";
    #add_header Content-Security-Policy-Report-Only "default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:;";

И инклудим в конфиг в секции с ssl. Подробнее тут

3 комментария к “Получаем lets’encrypt wildcard сертификат

  1. корневой серт вдовесок к вайлкард? а про Alternative Domains Name аффтар читни.

  2. приминилась ли она. нда. ваще както сложно всё. кому нада реально этот серт – есть ресурсы в инете которые делают всё за тебя. и даже без палева закрытого ключа. например тут https://www.sslforfree.com/

  3. Ты же не будешь заходить и все делать руками – один раз настроил и все – кайфуй!!!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

 

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.