%META:TOPICINFO{author="roman" comment="reprev" date="1606986355" format="1.1" reprev="1" version="3"}% %META:TOPICPARENT{name="ListOfFaq"}% ---+!! Полезные команды Openssl Если что-то не получается - идите [[https://ssl4less.ru/ssl-tools/convert-certificate.html][сюда]]. При копипасте заменить символ "-". Он наверняка будет не тот. Часть команд требует опции -passout pass:PASSWORD или -passin pass:PASSWORD или обоих вместе. %TOC% ---++ Типы сертификатов * PEM - очень часто используется в Linux based системах или оборудовании, файлы такого формата сертификата используют расширение .cer, .crt, and .pem. * DER - двоичная формат сертификата. DER формат не содержит текста "BEGIN CERTIFICATE/END CERTIFICATE", формат DER чаще всего использует расширение .der * PKCS#7 или P7B - эти форматы сертификата хранятся в формате Base64 ASCII и чаще всего имеют расширения файлов .p7b или .p7c. Файл P7B, кроме самого сертификата содержит цепочку сертификатов (открытых ключей) выпускающих центров сертификации (Intermediate CAs). Этот формат поддерживается в Microsoft Windows и Java Tomcat. * PKCS#12 или PFX - эти форматы представляют собой двоичный формат для хранения сертификата сервера, промежуточных сертификатов и закрытого ключа в одном зашифрованном файле. Файлы такого формата сертификата используют расширение .pfx and .p12. PFX файлы обычно используются на windows машинах для импорта/экспорта сертификатов и закрытого ключа. ---++ Создание нового секретного ключа и запрос на получение сертификата openssl req -out cert.csr -newkey rsa:2048 -nodes -key cert.key Команда генерирует CSR и файл 2048-битногоRSA-ключа. Если вы собираетесь использовать этот сертификат на Apache или Nginx, то необходимо отправить CSR-файл в центр сертификации. Он предоставит вам заверенный сертификат (в формате der или pem), который нужно настроить на веб-сервере Apache или Nginx. ---++ Создание самоподписанного сертификата openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -key selfsigned.key -out sfcert.pem Команда генерирует самозаверенный сертификат и файл 2048-битного RSA-ключа. ---++ Верификация CSR-файла openssl req -noout -text -in cert.csr Верификация необходима, чтобы отправленный в регистрационный центр CSR-файл содержал всю необходимую информацию. ---++ Создание секретного RSA-ключа openssl genrsa -out private.key 2048 ---++ Создание CSR с использованием существующего секретного ключа openssl req -out certificate.csr -keyexisting.key -new Если не хотите создавать новый секретный ключ вместо существующего, выполните приведенную выше команду. ---++ Удаление пароля-фразы из ключа openssl rsa -in certkey.key -out nopassphrase.key Если вы используете составной пароль (фразу) в файле ключа и работаете на Apache, то при каждом запуске нужно вводить секретную фразу. Если вас это раздражает, то можно использовать приведенную выше команду, чтобы удалить пароль-фразу из существующего ключа. ---++ Верификация секретного ключа openss lrsa -in certkey.key -check ---++ Печать содержимого файла сертификата openssl x509 -in certfile.pem -text -noout ---++ Верификация центра сертификации openssl x509 -in certfile.pem -noout -issuer -issuer_hash ---++ Проверка хеш-значения сертификата openssl x509 -noout -hash -in bestflare.pem ---++ Проверка содержимого сертификата в формате PKCS12 openssl pkcs12 -info -nodes -in cert.p12 PKCS12 является двоичным форматом, поэтому вы не сможете просмотреть его содержимое в текстовом редакторе. Для просмотра файла в формате PKCS12 используйте приведенную выше команду. ---++ Проверка даты истечения срока действия PEM-файла openssl x509 -noout -in certificate.pem -dates ---++ Конвертация сертификатов ---+++ Конвертирование x509 в PEM openssl x509 -in certificate.cer -outform PEM -out certificate.pem ---+++ Преобразование формата DER в PEM openssl x509 -inform der -in sslcert.der -out sslcert.pem Центр сертификации предоставляет SSL-сертификат в формате .der. Если вам необходимо использовать его в формате apache или .pem, примените приведенную выше команду для соответствующего преобразования. ---+++ Преобразование формата PEM в DER openssl x509 -outform der -in sslcert.pem -out sslcert.der ---+++ Преобразование сертификата и секретного ключа в формат PKCS#12 openssl pkcs12 -export -out sslcert.pfx -inkey key.pem -in sslcert.crt Если необходимо использовать сертификат с оборудованием принимающим только формат PKCS#12, примените приведенную выше команду. Она генерирует один pfx файл, содержащий сертификат и ключ. Вы также можете включить цепочку сертификатов, передав параметр -chain, как показано в примере ниже. openssl pkcs12 -export -out sslcert.pfx -inkey key.pem -in sslcert.cert -chain cacert.pem ---+++ Конвертирование PEM в P7B openssl crl2pkcs7 -nocrl -certfile certificate.pem -out certificate.p7b -certfile CACert.cer ---+++ Конвертирование PKCS7 в PEM openssl pkcs7 -print_certs -in certificate.p7b -out certificate.pem ---+++ Преобразование формата PKCS12 в PEM-сертификат openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes Если нужно использовать существующий файл в формате pkcs12 на Apache или только в формате pem, в этом поможет приведенная выше команда. ---+++ Конвертирование PFX в PKCS#8 openssl pkcs12 -in certificate.pfx -nocerts -nodes -out certificate.pem openSSL pkcs8 -in certificate.pem -topk8 -nocrypt -out certificate.pk8 ---+++ Конвертирование P7B в PFX openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile cacert.cer ---++ Проверка удалённого хоста ---+++ Проверка SSL-сертификата определенного URL-адреса openssls_client -connect yoururl.com:443 -showcerts ---+++ Проверка срока действия SSL-сертификата для URL-адреса openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout -enddate ---+++ Проверка, принимается ли на URL-адресе определённая версия SSL/TLS openssl s_client -connect secureurl.com:443 -ssl2 openssl s_client -connect secureurl.com:443 -ssl3 openssl s_client -connect secureurl.com:443 -tls1 openssl s_client -connect secureurl.com:443 -tls1_1 openssl s_client -connect secureurl.com:443 -tls1_2 Если необходимо проверить, включен ли SSL V2 / V3 или нет, используйте приведенную выше команду. Если он включен, то вы получите сообщение «CONNECTED», в противном случае -сообщение «handshake failure». ---+++ Проверка того, принимается ли конкретный шифр на URL-адресе openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443 Если шифр будет принят, вы получите сообщение «CONNECTED», иначе - сообщение «handshake failure». -- Main.RomanDmitriev - 15 Nov 2020 %META:PREFERENCE{name="DENYTOPICVIEW" title="DENYTOPICVIEW" type="Set" value="WikiGuest"}% %META:PREFERENCE{name="DENYTOPICCHANGE" title="DENYTOPICCHANGE" type="Set" value="WikiGuest"}% %META:PREFERENCE{name="PERMSET_VIEW" title="PERMSET_VIEW" type="Local" value="registeredusers"}% %META:PREFERENCE{name="PERMSET_CHANGE" title="PERMSET_CHANGE" type="Local" value="registeredusers"}%