web-dev-qa-db-ja.com

ファイルから証明書タイプを判別する方法

OpenSSL証明書の標準的な命名規則はありませんので、タイプに関係なく、OpenSSL証明書に関する重要な情報を取得する簡単なコマンドがあるかどうかを知りたいです。少なくとも証明書の種類(x509、RSA、DSA)と、それが公開キーか秘密キーかを知りたいです。 PKCS12ファイルから抽出したばかりの証明書の内容を見ると、どちらも明示的に示されていません。

25
l0b0

まず、いくつかの用語の問題があります。

  • x509標準は証明書を定義し、RSAとDSAはこれらの証明書で使用できる公開鍵アルゴリズムの2つです。
  • 証明書は公開鍵を保持するために使用され、秘密鍵は使用されません。
  • PKCS#12は、X509クライアント証明書と対応する秘密鍵、および(オプションで)X509クライアント証明書に署名したCAのX509証明書を保持できるコンテナの標準です。

したがって、PKCS#12ファイル(通常は.p12拡張子)を調べている場合は、次のことを既に知っています。

  • これには、公開鍵を含む少なくとも1つの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キーかを(キーサイズとともに)確認できるフィールドが含まれています。

39
caf

証明書は特定の使用に制限することもできます。

たとえば、認証局として使用できないように制限されている場合があります。 このStackOverflowの投稿 の詳細も参照してください。

0
Wilt