Подготовка SSL-сертификатов к установке

в 22:28, , рубрики: bash, ssl сертификаты, информационная безопасность, Серверное администрирование

Про установку SSL-сертификатов на веб-сервер написано достаточно много, и обычно этот вопрос не вызывает сложности у системных администраторов. Однако непосредственно перед установкой неплохо сделать несколько проверок, чтоб не созерцать в браузере досадное «The site's security certificate is not trusted!» (Сертификат безопасности сайта не является доверенным!). Особенно это актуально, когда сертификаты вы получаете не от регистратора, а от заказчика, который может, к примеру, перепутать приватные ключи или выслать сертификат в формате своего текстового редактора с добавлением мусора форматирования.

Таким образом, чтоб всё и сразу заработало, перед установкой SSL-сертификата желательно сделать несколько проверок.

Итак, приступим…

1. Проверяем целостность сертификата:

openssl x509 -noout -modulus -in certificate.crt

Если на выходе получим его модуль, то целостность сертификата не нарушена. В противном случае будет ошибка: «unable to load certificate».

2. Аналогично проверяем целостность приватного ключа:

openssl rsa -noout -modulus -in privatekey.key

3. Смотрим сроки действия сертификата:

openssl x509 -noout -text -in certificate.crt | grep -e "Not Before" -e "Not After"

4. Проверяем сертификат на предмет отзыва.

5. Проверяем соответствие сертификата и приватного ключа:

openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privatekey.key | openssl md5

Если результаты получились одинаковые, значит, сертификат и приватный ключ соответствуют друг другу.

Автоматизация

Если нужно установить пару SSL-сертификатов в год, то вышеперечисленных команд вполне достаточно. Однако, когда приходится работать с сертификатами регулярно, то лучше всего воспользоваться уже готовыми скриптами. В качестве примера рискну предложить собственную разработку под bash. Скрипты сделают все эти действия без лишних телодвижений с вашей стороны (тестировалось в Ubuntu, но скорее всего будет работать и в других дистрибутивах Линукс).

wget https://raw.githubusercontent.com/o-pod/security/master/ssl-check-matching.sh
chmod a+x ssl-check-matching.sh
wget https://raw.githubusercontent.com/o-pod/security/master/ssl-check-revoc.sh
chmod a+x ssl-check-revoc.sh

Проверка сертификата и приватного ключа на целостность и соответствие друг другу:

./ssl-check-matching.sh certificate.crt privatekey.key -v

Проверка сроков действия сертификата и на отсутствие его в списках отзыва:

./ssl-check-revoc.sh -f  certificate.crt -v

Вышеописанные тесты закрывают те проблемы установки SSL-сертификатов, с которыми мне когда-либо приходилось сталкиваться на практике. Но если вы считаете, что стоит проверять ещё какие-либо параметры, делитесь в комментариях, буду благодарен.

Автор: o-pod

Источник

* - обязательные к заполнению поля