2009-11-12 42 views
17

似乎沒有任何標準的OpenSSL證書的命名約定,所以我想知道是否有一個簡單的命令來獲取有關任何OpenSSL證書的重要信息,無論類型。我想知道至少證書類型(x509,RSA,DSA)以及它是公鑰還是私鑰。查看我剛剛從PKCS12文件中提取的證書的內容,這些都沒有明確顯示。如何從文件中確定證書類型

回答

29

首先,你有幾個術語問題:

  • 的X509標準定義了證書和RSA和DSA是兩種可以在這些證書中使用的公鑰算法;
  • 證書用於保存公鑰,而不用私鑰。
  • PKCS#12是一個容器的標準,它可容納X509客戶端證書和相應的私鑰以及(可選)簽署X509客戶端證書的CA的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