1.31.2018

Let's Encrypt через DNS



Ну и напоследок.
Если нет возможности выпустить сертификат через редирект.
А я не могу выпустить, так как у меня стоит глобальный редирект на другой сервер, в котором нет искомой папки.
То на помощь приходит верификация по DNS.
Запускам программу:    
certbot --manual --preferred-challenges dns certonly -d domain-name

Программа пошуршит и предложит нам добавить TXT запись в домен, типа:
Please deploy a DNS TXT record under the name
_acme-challenge.domain-name with the following value:

igb-Z8U5y82vqpYeCos3001Ii5uD2wyfLAhBN5ScHtA

Before continuing, verify the record is deployed.

Добавляем TXT запись в DNS, нажимаем Enter и наш сертификат выпущен! 

1.29.2018

Lets Encrypt не работает, думаете вы?


Если вы делали сертификаты с помощью Lets Encrypt, то скорее всего сделать новый сертификат у вас не получится с помощью команды:

$ sudo letsencrypt --apache -d example.com

Будет ошибка:

Client does not support any combination of challenges that will satisfy the CA.

Это происходит потому что:

You need to upgrade your Certbot. Let’s Encrypt permanently disabled the TLS-SNI-01 challenge302 due to a security report, as of 2018-01-09.

А что собственно произошло?

А произошло то, что используемый до этого метод получения сертификата перестал быть секьюрным. Поэтому поменяем метод, попутно доказав центру сертификации, что мы это мы.

Сделаем все через certbot

Поставим certbot:

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-apache

Создадим папку

В доступной для веб-сервера директории создадим отдельную папку, скажем, letsencrypt, которую затем мы будем использовать для всех обслуживаемых доменов и установим ее владельцем веб-сервер:

mkdir /var/www/letsencrypt
chown www-data:www-data /var/www/letsencrypt

Обработаем запрос

Теперь нам нужно сделать так, чтобы любой запрос вида:

http://example.com/.well-known/acme-challenge
приводил к физическому размещению:

/var/www/letsencrypt/.well-known/acme-challenge
Для Apache 2.x будет выглядеть вот так: Для подготовки к работе с Certbot добавьте в основной конфигурационный файл /etc/apache2/apache2.conf следующую секцию:

Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/

<Directory "/var/www/letsencrypt/.well-known/acme-challenge/">
    Options None
    AllowOverride None
    ForceType text/plain
    Require all granted
    RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]{43}$)"
</Directory>

Перезапускаем Apache:
sudo /etc/init.d/apache2 restart

Получение сертификата

Запрашиваем новый сертификат командой
sudo certbot --authenticator webroot --installer apache --webroot-path /usr/data/www/letsencrypt

Среди предложенных доменов выбираем нужный домен (или задаем командной -d).Выбираем необходимость редиректа с HTTP.