Установка ssl-сертификата Let's Encrypt на Виртуальную машину Битрикс
Как мы помним, за работу по HTTPS в виртуальной машине Битрикс отвечает NGINX. Мы вернемся к нему, как только получим сертификат.
1. Для начала зайдем установим Certbot
Зайдем на сервер с интернет-магазином по ssh с правами root и установим Certbot в папку /usr/local/sbin напрямую в с сайта EFF.
$ cd /usr/local/sbin
$ sudo wget Для просмотра ссылки Войдиили Зарегистрируйся
Получить последнюю версию Certbot можно также с Github (убедитесь, что у вас есть git
$ cd /tmp
$ git clone Для просмотра ссылки Войдиили Зарегистрируйся
Далее переходим в директорию со свежескаченным Certbot-ом и дадим боту права на исполнение:
$ sudo chmod a+x /usr/local/sbin/certbot-auto
2. Приступим к получению сертификата.
Для получения сертификата необходимо выполнить команду с вызовом Certbot'a с определенными параметрами:
$ certbot-auto certonly --webroot --agree-tos --email myemail@domen.ru -w /home/bitrix/www/ -d domen.ru -d Для просмотра ссылки Войдиили Зарегистрируйся
где,
--webroot — специальный ключ, повышающий надежность работы Certbot под Nginx;
--agree-tos — автоматическое согласие с Условиями предоставления услуг (Terms of Services;
--email myemail@domen.ru — Ваш e-mail. Будьте внимательны, его нельзя изменить, он потребуется, например, для восстановления доступа к домену и для его продления;
-w /home/bitrix/www — указываем корневую директорию сайта основного сайта; если у вас несколько многосайтовая конфигурация, укажите путь к доп. сайту - /home/bitrix/ext_www/
-d domen.ru — через ключ -d мы указываем, для каких доменов мы запрашиваем сертификат. Начинать надо c домена второго уровня domen.ru и через такой же ключ указывать поддомены, например, -d Для просмотра ссылки Войдиили Зарегистрируйся -d opt.domen.ru
Скрипт Certbot начнем свою работу, предложит установить дополнительные пакеты, соглашайтесь и ждите окончания работы.
При успешном завершении работы Certbot поздравляет Вас с генерацией сертификата и выдает следующее сообщение:
IMPORTANT NOTES:
- If you lose your account credentials, you can recover through
e-mails sent to sammy@digitalocean.com
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/domen.com/fullchain.pem. Your
cert will expire on 2017-03-12. To obtain a new version of the
certificate in the future, simply run Let's Encrypt again.
- Your account credentials have been saved in your Let's Encrypt
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 Let's
Encrypt so making regular backups of this folder is ideal.
- If like Let's Encrypt, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: Для просмотра ссылки Войдиили Зарегистрируйся
Donating to EFF: Для просмотра ссылки Войдиили Зарегистрируйся
* - если вместо этого сообщения появляется ошибка "Failed to connect to host for DVSNI challenge ", то вам необходимо настроить ваш Firewall так, чтобы был разрешен TCP-трафик на портах 80 и 443.
** - если вы используете сервисы типа Cloudflare для вашего домена, предварительно отключите их на время генерации сертификата.
3. Настройка Nginx
Ура! Мы получили бесплатный ssl-сертификат на 3 месяца. Нам осталось только настроить Nginx и поставить автоматическое продление сертификата на cron.
Но сначала давайте повысим уровень безопасности и сгенерируем группу Для просмотра ссылки Войдиили Зарегистрируйся. Это повысит уровень шифрования и поможет нам в дальнейшем получить оценку А+ при проверке сертификата.
$ openssl dhparam -out /etc/nginx/ssl/c/dhparam.pem 2048
Ждем примерно 2-4 минуты и переходим к конфигурированию Nginx.
Открываем файл /etc/nginx/bx/conf/ssl.conf и прописываем в нем пути к только что полученным сертификатам.
ssl_certificate /etc/letsencrypt/live/infospice.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/infospice.ru/privkey.pem;
Ниже вы найдете дополнительные директивы Nginx, которые позволяет получить вам оценку А+ при проверке сертификата на sslanalyzer:
# SSL encryption parameters
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECD$
ssl_prefer_server_ciphers on;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
resolver 8.8.4.4 8.8.8.8 valid=600s;
ssl_stapling_verify on;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_certificate /etc/letsencrypt/live/domen.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domen.ru/privkey.pem;
# performance
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
Сохраняем изменения, тестируем конфигурацию Nginx:
$ nginx -t
Если никаких ошибок нет, перезапускаем Nginx:
$ service nginx reload
И идем проверять свежеустановленный сертификат на сервисе SSL Analyzer - Для просмотра ссылки Войдиили Зарегистрируйся.
Если вы все сделали правильно, то должны увидеть приятную картинку — как эта:
Для автоматического продления сертификата необходимо добавить в крон команды запуска certbot:
$ nano /etc/crontab
И добавляем строки
30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log
35 2 * * 1 /etc/init.d/nginx reload
Теперь каждый понедельник в 2-30 наш сертификат(ы) будет продляться автоматически, результат запишется в лог. В 2-35, после продления сертификата, перезагрузится конфигурация Nginx.
Вручную же можно продлить сертификаты следующей командой:
$ certbot-auto renew
Так как наши сертификаты уже сгенерированы, Certbot их просто продлит.
Если теперь вы хотите переключить весь трафик на HTTPS, то в ВМ Битрикс это делается согласно Для просмотра ссылки Войдиили Зарегистрируйся.
Итог
Спасибо всем, кто дочитал до конца.
Как мы помним, за работу по HTTPS в виртуальной машине Битрикс отвечает NGINX. Мы вернемся к нему, как только получим сертификат.
1. Для начала зайдем установим Certbot
Зайдем на сервер с интернет-магазином по ssh с правами root и установим Certbot в папку /usr/local/sbin напрямую в с сайта EFF.
$ cd /usr/local/sbin
$ sudo wget Для просмотра ссылки Войди
Получить последнюю версию Certbot можно также с Github (убедитесь, что у вас есть git
$ cd /tmp
$ git clone Для просмотра ссылки Войди
Далее переходим в директорию со свежескаченным Certbot-ом и дадим боту права на исполнение:
$ sudo chmod a+x /usr/local/sbin/certbot-auto
2. Приступим к получению сертификата.
Для получения сертификата необходимо выполнить команду с вызовом Certbot'a с определенными параметрами:
$ certbot-auto certonly --webroot --agree-tos --email myemail@domen.ru -w /home/bitrix/www/ -d domen.ru -d Для просмотра ссылки Войди
где,
--webroot — специальный ключ, повышающий надежность работы Certbot под Nginx;
--agree-tos — автоматическое согласие с Условиями предоставления услуг (Terms of Services;
--email myemail@domen.ru — Ваш e-mail. Будьте внимательны, его нельзя изменить, он потребуется, например, для восстановления доступа к домену и для его продления;
-w /home/bitrix/www — указываем корневую директорию сайта основного сайта; если у вас несколько многосайтовая конфигурация, укажите путь к доп. сайту - /home/bitrix/ext_www/
-d domen.ru — через ключ -d мы указываем, для каких доменов мы запрашиваем сертификат. Начинать надо c домена второго уровня domen.ru и через такой же ключ указывать поддомены, например, -d Для просмотра ссылки Войди
Скрипт Certbot начнем свою работу, предложит установить дополнительные пакеты, соглашайтесь и ждите окончания работы.
При успешном завершении работы Certbot поздравляет Вас с генерацией сертификата и выдает следующее сообщение:
IMPORTANT NOTES:
- If you lose your account credentials, you can recover through
e-mails sent to sammy@digitalocean.com
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/domen.com/fullchain.pem. Your
cert will expire on 2017-03-12. To obtain a new version of the
certificate in the future, simply run Let's Encrypt again.
- Your account credentials have been saved in your Let's Encrypt
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 Let's
Encrypt so making regular backups of this folder is ideal.
- If like Let's Encrypt, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: Для просмотра ссылки Войди
Donating to EFF: Для просмотра ссылки Войди
* - если вместо этого сообщения появляется ошибка "Failed to connect to host for DVSNI challenge ", то вам необходимо настроить ваш Firewall так, чтобы был разрешен TCP-трафик на портах 80 и 443.
** - если вы используете сервисы типа Cloudflare для вашего домена, предварительно отключите их на время генерации сертификата.
3. Настройка Nginx
Ура! Мы получили бесплатный ssl-сертификат на 3 месяца. Нам осталось только настроить Nginx и поставить автоматическое продление сертификата на cron.
Но сначала давайте повысим уровень безопасности и сгенерируем группу Для просмотра ссылки Войди
$ openssl dhparam -out /etc/nginx/ssl/c/dhparam.pem 2048
Ждем примерно 2-4 минуты и переходим к конфигурированию Nginx.
Открываем файл /etc/nginx/bx/conf/ssl.conf и прописываем в нем пути к только что полученным сертификатам.
ssl_certificate /etc/letsencrypt/live/infospice.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/infospice.ru/privkey.pem;
Ниже вы найдете дополнительные директивы Nginx, которые позволяет получить вам оценку А+ при проверке сертификата на sslanalyzer:
# SSL encryption parameters
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECD$
ssl_prefer_server_ciphers on;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
resolver 8.8.4.4 8.8.8.8 valid=600s;
ssl_stapling_verify on;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_certificate /etc/letsencrypt/live/domen.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domen.ru/privkey.pem;
# performance
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
Сохраняем изменения, тестируем конфигурацию Nginx:
$ nginx -t
Если никаких ошибок нет, перезапускаем Nginx:
$ service nginx reload
И идем проверять свежеустановленный сертификат на сервисе SSL Analyzer - Для просмотра ссылки Войди
Если вы все сделали правильно, то должны увидеть приятную картинку — как эта:
Для автоматического продления сертификата необходимо добавить в крон команды запуска certbot:
$ nano /etc/crontab
И добавляем строки
30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log
35 2 * * 1 /etc/init.d/nginx reload
Теперь каждый понедельник в 2-30 наш сертификат(ы) будет продляться автоматически, результат запишется в лог. В 2-35, после продления сертификата, перезагрузится конфигурация Nginx.
Вручную же можно продлить сертификаты следующей командой:
$ certbot-auto renew
Так как наши сертификаты уже сгенерированы, Certbot их просто продлит.
Если теперь вы хотите переключить весь трафик на HTTPS, то в ВМ Битрикс это делается согласно Для просмотра ссылки Войди
Итог
- Мы узнали, зачем нужен ssl-сертификат, какие виды сертификатов бывают.
- Получили бесплатный ssl-сертификат или купили его.
- Установили ssl-сертификат на сайт и проверили, что теперь сайт работает по HTTPS, как того добивался великий Google и иже с ними.
Спасибо всем, кто дочитал до конца.