Про установку SSL-сертификатов на веб-сервер написано достаточно много, и обычно этот вопрос не вызывает сложности у системных администраторов. Однако непосредственно перед установкой неплохо сделать несколько проверок, чтоб не созерцать в браузере досадное «The site's security certificate is not trusted!» (Сертификат безопасности сайта не является доверенным!). Особенно это актуально, когда сертификаты вы получаете не от регистратора, а от заказчика, который может, к примеру, перепутать приватные ключи или выслать сертификат в формате своего текстового редактора с добавлением мусора форматирования.
Таким образом, чтоб всё и сразу заработало, перед установкой SSL-сертификата желательно сделать несколько проверок.
Итак, приступим…
1. Проверяем целостность сертификата:
Если на выходе получим его модуль, то целостность сертификата не нарушена. В противном случае будет ошибка: «unable to load certificate».
2. Аналогично проверяем целостность приватного ключа:
3. Смотрим сроки действия сертификата:
4. Проверяем сертификат на предмет отзыва.
5. Проверяем соответствие сертификата и приватного ключа:
Если результаты получились одинаковые, значит, сертификат и приватный ключ соответствуют друг другу.
Если нужно установить пару SSL-сертификатов в год, то вышеперечисленных команд вполне достаточно. Однако, когда приходится работать с сертификатами регулярно, то лучше всего воспользоваться уже готовыми скриптами. В качестве примера рискну предложить собственную разработку под bash. Скрипты сделают все эти действия без лишних телодвижений с вашей стороны (тестировалось в Ubuntu, но скорее всего будет работать и в других дистрибутивах Линукс).
Проверка сертификата и приватного ключа на целостность и соответствие друг другу:
Проверка сроков действия сертификата и на отсутствие его в списках отзыва:
Вышеописанные тесты закрывают те проблемы установки SSL-сертификатов, с которыми мне когда-либо приходилось сталкиваться на практике. Но если вы считаете, что стоит проверять ещё какие-либо параметры, делитесь в комментариях, буду благодарен.
Таким образом, чтоб всё и сразу заработало, перед установкой 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-сертификатов, с которыми мне когда-либо приходилось сталкиваться на практике. Но если вы считаете, что стоит проверять ещё какие-либо параметры, делитесь в комментариях, буду благодарен.