Устанавливаем SSL-сертификат на веб-сервер Apache под Linux
Зачем нужен SSL-сертификат
Secure Sockets Layer — уровень защищённых сокетов. По сути это означает: шифрование, аутентификацию и проверку целостности данных. Без SSL-сертификата:
- веб-сервер может отдавать контент по протоколу https, но браузер будет слева в адресной строке подсвечивать протокол красным и сообщать, что соединение не защищено;
- поисковики Яндекс и Google будут ранжировать ваш сайт ниже конкурентов с валидными SSL-сертификатами;
- страницу вашего сайта смогут за дефейсить хакеры, т.е. открыть сайт, который в доменном имене будет отличаться от вашего на один символ;
- если не включить принудительный редирект на https в настройках веб-сервера, то трафик будет идти по http без шифрования;
- без SSL-сертификата вы не сможете принимать платежи на сайте.
Хакеры, конечно, могут получить SSL-сертификат и на схожий домен, но для серьёзного сертификата им потребуется компания, а это уже целая история, время, расходы и куча следов.
И не факт, что они ещё получат сертификат на домен, который до степени смешения похож на другой, на сайт, которого нет в поисковиках.
Какие бывают SSL-сертификаты и чем они отличаются
- Self-Signed Certificate (cамоподписанный) — бесполезный и бесплатный. Его можно сгенерировать самому и тут нет удостоверяющего центра. Уровень доверия нулевой.
- SGC (Server Gated Cryptography) — сертификат с высоким уровнем шифрования для старых браузеров. Браузеры настолько старые, что смысла в нём нет.
- SAN/UCC (United Communications Certificate) — мультидоменный сертификат для Microsoft Exchange.
- Code Signing — для разработчиков, чтобы подписывать программное обеспечение, чтобы была гарантия, что это оригинальный дистрибутив и никто не внёс туда изменений.
- Wildcard SSL Certificate (и на все поддомены) — на домен и все поддомены. Но это не может быть сертификат с расширенной проверкой организации.
- Domain Validation (DV SSL) — проверка домена — проверяется только то, что вы собственник домена. Подойдёт физическим лицам, у которых на сайте нет передачи данных пользователей, коммерческой деятельности.
- Organization Validation (OV SSL) — проверка организации. В браузере не будет в адресной строке отображаться зелёным цветом сертификат.
- Extended Validation (EV SSL) — с расширенной проверкой организации. Зелёным будет отображаться в адресной строке. Такой сертификат следует приобретать, если ведётся коммерческая деятельность или передаются персональные данные. Есть варианты Multi-Domain, т.е. включить заданный список дополнительных доменов, которые не обязательно должны быть поддоменами.
Цена SSL-сертификатов слабо зависит от его типа, поэтому, если у вас организация, то получайте Extended Validation (EV SSL) сертификат. При покупке SSL-сертификата полезно, чтобы он распространялся и на поддомены, если они у вас, конечно, есть.
Ещё у SSL-сертификатов есть такой параметр как гарантия. Это количество денег, которое вам выплатит удостоверяющий центр, если ваш сайт взломают именно по причине дыры в SSL-сертификате. Пока о подобных случаях слышать не приходилось. Сайты взламывают из-за кривых рук и разгильдяйства разработчиков. Перехватить и расшифровать трафик — задача совершенно другого порядка сложности.
Установка SSL-сертификата
Итак, вы приобрели сертификат. Теперь его нужно установить к вам на сайт. Здесь мы рассмотрим установку на сайт под управлением веб-сервера Apache.
yum install mod_ssl #устанавливаем модуль SSL веб-сервера Apache vi /etc/httpd/conf.d/puzzle.itsoft.ru.conf # редактируем конфиг сайта добавляем строки с SSL и Redirect <VirtualHost *:80> ServerName puzzle.itsoft.ru ServerAlias www.puzzle.itsoft.ru Redirect 301 / https://puzzle.itsoft.ru/ </VirtualHost> <VirtualHost *:443> ServerName puzzle.itsoft.ru ServerAlias www.puzzle.itsoft.ru DocumentRoot /site/puzzle/public SSLEngine on SSLCertificateFile /etc/ssl/itsoft.ru-wc-dv/itsoft_star.crt SSLCertificateKeyFile /etc/ssl/itsoft.ru-wc-dv/itsoft_star.key SSLCertificateChainFile /etc/ssl/itsoft.ru-wc-dv/itsoft_star.crt <Directory /site/puzzle/public> Options FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog /site/puzzle/logs/error.log CustomLog /site/puzzle/logs/access.log common </VirtualHost> #сохраняем конфиг apachectl configtest #тестируем конфиги веб-сервера Apache systemctl restart httpd #перезапускаем веб-сервер Apache
В браузере вводим адрес нашего сервера и проверяем, что Apache работает и есть сертификат.
Важно учесть
Весь контент на сайте должен отдаваться по https и загружаться тоже по https. Это касается каких-то внешних библиотек, шрифтов, картинок, где есть внешняя ссылка http://. Веб-мастер Яндекса подскажет вам есть ли у вас такой контент. Если есть, то сайт не получит значок Защищённое соединение. Если хотя бы какая-то часть контента страницы подгружается по http://, то вся страница уже не может считаться безопасной.
В интернет встречаются и другие советы как сделать редирект. Например, с помощью mod_rewrite. Но это всё же не то. Этот модуль предназначен для других целей.