Чтобы защитить связь между клиентами и вашим сайтом (сервером), вам необходимо защитить ваше 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 и проверить, работает ли он.