Установка бесплатного SSL сертификата Let’s Encrypt в Debian

Чтобы защитить связь между клиентами и вашим сайтом (сервером), вам необходимо защитить ваше HTTP-соединение, зашифровав переданные данные по сети. Простым способом является использование протокола криптографической защиты TLS/SSL.

Сертификат Let’s Encrypt является бесплатным по сравнению с Comodo, IdenTrust или Symantec и самым популярным, и аналогично надежным.

Теперь мы настроим HTTPS на нашем хосте. Самый простой способ автоматической установки сертификата - использование клиента с поддержкой протокола ACME. ACME - автоматическая среда управления сертификатами, поможет нам автоматически запросить новый сертификат у CA (CA - центр сертификации, в нашем случае - Let’s Encrypt) и настроить веб-сервер для немедленной работы с HTTPS.

В нашем примере мы используем Certbot EFF. На официальном веб-сайте Certbot вы найдете инструкции по установке для каждого программного обеспечения / системы. Мы разворачиваем для Apache Web Server на Debian 9 (stretch).

Используя предоставленные инструкции, давайте установим Certbot

$ sudo apt install python-certbot-apache

Certbot может автоматически получать и устанавливать сертификат с помощью команды

$ sudo certbot --apache

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

$ sudo certbot --apache certonly

Вам будет предложено указать адрес электронной почты, на который вы хотите отправить сертификат. Введите адрес электронной почты и нажмите «Ввод»:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):

Затем прочитайте и примите «Условия обслуживания Let’s Encrypt», набрав букву «А»:

------------------------------------------------------------------------------- 
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory \\
------------------------------------------------------------------------------- 
(A)gree/(C)ancel:

Теперь Certbot будет читать файлы конфигурации веб-сервера Apache для доступных хостов и запрашивать, на какие из них выдавать сертификаты.

Which names would you like to activate HTTPS for? 
------------------------------------------------------------------------------- 
1: mysite.com 
------------------------------------------------------------------------------- 
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):

У нас есть только один домен, поэтому я нажимаю «Ввод» для выпуска для всех. Если у вас есть пара доменов, введите число, связанное с требуемым доменом.

Obtaining a new certificate 
Performing the following challenges: 
tls-sni-01 challenge for mysite.com 
Enabled Apache socache_shmcb module 
Enabled Apache ssl module 
Waiting for verification... 
Cleaning up challenges 
Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem 
Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem 
IMPORTANT NOTES: 
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/mysite.com/fullchain.pem. Your cert will
   expire on 2018-02-16. To obtain a new or tweaked version of this
   certificate in the future, simply run certbot again. To
   non-interactively renew *all* of your certificates, run "certbot
   renew" 
 - If you lose your account credentials, you can recover through
   e-mails sent to info@mysite.com. 
 - 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.

Вот и все, сертификация для нашего домена mysite.com получена. Не забудьте прочитать информацию из важных примечаний к выпуску. Все файлы, расположенные по адресу /etc/letsencrypt/live/mysite.com

root@s1:# cd /etc/letsencrypt/live/mysite.com/ 
root@s1:/etc/letsencrypt/live/s1.dock.co.nz# ls 
cert.pem  chain.pem  fullchain.pem  privkey.pem  README

Выданные сертификаты действительны в течение 90 дней, поэтому не забудьте настроить автоматическое обновление, добавив задание в cron или systemd:

certbot renew

Полную документацию Certbot вы можете найти на официальном сайте

Создаем VirtualHost для работы с HTTPS

Изменим конфигурацию mysite.conf

<IfModule mod_ssl.c> 
<VirtualHost *:443> 
        ServerName mysite 
        ServerAdmin info@mysite.com 
        DocumentRoot /var/www/html 
        LogLevel debug 
        ErrorLog ${APACHE_LOG_DIR}/mysite_error.log 
        CustomLog ${APACHE_LOG_DIR}/mysite_access.log combined 
  SSLEngine on \\
  SSLProtocol all -SSLv2 \\
  SSLCertificateFile /etc/letsencrypt/live/mysite.com/cert.pem 
  SSLCertificateKeyFile /etc/letsencrypt/live/mysite.com/privkey.pem 
  SSLCertificateChainFile /etc/letsencrypt/live/mysite.com/chain.pem 
        <Directory /home/user/dock> 
                Options Indexes FollowSymLinks 
                AllowOverride All 
                Require all granted 
        </Directory> 
</VirtualHost> 
</IfModule>

Директива ifModule гарантирует, что раздел обрабатывается только при включенном модуле (mod_ssl в нашем случае). VirtualHost теперь прослушивает 443 порт вместо 80. И параметры SSLEngine включены с параметрами и путями для шифрования файлов сертификатов, созданных Certbot.

Чтобы включить модуль mod_ssl на веб-сервере Apache, выполните следующую команду:

$ sudo a2enmod ssl

Затем перезапустите веб-сервер, чтобы активировать новую конфигурацию:

$ sudo systemctl restart apache2

Вы можете проверить загруженные модули следующей командой

$ apachectl -M
Loaded Modules: 
... 
 core_module (static) 
 mpm_prefork_module (shared) 
 php7_module (shared) 
 ssl_module (shared) 
 status_module (shared) 
...

Теперь можете открыть свой сайт в браузере с помощью https и проверить, работает ли он.

Источник