Установка SSL-сертификата на домен
После получения необходимых файлов и сертификата, необходимо встроить этот сертификат на сервер, чтобы потом им подписать ваше доменное имя. Данный материал описывает установку сертификата с помощью менеджера ISPmanager, а также установку напрямую, не используя утилиты.
Использование ISPmanager 6
Авторизируйтесь в качестве пользователя, который владеет необходимым доменом. Чтобы это сделать, войдите в систему с правами суперпользователя (root), после найдите в меню пункт «Пользователи«, выберите «Войти под пользователем».
Важно: вам необходимо подключить возможность использования SSL. В пункте «Пользователи», в настройках определенного пользователя найдите «Может использовать SSL», отметьте этот пункт.
В подменю «SSL-сертификаты« — «Добавить сертификат».
Тип сертификата — существующий.
Параметры:
Имя сертификата — имя формируется в зависимости от информации, которая содержится в сертификате + «_customX» Если у ваша версия панели < 6.19, то вам необходимо вручную установить имя сертификата. SSL-Сертификат — поле, для загрузки файла .crt. Ключ сертификата — содержимое приватного ключа (файл .key). Также вам необходимо представить в панель файл (.ca/.ctrca). Это цепочка сертификатов (сертификат, которым подписан ваш исходный). Содержимое сертификатов просто скопируйте из файлов и вставьте в подходящие поля.
Например: цепочка сертификатов от GlobalSign
Вы получаете архив с файлами (файл .p7b сертификат и цепочка сертификата, файл с именем домена + открытый ключ + сертификат, корневой ключ цепочки сертификата, промежуточный ключ .crt).
Чтобы создать цепочки сертификата поместите в один файл .txt корневой ключ сертификата, после за ним, начиная с новой строки, промежуточный ключ и установите для него название GlobalSign.ca. Откройте файлы с ключами цепочки через любой текстовый редактор. Скопируйте содержимое, обязательно проверьте целостность скопированного кода.
Когда вы добавили сертификат, переходите на страницу «Сайты», запустите сервер. Вы увидите установленный сертификат. Но если настройки сайта будут меняться, то файлы конфигурации будут перезаписаны автоматически.
Изменения в файлах, которые вы вносили руками, могут не сохраниться. В случае возникновения подобной ситуации вам нужно перейти в /var/www/httpd-cert/ИМЯ_ПОЛЬЗОВАТЕЛЯ/ИМЯ_СЕРТИФИКАТА и повторно внести нужные изменения.
Проверка сертификата
Используйте ресурс: https://www.ssllabs.com/ssltest/analyze.html
Для проверки валидности работы установленного сертификата: https://www.sslshopper.com/ssl-checker.html
Установка SSL-сертификата без использования внешних панелей
В первую очередь, подключитесь к серверу по SSH.
Проверьте порт 443 — (netstat -napt | grep 443 или ss -tlpn | grep 443 или sockstat | grep 443 для FreeBSD).
Образец вывода: root httpd 83299 19 tcp4 188.120.225.20:443 *:*
Установка с использованием файла конфигурации веб-сервера
Apache
Путь для установки сертификата:
UBUNTU/DEBIAN — /etc/apache2/apache2.conf
Centos — /etc/httpd/conf/httpd.conf
FreeBSD — /usr/local/etc/apache22/httpd.conf
Создайте <VirtualHost>, чтобы осуществить SSL-соединение:
<VirtualHost 10.0.0.1:443>
DocumentRoot /var/www/user/data/www/domain.com
ServerName domain.com
SSLEngine on
SSLCertificateFile /path/to/domain.crt
SSLCertificateKeyFile /path/to/domain.key
SSLCACertificateFile /path/to/ca.crt
</VirtualHost>
Где:
- domain.com — доменное имя вашего домена
- 10.0.0.1 — IP адрес домена
- /var/www/user/data/www/domain.com — путь до домашней директории, где расположен ваш домен
- /path/to/domain.crt — файл с сертификатом
- /path/to/domain.key — файл с ключом для сертификата
- /path/to/ca.crt — файл, содержащий корневой сертификат
После установки изменений, используйте команду:
apachectl -t
Если получено сообщение — Syntax OK, то можете перезапустить сервер — systemctl restart apache2 или systemctl restart httpd или apachectl restart
NGINX
Откройте файл конфигурации сервера. Путь: /etc/nginx/nginx.conf
Инициализируйте модуль SSL:
server {
listen 10.0.0.1:443;
server_name domain.com;
ssl on;
ssl_certificate /path/to/domain.crt;
ssl_certificate_key /path/to/domain.key ;
}
domain.com — доменное имя
10.0.0.1 — IP, который принадлежит домену
путь — /path/to/domain.crt (сертификат)
/path/to/domain.key — ключ сервера (путь)
Цепочка сертификата добавляется в файл с самим сертификатом.
После того, как вы изменили файл конфигурации, проверьте наличие ошибок в синтаксисе, а также ваши вставленные данные.
nginx -t — проверка конфигурации
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Если вы увидели подобный вывод, то SSL настроен корректно
systemctl restart nginx — перезапуск сервера
SSL-сертификаты (несколько) на едином IP
Браузер получит сертификат сервера, выставленный по умолчанию. Это не зависит от недостаточной настройки, так работает SSL. Чтобы разрешить работы нескольких сертификатов на одном IP, необходимо воспользоваться расширением SNI протокола TLS. Ссылка на документацию (https://tools.ietf.org/html/rfc6066). Данный модуль позволит установить SSL-handshake, во время которого сервер определит необходимый сертификат для использования. Большинство современных браузеров поддерживает это решение, но стоит обратить внимание также на версию библиотеки OpenSSL, она должна быть > 0.9.8f.
Полезные команды Openssl
- Создание ключа для SSL-сертификата:
openssl req -batch -noout -new -newkey rsa:2048 -nodes -keyout cert.key
- Сгенерировать CSR-запрос:
openssl req -new -key cert.key -out cert.csr
- Сделать ключ без пароля:
openssl rsa -in cert.key -out cert.key
- CSR данные:
openssl req -noout -text -in cert.csr
- Данные сертификата (проверить кем выдан, например):
openssl x509 -noout -text -in cert.crt
- Проверить, что ключ соответствует сертификату:
openssl x509 -noout -modulus -in cert.crt | openssl md5
openssl rsa -noout -modulus -in cert.key | openssl md5
Два последних значения должны совпадать, в нашем случае это md5.
- Узнать длину запроса:
echo ‘(‘ `openssl req -noout -modulus -in cert.csr | cut -d’=’ -f2 | wc -c` ‘-1)*4’ | bc
- Проверить HTTPS:
openssl s_client -host ulanovka.ru -port 443