воскресенье, 16 октября 2016 г.

Наиболее часто используемые команды OpenSSL

Перевод: The Most Common OpenSSL Commands

Одна из наиболее многофункциональных утилит SSL - это OpenSSL, которая является реализацией протокола SSL с открытым исходным кодом. Существуют версии OpenSSL почти для каждой платформы, включая Windows, Linux и Mac OS X. OpenSSL чаще всего используется для создания запросов на подпись сертификата и приватных ключей для множества различных платформ, включая Apache. Однако, есть ещё сотни различных функций, которые позволяют увидеть информацию из запроса на сертификат или из сертификата, сравнить хэш MD5 сертификата и приватного ключа (чтобы убедиться в том, что они соответствуют друг другу), проверить, что сертификат веб-сайта установлен правильно, преобразовать сертификат в другой формат. Скомпилированную версию OpenSSL для Windows можно найти здесь.

Если вам не хочется разбираться с OpenSSL, то многое из этого можно сделать при помощи наших инструментов для сертификатов SSL. Ниже мы привели наиболее часто используемые команды OpenSSL:

Общие команды OpenSSL

Эти команды позволят вам сгенерировать запрос на подпись сертификата, сертификат, приватный ключ и решить другие задачи.
  • Создание нового приватного ключа и запроса на подпись сертификата:
    openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key
  • Создание самозаверяющего сертификата (за дополнительной информацией обратитесь к статье Как создать и установить самозаверяющий сертификат в Apache):
    openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
  • Создание запроса на подпись сертификата для существующего приватного ключа:
    openssl req -out CSR.csr -key privateKey.key -new
  • Создание запроса на подпись сертификата на основе имеющегося сертификата:
    openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key
  • Удаление ключевой фразы из приватного ключа:
    openssl rsa -in privateKey.pem -out newPrivateKey.pem
Проверка при помощи OpenSSL

Если нужно проверить информацию в сертификате, в запросе на подпись сертификата или в приватном ключе, воспользуйтесь следующими командами. Также можно проверить запрос на подпись сертификата и проверить сертификат с помощью наших интерактивных инструментов.
  • Проверка запроса на подпись сертификата:
    openssl req -text -noout -verify -in CSR.csr
  • Проверка приватного ключа:
    openssl rsa -in privateKey.key -check
  • Проверка сертификата:
    openssl x509 -in certificate.crt -text -noout
  • Проверка файла PKCS#12 (.pfx или .p12):
    openssl pkcs12 -info -in keyStore.p12
Отладка с помощью OpenSSL

При получении сообщения об ошибке, что приватный ключ не соответствует сертификату или что сертификат, установленный на веб-сайт, не заслуживает доверия, попробуйте одну из следующих команд. Если нужно проверить, правильно ли установлен этот сертификат SSL, попробуйте также наш инструмент для проверки SSL.
  • Проверить, что хэш MD5 публичного ключа соответствует указанному в запросе на подпись сертификата или в приватном ключе:
    openssl x509 -noout -modulus -in certificate.crt | openssl md5
    openssl rsa -noout -modulus -in privateKey.key | openssl md5
    openssl req -noout -modulus -in CSR.csr | openssl md5
  • Проверить подключение SSL. Должны отобразиться все сертификаты (включая промежуточные):
    openssl s_client -connect www.paypal.com:443
Преобразование с помощью OpenSSL

Эти команды позволяют преобразовать сертификаты и ключи в различные форматы, совместимые с определёнными типами серверов и программного обеспечения. Например, можно преобразовать обычный файл PEM, который используется с Apache, в файл PFX (PKCS#12) и использовать его с Tomcat или IIS. Воспользуйтесь нашим инструментом для преобразования SSL, чтобы преобразовать сертификаты без помощи OpenSSL.
  • Преобразование файла DER (.crt .cer .der) в PEM:
    openssl x509 -inform der -in certificate.cer -out certificate.pem
  • Преобразование файлов PEM в DER:
    openssl x509 -outform der -in certificate.pem -out certificate.der
  • Преобразование файла PKCS#12 (.pfx .p12), содержащего приватный ключ и сертификат, в PEM:
    openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
    Можно добавить опцию -nocerts, чтобы вывести только приватный ключ, или опцию -nokeys, чтобы вывести только сертификат.
  • Преобразование файла сертификата и приватного ключа PEM в PKCS#12 (.pfx .p12):
    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

1 комментарий:

alexandrk комментирует...

Добрый день. понимаю, что вопрос и дата создания статьи - немного разнятся, но возник вопрос.

при попытке вывести контрольную сумму, я получаю различные ошибки.

openssl req -noout -modulus -in wms-bus1.cert.pem | openssl md5
unable to load X509 request
139739082998208:error:0909006C:PEM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: CERTIFICATE REQUEST
(stdin)= d41d8cd98f00b204e9800998ecf8427e
и значение stdin всегда одно.