активируем SSL-сертификат


Зачем нужен SSL-сертификат и как его установить

SSL (англ. Secure Sockets Layer — уровень защищённых cокетов) — криптографический протокол, обеспечивающий защищённую передачу данных между компьютерами в сети интернет, как правило между сервером и клиентами. Наличие сертификата на сервере сайта определяется по дополнительной букве S в название протокола перед доменным именем.

Информация, которая передается по протоколу HTTPS, «упаковывается» в криптографический протокол SSL или TLS, обеспечивая её защиту. Для HTTPS используется TCP-порт 443. Наиболее распространённая реализация SSL — криптографический пакет с открытым исходным кодом OpenSSL.

Инструкция, описанная ниже, подойдет как для SSL-сертификатов, предоставленных REG.RU, так и для SSL-сертификатов, заказанных в других компаниях. Перед установкой SSL-сертификата от REG.RU перейдите к списку услуг в своём аккаунте и убедитесь, что услуга SSL-сертификата активна.

Перейдите в раздел Мои домены, кликните по имени домена, для которого хотите подключить бесплатный SSL. В блоке Безопасность нажмите кнопку напротив пункта «Бесплатно SSL-сертификат", нажмите Продолжить в открывшемся поле. В течение 24 часов после подключения SSL-сертификата на контактный e-mail владельца домена придёт письмо с дальнейшими инструкциями. Оно будет содержать TXT-запись для подтверждения выдачи SSL-сертификата. Данную запись вам необходимо добавить в зонудомена.

Для активации бесплатного SSL-сертификата необходимо добавить запись TXT, которая отправляется на контактный e-mail домена при заказе SSL-сертификата. При необходимости вы можете повторить отправку письма подтверждения SSL-сертификата: авторизуйтесь на сайте REG.RU и перейдите к списку услуг. Кликните на название услуги SSL-сертификата;

в разделе «Управление услугой» кликните Повторить отправку письма подтверждения SSL сертификата. Письмо с TXT-записью приходит, как правило, в течение 2-3 часов после заказа SSL-сертификата. Все ресурсные записи DNS, в том числе и «TXT», необходимо добавлять на DNS-серверах, прописанных для вашего домена. Вот ссылка (https://www.reg.ru/support/ssl-sertifikaty/zakaz-ssl-sertifikata/kak-dobavit-zapis-txt-dlya-besplatnogo-ssl-sertifikata). Для ns1.reg.ru и ns2.reg.ru выполните следующее:

Авторизуйтесь на сайте REG.RU и перейдите к списку доменов;
Кликните по домену, для которого необходимо изменить или добавить ресурсную запись;
В блоке «Управление доменом» (справа) выберите Управление зоной;
Для добавления новой записи пролистайте страницу вниз и кликните по раскрывающемуся блоку Добавить запись «TXT». В поле «Subdomain» впишите @, а в поле «Text» запись-TXT для получения SSL-сертификата.
Для сохранения изменений нажмите Добавить запись TXT.
Бесплатный SSL-сертификат активируется автоматически после добавления TXT-записи (до 12 часов).
Перед установкой SSL-сертификата от REG.RU перейдите к списку услуг и убедитесь, что услуга SSL-сертификата активна. Данные сертификатов вы можете найти в электронном сообщении, отправленным на ваш контактный e-mail после выпуска сертификата. Для начала вам необходимо объединить 3 сертификата (сам SSL-сертификат, промежуточный и корневой сертификаты) в один файл. Для этого создайте на локальном ПК новый текстовый документ с именем your_domain.crt, например, при помощи блокнота. Поочередно скопируйте и вставьте в созданный документ каждый сертификат. После вставки всех сертификатов файл должен иметь такой вид:
-----BEGIN CERTIFICATE-----
#Ваш сертификат#
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
#Промежуточный сертификат#
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
#Корневой сертификат#
-----END CERTIFICATE-----
обратите внимание: один сертификат идёт следом за другим, без пустых строк;
создайте файл your_domain.key и скопируйте в него содержание приватного ключа сертификата;
загрузите файл your_domain.crt и приватный ключ сертификата your_domain.key на сервер, в директорию /etc/ssl/. Директория может быть и любой другой;
Откройтеконфигурационный файл Nginxи отредактируйте виртуальный хост вашего сайта, добавив следующие строки:

server{
listen 443;
ssl on; # добавлена строка
ssl_certificate /etc/ssl/your_domain.crt; # добавлена строка
ssl_certificate_key /etc/ssl/your_domain.key; # добавлена строка
server_name your.domain.com;
/etc/ssl/your_domain.crt и /etc/ssl/your_domain.key — пути до загруженных вами файлов
Если необходимо, чтобы сайт работал и с защищенным соединением (https:// ) и с незащищенным (http:// ), вам необходимо иметь две секции server{} для каждого типа соединения: для этого создайте копию секции server{} и оставьте её без изменения, а вторую отредактируйте согласно коду выше;
чтобы изменения вступили в силу, перезагрузите сервер Nginx командой:
sudo /etc/init.d/nginx restart



Установка SSL-сертификата на Apache:
Способ 1 :
Все действия идентичны действиям выше, за исключением конфигов nginx.
В apache2 редактируем три файла: 000-default.conf, default-ssl.conf, ports.conf
файл 000-default.conf :
два блока для http и https:
вместо круглых скобок ставим стрелки:
(VirtualHost *:443)
ServerName 192.168.0.102
ServerAdmin webmaster@localhost
DocumentRoot /var/www
(Directory /var/www)
# Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
(/Directory)
SSLEngine on
SSLCertificateFile /etc/ssl/ustim.crt
SSLCertificateKeyFile /etc/ssl/ustim.key
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
(/VirtualHost)
(VirtualHost *:80)
ServerName 192.168.0.102
ServerAdmin webmaster@localhost
DocumentRoot /var/www
(Directory /var/www)
# Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
(/Directory)
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
(/VirtualHost)


также редактируем default-ssl.conf:
(IfModule mod_ssl.c)
(VirtualHost _default_:443)
ServerAdmin webmaster@localhost
DocumentRoot /home/alex
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /etc/ssl/certs/server.pem
SSLCertificateKeyFile /etc/ssl/private/server.key
(FilesMatch "\.(cgi|shtml|phtml|php)$")
SSLOptions +StdEnvVars
(/FilesMatch)
(Directory /usr/lib/cgi-bin)
SSLOptions +StdEnvVars
(/Directory)
(/VirtualHost>)
(/IfModule)


и файл ports.conf:
Listen 80
(IfModule ssl_module)
Listen 443
(/IfModule)
(IfModule mod_gnutls.c)
Listen 443
(/IfModule)


Способ 2:
Перед установкой SSL-сертификата от REG.RU перейдите к списку услуг и убедитесь, что услуга SSL-сертификата активна, как это сделать описано выше.
После выпуска SSL на ваш контактный e-mail придёт письмо с данными для его установки, это:
сам сертификат;
корневой сертификат;
промежуточный сертификат.
Приватный ключ обычно генерируется при заказе SSL и сохраняется на ваш локальный ПК.
Перед установкой SSL на Ubuntu/Debian необходимо включить модуль mod_ssl с помощью команды: a2enmod ssl.
Создайте на вашем сервере в каталоге /etc/ssl/ файлы domain_name.crt, private.key и chain.crt со следующим содержимым:
domain_name.crt — сам сертификат;
private.key — приватный ключ;
chain.crt — цепочка сертификатов, которая содержит сначала промежуточный сертификат и следом за ним корневой (с новой строки без пробелов и пустых строк).
Откройте файл конфигурации Apache /etc/apache2/apache2.conf
В конце файла создайте идентичную копию блока «VirtualHost». Для созданного блока укажите порт 443 и добавьте внутри него строки:
SSLEngine on
SSLCertificateFile /etc/ssl/domain_name.crt
SSLCertificateKeyFile /etc/ssl/private.key
SSLCertificateChainFile /etc/ssl/chain.crt
Проверьте конфигурацию Apache до перезапуска командой: apachectl configtest
На этом настройка SSL-сертификата на Apache закончена. Далее необходимо настроить переадресацию для вашего сайта.
После установки SSL необходимо настроить редирект с протокола HTTP на HTTPS. Редирект для Apache настраивается через файл .htaccess.
Чтобы осуществить переадресацию добавьте в конце файла .htaccess следующие строки:
вариант 1
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Или, если первый вариант не поможет, воспользуйтесь вторым вариантом:
вариант 2
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
если все варианты не помогли и возникает циклическая переадресация:
вариант 3
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
вариант 4
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Редирект на https только выбранной страницы
В примерах ниже редирект настраивается для страницы login.php.
вариант 1
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} =/login.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
вариант 2
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} =/login.php
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Для настройки разных redirectov подробно здесь:
https://www.reg.ru/support/hosting-i-servery/sajty-i-domeny/kak-dobavit-redirekt/redirekt-cherez-htaccess


установка Let's Encrypt для nginx

apt-get install letsencrypt
mkdir /etc/nginx/ssl
openssl dhparam -out /etc/nginx/ssl/dhp-2048.pem 2048
letsencrypt --webroot -w /var/www/html/ -d neuromusik.ru certonly

указать свою электронную почту, согласиться с условиями выпуска
сертификата (вводим заглавную A) и согласиться или отказаться от рассылки новостей (N)
Все, сертификат установлен.
отредактируйте файл конфигурации nginx /etc/nginx/nginx.conf (блок 443)

server{
listen 185.247.140.221:443 http2;
server_name neuromusik.ru www.neuromusik.ru;
listen 443 ssl http2;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+
AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl on;
ssl_certificate /etc/letsencrypt/live/neuromusik.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/neuromusik.ru/privkey.pem;
server_name neuromusik.ru;
ssl_dhparam /etc/nginx/ssl/dhp-2048.pem;
location /{root /var/www/html;}
}


установка Let's Encrypt для apache2

Apache у вас уже установлен и настроен для работы по протоколу http.
sudo apt update
sudo apt install python3-certbot-apache
sudo a2enmod ssl
sudo a2ensite default-ssl.conf
sudo systemctl restart apache2
sudo letsencrypt --apache -d neuromusik.ru
укажите адрес электронной почты
примите лицензионное соглашение Lets Encrypt (A)
можно отказаться от рассылок (N)
выбрать надо ли разрешать http трафик
Когда установка SSL сертификата Apache ubuntu будет завершена, вы найдете созданные файлы сертификатов в папке /etc/letsencrypt/live/neuromusik.ru. В этой папке будут четыре файла:
cert.pem - ваш сертификат домена
chain.pem - сертификат цепочки Let's Encrypt
fullchain.pem - cert.pem и chain.pem вместе
privkey.pem - секретный ключ вашего сертификата.


Сертификаты Let's Encrypte действительны в течение 90 дней и могут быть автоматически продлены.
Чтобы автоматически запрашивать обновление раз в неделю, отредактируйте файл crontab для root.

sudo crontab -e (выбираем редактор nano)

добавьте следующие две строки внизу:

30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log
35 2 * * 1 /bin/systemctl reload nginx

Эти две директивы будут выполнять команду letsencrypt-auto renew каждый понедельник в 2:30, а затем перезагружать Nginx в 2:35 (поэтому будет использоваться обновленный сертификат)

Если у вас возникли трудности с настройкой можете обратиться к нампо этой ссылке

мои контактные данные здесь или здесь