Как определить тип сертификата из файла - PullRequest
25 голосов
/ 12 ноября 2009

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

Ответы [ 2 ]

38 голосов
/ 13 ноября 2009

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

  • стандарт 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 голосов
/ 07 марта 2017

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...