С развитием сайта и в случае, если сайт предоставляет сервисы для клиентов, появляется необходимость обеспечения безопасного соединения клиентов с сайтом. Поэтому многие сайты переходят с протокола HTTP на HTTPS.
Для работы HTTPS версии сайта требуются TLS (SSL) сертификаты. Раньше сертификаты нужно было покупать в специализированных центрах сертификации, но c появлением технологии Let’s Encrypt, сертификаты теперь можно получить бесплатно.
Расскажем как можно получить такой сертификат, а также как настроить автоматическое продление TLS сертификата, ведь срок действия letsencrypt-сертификата составляет всего 3 месяца.
Перед началом убеждаемся, что у нас установлены python и git.
Затем нужно настроить web-сервер для того, чтобы он смог обработать запрос на подтверждение подлинности сайта, т.е. что сертификат запросил именно владелец сайта, а не кто-то другой. Для этого в конфигурационный файл сайта в nginx добавляем такой location:
Далее скачиваем специализированное ПО для получения сертификата, называемое certbot:
Теперь настраиваем web-сервер для работы сайта по HTTPS. Для nginx настройки могут быть такие:
Чтобы по истечении срока годности сертификата сertbot продлил его автоматически, добавляем в /etc/crontab строки:
Теперь все готово, можно пользоваться https версией сайта!
Для работы HTTPS версии сайта требуются TLS (SSL) сертификаты. Раньше сертификаты нужно было покупать в специализированных центрах сертификации, но c появлением технологии Let’s Encrypt, сертификаты теперь можно получить бесплатно.
Расскажем как можно получить такой сертификат, а также как настроить автоматическое продление TLS сертификата, ведь срок действия letsencrypt-сертификата составляет всего 3 месяца.
Перед началом убеждаемся, что у нас установлены python и git.
Затем нужно настроить web-сервер для того, чтобы он смог обработать запрос на подтверждение подлинности сайта, т.е. что сертификат запросил именно владелец сайта, а не кто-то другой. Для этого в конфигурационный файл сайта в nginx добавляем такой location:
location /.well-known/ {
root /var/www/html;
}
И перезагружаем nginx:service nginx reload
А для apache такие настройки:
Alias /.well-known /var/www/html/.well-known
<Directory "/var/www/html">
Require all granted
RewriteEngine off
</Directory>
И перезагружаем apache:service apache2 reload
Далее скачиваем специализированное ПО для получения сертификата, называемое certbot:
cd /root
git clone https://github.com/certbot/certbot
Теперь всё готово, сертификат получаем такой командой:
cd /root/certbot/
./certbot-auto certonly --webroot -w /var/www/html -d <ваш_домен> -d www.<ваш_домен>
Certbot сохранит сделанные сертификаты в папке /etc/letsencrypt/live/<ваш_домен>/Теперь настраиваем web-сервер для работы сайта по HTTPS. Для nginx настройки могут быть такие:
server {
listen 443 ssl http2;
server_name <ваш_домен> www.<ваш_домен>;
ssl on;
ssl_certificate /etc/letsencrypt/live/<ваш_домен>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<ваш_домен>/privkey.pem;
error_log /var/log/nginx/<ваш_домен>-errors.log;
access_log /var/log/nginx/<ваш_домен>-access.log;
location /.well-known/ {
root /var/www/html;
}
location / {
root /var/www/<ваш_домен>;
}
}
Для apache:
<VirtualHost *:443>
DocumentRoot /var/www/<ваш_домен>
ServerName <ваш_домен>
ServerAlias www.<ваш_домен>
ErrorLog /var/log/apache2/<ваш_домен>-error.log
CustomLog /var/log/apache2/<ваш_домен>-access.log common
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/<ваш_домен>/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<ваш_домен>/privkey.pem
Alias /.well-known /var/www/html/.well-known
<Directory "/var/www/html">
Require all granted
RewriteEngine off
</Directory>
<Directory "/var/www/<ваш_домен>">
Require all granted
</Directory>
</VirtualHost>
Перезагружаем web-сервер для применения настроек.Чтобы по истечении срока годности сертификата сertbot продлил его автоматически, добавляем в /etc/crontab строки:
# Update all TLS certs
22 13 * * * root /root/certbot/certbot-auto renew -q --no-self-upgrade --post-hook 'service nginx restart'
Или, в случае с apache:
# Update all TLS certs
22 13 * * * root /root/certbot/certbot-auto renew -q --no-self-upgrade --post-hook 'service apache2 restart'
Теперь все готово, можно пользоваться https версией сайта!