Table of Contents

Конвертация серверного сертификата из 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