HTTPS (полное название: протокол передачи гипертекста Secure) — это безопасная версия HTTP (протокол передачи гипертекста). По сути, HTTPS обеспечивает шифрование данных, защиту целостности и аутентификацию через протокол SSL/TLS на основе HTTP для обеспечения безопасности передачи данных в сети. HTTPS широко используется для безопасной связи в Интернете, особенно при выполнении онлайн-транзакций и обработке конфиденциальной информации. В этой статье в качестве примера развертывания самозаверяющего сертификата https используется Nginx.
Приобретение сертификата. Вы можете приобрести сертификат SSL/TLS во многих центрах сертификации (CA), таких как VeriSign, Comodo, Let's Encrypt и т. д. Эти сертификаты бывают разных цен и типов (например, проверка домена DV, проверка организации OV, расширенная проверка EV) и подходят для разных потребностей и бюджетов. Бесплатные сертификаты. Let's Encrypt предлагает бесплатные сертификаты SSL/TLS, которые подходят для большинства основных потребностей и поддерживают автоматическое продление. Это упрощает внедрение HTTPS для различных веб-сайтов. Настройте сертификат SSL/TLS на сервере:
Процесс установки и настройки сертификата будет зависеть от программного обеспечения вашего сервера (например, Apache, Nginx, IIS и т. д.). Как правило, вам потребуется установить полученный сертификат (обычно файл .crt) и закрытый ключ (файл .key) на сервер, а также, возможно, потребуется установить промежуточный сертификат от центра сертификации. В процессе настройки вам необходимо изменить файл конфигурации сервера, указать расположение файла сертификата и файла закрытого ключа, а также, возможно, потребуется указать параметры безопасности, такие как используемый набор шифров и версию протокола. Убедитесь, что ресурсы сайта загружаются по протоколу HTTPS:
Убедитесь, что все ресурсы на вашем веб-сайте (такие как изображения, сценарии, таблицы стилей и т. д.) загружаются через HTTPS, а не HTTP, чтобы избежать проблем со «смешанным контентом», которые могут привести к появлению предупреждений безопасности браузера. Для внешних ресурсов убедитесь, что ссылки используют HTTPS, или рассмотрите возможность размещения их на собственном сервере. Перенаправить HTTP-запросы на HTTPS:
Настройте сервер на автоматическое перенаправление всех HTTP-запросов на HTTPS, гарантируя, что пользователи смогут получить доступ к веб-сайту через безопасное соединение HTTPS, даже если они введут URL-адрес HTTP. Реализация перенаправлений в конфигурации сервера обычно проста, например, на сервере Apache вы можете использовать файл .htaccess для настройки правил перенаправления. Обновите конфигурацию сайта и сторонние сервисы:
Обновите внутренние ссылки вашего сайта, чтобы убедиться, что они используют HTTPS. Если вы используете сторонние сервисы (например, входы в социальные сети, шлюзы онлайн-платежей и т. д.), убедитесь, что они поддерживают HTTPS и правильно настроены. Тестовая конфигурация HTTPS:
Прежде чем полностью включить HTTPS, проведите тщательное тестирование с использованием таких инструментов, как тест SSL-сервера Qualys SSL Labs, чтобы убедиться, что сертификат установлен правильно и что конфигурация сервера соответствует передовым практикам.
Локальная генерация основана на IP, когда доменное имя отсутствует. Если доменное имя существует, бесплатный сертификат можно сгенерировать на основе certbot.
nginx -V
ubuntu:
sudo apt-get install libssl-dev
centos:
yum install openssl
yum install openssl-devel
1Войдите в каталог сертификатов.
cd /etc/nginx/sslkey
2Создайте локальный закрытый ключ
openssl genrsa -out ssl.key 2048
3Следуйте инструкциям для входа
openssl req -new -key ssl.key -out ssl.csr
4 Создать сертификатcrt
openssl x509 -req -days 1460 -in ssl.csr -signkey ssl.key -out ssl.crt
5создавать Сертификатpem
openssl dhparam -out ssl.pem 2048
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
ssl_certificate /etc/nginx/sslkey/ssl.crt;
ssl_certificate_key /etc/nginx/sslkey/ssl.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!KRB5:!aECDH:!EDH+3DES;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
}
Проверьте элементы конфигурации и перезапустите
nginx -t
nginx -s reload
Самозаверяющий сертификат — это сертификат, созданный самим администратором сервера, а не выданный центром сертификации. Этот тип сертификата обеспечивает тот же уровень шифрования, но не обеспечивает доверия третьей стороны для проверки личности. Самозаверяющие сертификаты обычно используются во внутренних сетях, тестовых средах или других сценариях, где не требуется публичное доверие. Основная проблема с использованием самозаверяющего сертификата заключается в том, что браузеры предупреждают пользователя о том, что сертификат не является доверенным, поскольку он не был выдан известным центром сертификации. Пользователям необходимо вручную добавить исключение или доверять сертификату, прежде чем они смогут получить доступ к веб-сайту.
Всего в этой статье 1401 слово, а среднее время чтения ≈ 4 минуты.