1 1 1 1 1 1 1 1 1 1 Rating 2.31 (13 Votes)

Установка Wildcard SSL-сертификата Lets Encrypt требует подтверждения прав в ДНС-записях. Самый простой способ - это связка скрипта Acme.sh и Cloudflare.

1) Создание самоподписанного сертификата в ISPManager 4.

Заходим в панель ISPManager 4, ставим для пользователя права на SSL. В настройках домена в панели ISPManager ставим галочку SSL, порт не меняем (443) и сертификат выбираем "Создать новый самоподписанный". По идее, можно зайти уже на сайт по протоколу https, но браузеры будут ругаться на сертификат, мол, он самоподписанный.

2) Скачиваем и устанавливаем саму утилиту acme.sh

Привычный wget почему-то не сработал и начал ругаться на https:

wget -O -  https://get.acme.sh | sh

Но зато сработало следующее

curl https://get.acme.sh | sh

3) Регистрируемся в сервисе Cloudflare, если еще не зарегистрированы

4) Меняем ДНС-серверы у регистратора на сервера Cloudflare

NS1:

gail.ns.cloudflare.com

NS2:

plato.ns.cloudflare.com

5) Добавляем сайт в Cloudflare

Выбираем бесплатный план. Вводим домен прямо как есть, даже если кириллицей. Обычно сервис подхватывает на лету все записи, которые уже были в ДНС. Если нет - то добавляем нужные записи вручную. Подтверждаем и ждем, когда Cloudflare проверит обновление записей. Обычно это занимает несколько часов (до 24).

6) Получаем Account ID и Token

Пока ждем, записываем Account ID на странице с доменом в Cloudflare. Кроме того, нам понадобится Токен. Создаем его в Cloudflare: заходим в настройки профиля (правый верхний угол), выбираем вкладку Api Tokens. Создаем токен, нажав кнопку Create Token. Выбираем название, например, token1. Даем два вида прав: Zone.Zone - чтение (Read), Zone.DNS - правка (Edit). Zone Resources - All Zones. Записываем значение полученного токена.

7) Экспортируем токен и ID аккаунта на сервере

В консоли на сервере вводим команды

export CF_Token="сюда вводим значение токена"
export CF_Account_ID="сюда вводим Account ID"

8) Дожидаемся переноса зоны в Cloudflare

При выборе домена в Cloudflare должно быть сообщение вида:

Great news! Cloudflare is now protecting your site
Here are some commonly used options to review.

Это означает, что можно производить дальнейшие действия.

9) Получаем сертификат

Вводим команду

acme.sh --issue --dns dns_cf -d xn----htbbtlcjem.xn--p1ai -d *.xn----htbbtlcjem.xn--p1ai

Кириллический домен вводим в Punycode. Здесь будет утилита будет добавлять txt-запись в ДНС, а потом ее удалит.

Если зона у нас в regru, то домен вводим не в Punycode, а в utf. Если acme.sh поругается на отсутствие команды idn, то установите ее:

apt-get install idn

 

10) Устанавливаем сертификат и ключ по нужным адресам

acme.sh --install-cert -d xn----htbbtlcjem.xn--p1ai -d *.xn----htbbtlcjem.xn--p1ai \
--key-file       /var/www/httpd-cert/kroemdom/xn----htbbtlcjem.xn--p1ai.key  \
--fullchain-file /var/www/httpd-cert/kroemdom/xn----htbbtlcjem.xn--p1ai.crt \
--reloadcmd     "service nginx force-reload"

У нас используется Nginx.

Здесь то же самое, прописываем домены наверху в utf, а не в punycode, если используем regru.

 

11) В Cloudflare ставим в настройках SSL Full (Strict)

Если этого не сделать, то шифрование будет неполным.

Вот и все. Теперь домен и все поддомены будут защищены SSL-шифрованием.

P.S.

12) Настраиваем перенаправление с http на https в .htaccess

Прописываем

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

P.S. В августе в Acme.sh центром выдачи сертификатов по-умолчанию назначен ZeroSSL. Если Вы хотите остаться на Lets Encrypt, то нужно выполнить команду:

acme.sh --set-default-ca  --server  letsencrypt

Подробнее читать тут.

P.P.S. Корневой сертификат DST_Root_CA_X3 может быть просрочен (его можно отключить) - читать здесь. А еще в августе 2021 в openssl нашли уязвимость (CVE-2021-3711, CVE-2021-3712) - необходимо обновить openssl.

Получение и установка бесплатного сертификата Let's Encrypt в ISPManager 4 с помощью acme.sh

Читайте пошаговое руководство по установке бесплатного сертификата Let's Encrypt.

Перенаправление с http на https через .htaccess

Узнайте, как сделать перенаправление с http на https через файл .htaccess после установки SSL-сертификата.

Скрипт проверки https сайта на доступность

Узнайте, как сделать на bash скрипт для проверки https сайта на доступность и узнать о просроченном ssl-сертификате.

Этапы создания сайта

Узнайте, из каких этапов состоит создание сайта. Как создать сайт с нуля. Как зарегистрировать домен. Как выбрать хостинг.
Back to Top