2009-11-12 1 views
17

Существует не какое-либо стандартное соглашение об именах для сертификатов OpenSSL, поэтому я хотел бы знать, есть ли простая команда для получения важной информации о любом сертификате OpenSSL, независимо от того, тип. Я хотел бы узнать, по крайней мере, тип сертификата (x509, RSA, DSA) и является ли он открытым или закрытым ключом. Глядя на содержимое сертификата, которое я только что извлек из файла PKCS12, ни одно из них явно не показано.Как определить тип сертификата из файла

ответ

29

Во-первых, у вас есть несколько терминологических проблем:

  • стандарт X509 определяет сертификаты, и RSA и DSA являются два из открытых ключей алгоритмов, которые могут быть использованы в этих сертификатов;
  • сертификаты используются для хранения открытых ключей и никогда не закрытых ключей.
  • PKCS # 12 является стандартом для контейнера, в котором могут храниться клиентские сертификаты X509 и соответствующие закрытые ключи, а также (опционально) сертификаты X509 ЦС, которые подписывали сертификаты клиента X509.

Так что, если вы рассмотрении PKCS # 12 файл (обычно .p12 расширение), то вы уже знаете:

  • Она содержит по крайней мере один клиентский сертификат X509, который содержит открытый ключ ; и
  • Он содержит соответствующие закрытые ключи.

Все, что вы не знаете, являются ли эти сертификаты & частным ключом RSA или DSA. Вы можете проверить это путем извлечения сертификата (ов), а затем изучить их:

openssl pkcs12 -in mycert.p12 -clcerts -nokeys -out mycert.crt 
openssl x509 -in mycert.crt -text 

Текст вывод команды openssl x509 должен включать Subject Public Key раздел, который будет включать в себя поля, которые позволяют увидеть если это RSA или DSA (вместе с размером ключа).

0

Сертификаты также могут быть ограничены определенным использованием.

Например, он может быть ограничен, так что он не может использоваться в качестве центра сертификации. Читайте также в this StackOverflow post.