Установка сертификата на сайт
Пришлось освоить новое, поэтому новый пост. Жаль, что для всего нового, что я узнаю, не получается написать пост, а то пришлось бы по несколько постов в неделю ваять. :-)
На этот раз я устанавливал сертификаты для сайтов. Сайты рабочие и все под NDA, поэтому пишу максимально обезличено, без упоминаний реальных имен, все совпадения случайны. :-)
Зачем нужен SSL сертификат
- безопасное соединение между браузером и сервером, все передаваемые данные шифруются, используется протокол https
- Google и другие поисковики сайты с поддержкой https выдают выше в результатах поиска
- современные браузеры скоро будут неистово ругаться на сайты без https
Установка SSL-сертификата на сайт
- Нужно сгенерировать ключ и запрос на выпуск сертификата CSR (Certificate Signing Request)
openssl req -new -newkey rsa:2048 -nodes -keyout my_domain.key -out my_domain.csr
- запустится мастер, в котором нужно будет ответить на вопросы (один из важных вопросов это код страны, который обязательно нужно указать по стандарту ISO 3166-1)
- результатом работы будет два файла
my_domain.key
, его не отдавайте никому, это секретный ключmy_domain.csr
, он нужен будет для генерации сертификата, по сути это публичный ключ, в нем содержится информация, которую вы вводили, ее можно просмотреть с помощью какого-нибудь CSR-Decoder, например этого
- Дальше оформляется заявка на выпуск сертификата, содержимое файла
my_domain.csr
нужно будет отправить на сервер, который выдает сертификаты обычно за деньги (я пользовался этим), но есть и бесплатные варианты - после этого нужно провести валидацию сертификата, тут есть три варианта
- самый простой, с помощью электронной почты в том домене, к которому вы делаете сертификат, она указывается во время выбора типа валидации
- с помощью файла, загруженного на веб-сайт, он должен быть с определенным именем и содержанием и доступен по определенному пути, сам файл можно будет скачать на сервере, который выдает сертификаты, там же и путь узнаете, куда его положить
- третий вариант, сделать определенную запись на DNS-сервере, подробности тоже сервис по выдаче сертификатов предоставит
- после прохождения валидации, сертификат придет на почту, которую вы указали при генерации CSR, останется его установить
- нужно из пришедших файлов сертификата (файлы
my_domain.crt
иmy_domain.ca-bandle
) сгенерировать цепочку сертификатов с помощью командыcat my_domain.crt my_domain.ca-bundle >> cert_chain.crt
- получившийся файл
cert_chain.crt
(его лучше переименовать, особенно если у вас несколько сайтов на сервере) и файл с ключомmy_domain.key
нужно скопировать на сервер с сайтом, например в директорию/etc/nginx/cert/
- в конфиге nginx для этого домена настроить постоянную переадресацию 301 с http на https прописать пути к ключу и сертификату, включить ssl, прописать порт 443, вот вам кусок конфига:
- нужно проверить, есть ли ошибки в конфиге
sudo nginx -t
, при ошибке в консоли появится соответствующее сообщение - останется перезапустить сервис nginx
sudo service nginx restart
илиsudo nginx -s reload
, если ошибок в конфиге не будет, то сервис успешно перезапустится и https заработает - с помощью сервиса https://www.sslshopper.com/ssl-checker.html проверьте, что на вашем сайте реально работает https
В целом ничего сложного, вопросы можно попробовать задать в мой Telegram @demshin.
P.S. Много полезного про SSL-сертификаты можно прочитать в прекрасной статье на Хабре.