天天看點

數字證書常見格式整理

數字證書常見标準

  • 符合PKI ITU-T X509标準,傳統标準(.DER .PEM .CER .CRT)
  • 符合PKCS#7 加密消息文法标準(.P7B .P7C .SPC .P7R)
  • 符合PKCS#10 證書請求标準(.p10)
  • 符合PKCS#12 個人資訊交換标準(.pfx *.p12)

    X509是數字證書的基本規範,而P7和P12則是兩個實作規範,P7用于數字信封,P12則是帶有私鑰的證書實作規範。

x509

基本的證書格式,隻包含公鑰。

x509證書由使用者公共密鑰和使用者辨別符組成。此外還包括版本号、證書序列号、CA辨別符、簽名算法辨別、簽發者名稱、證書有效期等資訊。

PKCS#7

Public Key Cryptography Standards #7。

PKCS#7一般把證書分成兩個檔案,一個公鑰、一個私鑰,有PEM和DER兩種編碼方式。PEM比較多見,是純文字的,一般用于分發公鑰,看到的是一串可見的字元串,通常以.crt,.cer,.key為檔案字尾。DER是二進制編碼。

PKCS#7一般主要用來做數字信封。

PKCS#10

證書請求文法。

PKCS#12

Public Key Cryptography Standards #12。

一種檔案打包格式,為存儲和釋出使用者和伺服器私鑰、公鑰和證書指定了一個可移植的格式,是一種二進制格式,通常以.pfx或.p12為檔案字尾名。

使用OpenSSL的pkcs12指令可以建立、解析和讀取這些檔案。

P12是把證書壓成一個檔案,xxx.pfx 。主要是考慮分發證書,私鑰是要絕對保密的,不能随便以文本方式散播。是以P7格式不适合分發。.pfx中可以加密碼保護,是以相對安全些。

PKCS系列标準

實際上PKCS#7、PKCS#10、PKCS#12都是PKCS系列标準的一部分。互相之間并不是替代的關系,而是對不同使用場景的定義。

證書編碼格式

PEM和DER兩種編碼格式。

PEM

Privacy Enhanced Mail

檢視内容,以"-----BEGIN..."開頭,以"-----END..."結尾。

檢視PEM格式證書的資訊:openssl x509 -in certificate.pem -text -noout

Apache和*NIX伺服器偏向于使用這種編碼格式。

DER

Distinguished Encoding Rules

打開看是二進制格式,不可讀。

檢視DER格式證書的資訊:openssl x509 -in certificate.der -inform der -text -noout

Java和Windows伺服器偏向于使用這種編碼格式。

各種字尾含義

檔案的内容和字尾沒有必然的關系,但是一般使用這些字尾來表示這是什麼檔案。

JKS

Java Key Store(JKS)。

CSR

證書請求檔案(Certificate Signing Request)。

這個并不是證書,而是向權威證書頒發機構獲得簽名證書的申請,其核心内容是一個公鑰(當然還附帶了一些别的個人資訊)。

檢視的辦法:openssl req -noout -text -in my.csr,DER格式的話加上-inform der。

CER

一般指使用DER格式的證書。

CRT

證書檔案。可以是PEM格式。

KEY

通常用來存放一個公鑰或者私鑰。

檢視KEY的辦法:openssl rsa -in mykey.key -text -noout

如果是DER格式的話,同理應該這樣了:openssl rsa -in mykey.key -text -noout -inform der

這是使用RSA算法生成的key這麼檢視,DSA算法生成的使用dsa參數。

CRL

證書吊銷清單 (Certification Revocation List),是一種包含撤銷的證書清單的簽名資料結構。

繼續閱讀