Инструменты пользователя

Инструменты сайта


let_s_encrypt

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

let_s_encrypt [2019/02/10 21:27]
let_s_encrypt [2020/06/13 13:46] (текущий)
Строка 1: Строка 1:
 +====== Центр сертификации Lets Encrypt ======
 +~~Title: Центр сертификации Let’s Encrypt ~~
 +{{htmlmetatags>
 +metatag-description=(Установка и использование Let’s Encrypt. Настройка certbot и acme.sh (альтернатива certbot))
 +}}
  
 +{{ ::letsencrypt_01.jpg?nolink&600 |}}
 +
 +Homepage: [[https://letsencrypt.org|Let’s Encrypt is a free, automated, and open Certificate Authority]]
 +
 +  * Digital Ocean:[[https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-16-04|How To Secure Apache with Let's Encrypt on Ubuntu 16.04]].
 +  * [[https://letsencrypt.readthedocs.io/en/latest/using.html|User Guide]]
 +
 +Чтобы получить сертификат для вашего домена, вам необходимо запустить клиентскую часть на вашем сервере. **Ограничения**. Стоит отметить, что Let’s Encrypt выдает лишь DV-сертификаты, и если вам необходим другой тип сертификата (EV или OV), то следует обращаться к более традиционным провайдерам. DV сертификаты от Let’s Encrypt выдаются на конкретный список доменов и поддоменов (SAN/UCC), т.е. вы не можете получить wildcard-сертификат. Также следует упомянуть, что на данный момент вы можете **производить всего до 10 регистраций с одного IP адреса каждые 3 часа**, и до 5 сертификатов для одного домена (включая любые поддомены) каждые 7 дней. В будущем эти ограничения могут измениться.
 +
 +
 +**Инсталляция Certbot в Ubuntu 16.04 (https://certbot.eff.org/#ubuntuxenial-apache)**
 +<file bash>
 +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 
 +</file>Для получения SSL сертификата выполнить:<file bash>
 +sudo certbot --apache
 +</file>
 +====== acme.sh альтернатива certbot ======
 +
 +<note>На использование acme.sh меня сподвигнул сисадмин Сергей Деревянко. Респект и мое уважение.</note>
 +
 +Скрипт [[https://github.com/Neilpang/acme.sh|acme.sh]] написан на чистом [[bash]], а оригинальный certbot на [[python]].
 +
 +Преимущества acme.sh: 
 +  * acme.sh автоматически поддерживает валидацию через DNS, поддерживает много API различных провайдеров, включая Yandex pdd.yandex.ru. Скрипт сам проверяет ваши права на домен добавляя специальную TXT запись в вашу зону (если есть API у вашего провайдера) и генерирует нужные сертификаты.
 +  * Поддержка docker-а «из коробки», есть уже готовый контейнер от авторов скрипта.
 +  * Добавляет себя в cron для автоматического обновления сертификатов по таймеру.
 +  * acme.sh скрипт может выполнить заданную команду после обновления сертификатов — очевидным применением является отправка команды веб-серверу на перезагрузку ключей. Есть ещё хуки для выполнения до и после запуска скрипта.
 +  * Есть функции для автоматической загрузки ключей в различные хостинговые панели (типа cpanel)
 +Установка acme.sh
 +<file bash>
 +curl https://get.acme.sh | sh
 +</file>
 +В [[cron]] на каждой ноде создаем правило:
 +<file bash>
 +55 0 * * 6 "/root/.acme.sh"/acme.sh --cron --force --home "/root/.acme.sh" > /dev/null
 +</file>
 +===== letsencrypt запуск в cron для  Ubuntu 16.04.2 LTS =====
 +
 +Настройка [[cron]]: letsencrypt будет запускаться каждый понедельник 5 часов утра только для обновления устаревших SSL сертификатов.
 +<file bash>
 +sudo crontab -e
 +0 5 * * 1 /usr/bin/letsencrypt renew
 +</file>или создать файл /etc/cron.d/certboot который будет раз в месяц проверять сертификаты<file bash certboot>
 +@monthly root /usr/bin/letsencrypt renew
 +</file>
 +
 +===== Правила 301 редирект letsencrypt =====
 +
 +Ниже приведены правила для 301 редиректа, которые автоматически генерирует утилита letsencrypt (certbot) после своего запуска. Этот код можно применять и без certbot, в данном примере нужно заменить сайт wiki.dieg.info на ваш.
 +Также добавлен строка отменяющая 301 редирект файла robots.txt. В этой конфигурации файл [[robots|robots.txt]] доступен как по протоколу HTTPS так и по протоколу HTTP.
 +<file bash>
 +RewriteEngine on
 +RewriteCond %{REQUEST_URI} !^/robots\.txt$
 +RewriteCond %{SERVER_NAME} =wiki.dieg.info
 +RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
 +</file>
 +<note warning>В интернете много примеров как исключить robots.txt, но большинство из них НЕ работает. Одна из причин, потому что не приводится полный конфигурационный файл. Ниже полный листинг правильного файл перенаправляющего запросы с HTTP на HTTPS и важно! файл .htaccess НЕ используется.</note>
 +Файл  /etc/apache2/sites-enabled/wiki.dieg80.conf
 +<file bash wiki.dieg80.conf>
 +<VirtualHost _default_:80>
 +        ServerName wiki.dieg.info
 +        ServerAdmin webmaster@dieg.info
 +
 +        DocumentRoot /var/www/wiki.dieg/wikionline
 +
 +<Directory /var/www/wiki.dieg/wikionline/>
 +        Options +FollowSymLinks +MultiViews -Indexes
 +        AllowOverride All
 +        Order deny,allow
 +        allow from all
 +</Directory>
 +
 +RewriteEngine on
 +RewriteCond %{REQUEST_URI} !^/robots\.txt$
 +RewriteCond %{SERVER_NAME} =wiki.dieg.info
 +RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
 +
 +</VirtualHost>
 +</file>