Конвертация серверного сертификата из pfx в pem
openssl pkcs12 -in yourpfxfile.pfx -nocerts -out privatekey.pem -nodes openssl pkcs12 -in yourpfxfile.pfx -nokeys -out publiccert.pem -nodes
Конвертация клиентского сертификата из PKCS12 в pem
openssl pkcs12 -in anisimov.ss@sberleasing.ru.p12 -out ca.pem -cacerts -nokeys openssl pkcs12 -in anisimov.ss@sberleasing.ru.p12 -out client.pem -clcerts -nokeys openssl pkcs12 -in anisimov.ss@sberleasing.ru.p12 -out key.pem -nocerts
Удалить пароль с ключа
Чтобы сделать приватный ключ доступным без ввода пароля:
openssl rsa -in key.pem -out key_nopasswd.pem
Для ключей SSH можно делать то же самое с помощью ssh-keygen
ssh-keygen -f ~/.ssh/prodci_key_passwd -p
Сгенерить публичный ключ из приватного
openssl rsa -in ~/.ssh/id_rsa -pubout -out ./.ssh/id_rsa.pub
Сгенерить публичный ssh-ключ из приватного
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Проверка сертификата на валидность
openssl verify -verbose -x509_strict -CAfile ./chain.pem ./cert.pem
или если в файле вся цепочка:
openssl verify -verbose -x509_strict -CAfile ./fullchain.pem ./fullchain.pem
Проверка валидности серта на сервере
openssl s_client -connect wiki.autosys.tk:443 -CAfile /etc/ssl/certs
или можно и не указывать путь до CA:
openssl s_client -connect wiki.autosys.tk:443
Проверить даты валидности сертификата:
echo | openssl s_client -servername server.domain.local -connect host.domain.local:443 2>/dev/null | openssl x509 -noout -dates
Проверка даты до которой валиден сертификат
openssl x509 -enddate -noout -in ./cert.crt
Скачать сертификат сервера в файл
openssl s_client -showcerts -connect ya.ru:443 </dev/null > chain.pem
Чтобы получить полную цепочку сертификатов сервера без всяких ненужных текстовых данных (только то что между строками
-----BEGIN CERTIFICATE-----
и
-----END CERTIFICATE------
делаем так:
openssl s_client -showcerts -connect nexus.rdleas.ru:443 </dev/null 2>/dev/null | awk '/BEGIN/ { i++; } /BEGIN/, /END/ { print }' > clean_chain.pem
Посмотреть сертификаты сервера
Для сервера с SNI (указывая име сервера с помощью -servername):
openssl s_client -showcerts -servername www.example.com -connect www.example.com:443 </dev/null
Без SNI:
openssl s_client -showcerts -connect www.example.com:443 </dev/null
А посмотреть содержимое серта в удобном виде так:
openssl s_client -servername www.example.com -connect www.example.com:443 2>/dev/null | openssl x509 -text
Посмотреть SSL сертификат сервера Postgresql
openssl s_client -starttls postgres -connect server_name.domain.com:6432
Проверить дату валидности сертификата на сервере Postgresql :
echo | openssl s_client -starttls postgres -CAfile ~/selectel_psql_ca.pem -connect server_name.domain.com:6432 2>/dev/null | openssl x509 -noout -dates
Проверить соответствие ключа и сертификата
Должны совпадать значения хешей md5:
openssl x509 -noout -modulus -in <filename>.cert.pem | openssl md5 openssl rsa -noout -modulus -in <filename>.key | openssl md5
И для CSR:
openssl req -noout -modulus -in .csr | openssl md5
Discussion