Содержание
Проверка сервиса на валидность сертификата:
openssl s_client -servername some-site.org -connect some-site.org:443 2>/dev/null | openssl x509 -noout -dates
для Windows /dev/null меняем на просто NUL
Вариант для скриптов мониторинга Zabbix (передаем в параметрах сайт и порт):
echo | openssl s_client -servername $1 -connect $1:$2 2>/dev/null | openssl x509 -noout -dates | grep notAfter | awk -F = '{ print $2 }' | awk 'BEGIN {OFS = "-"} {print $1,$2,$4}'
Проверка серта по датам и объкту:
openssl x509 -noout -dates -subject -in cert.pem
Проверка ключа:
openssl rsa -noout -text -in cert.pem
Тоже для запроса сертификата:
openssl req -noout -text -in cert.pem
Сравнить контрольные суммы ключа, серта и запроса:
# openssl rsa -noout -modulus -in server.key | openssl md5
# openssl x509 -noout -modulus -in server.crt | openssl md5
# openssl req -noout -modulus -in server.csr | openssl md5
Формирование самоподписного сертификата с ключом
openssl req -newkey rsa:2048 -nodes -keyout domain.key -x509 -days 365 -out domain.crt
- req – это генерация запросов на подпись сертификата, но если мы задаём ключ “-x509”, это означает, что мы генерируем самоподписанный сертификат.
- -newkey rsa:2048 – если у нас ещё нет ключа, мы добавляем данный параметр, что бы ключ был создан автоматически. Указываем параметры ключа.
- -days 365 – указываем количество дней, в течении которых будет действовать данный сертификат.
- -keyout domain.key – параметр нужен, так как мы указали newkey и генерируем новый ключ. Указываем в какой фал положим ключ.
- -out domain.crt – сюда положим наш сертификат.
- -nodes – не шифровать ключ (без пароля).
Спасибо за подсказку: pechenek.net и losst.ru
При формировании серта для IP есть тонкость: IP пишем в SAN (Server Alternate Name). Для этого формируем файл конфигурации (допустим с именем san.cnf):
[req] default_bits = 2048 distinguished_name = req_distinguished_name req_extensions = req_ext x509_extensions = v3_req prompt = no [req_distinguished_name] countryName = XX stateOrProvinceName = N/A localityName = N/A organizationName = Self-signed certificate commonName = 120.0.0.1: Self-signed certificate [req_ext] subjectAltName = @alt_names [v3_req] subjectAltName = @alt_names [alt_names] IP.1 = 127.0.0.1 IP.2 = 10.12.15.111
В команду формирования ключа добавить ключ указания на данный конфиг:
-config san.cnf
Конвертирование CRT/PEM в PFX
openssl pkcs12 -export -out cert-https.pfx -inkey domain.key -in FullChainBundle.pem