在處理 SSL 以及 TLS 的時候,常需要利用 openssl 或是 java 的 keytool 產生憑證,而憑證通常會存放在某種規格的檔案中,而且不同的 client 通常支援了不同的憑證格式,例如常見的 .crt .pem 等等,以下我們試著去了解一下這些存放憑證的檔案規格。
.csr
- 這是 Certificate Signing Request 的簡稱
- 實際上的格式是 RFC2986 定義的 PKCS10
- 裡面包含了所有詳細的憑證資料,例如 subject, organization, state
用在數位簽章
.pem
- 這是 Privacy Enhanced Email 的簡稱
- 定義在 RFC 1421 ~ 1424
- 這是一種 container format,通常只會存放 public certificate
- 可以存放整個 certificate chain,包含了 public key, private key 與 root certificates
- 這是一個失敗的 email 加密方法,但儲存憑證的格式卻有被廣泛使用
Base64 encoded ACII files
.key
- 這是 .pem 格式的檔案,只會存放 private key
這是既定俗成的一個副檔名,並不是一種標準的檔案格式
.der .cer .crt
- Distinguished Encoding Rules 的簡稱
- 是一種 binary format of encoding a data value of any data types including nested data structures
- 是一種 ASN.1 的編碼規則
- 規格定義在 ITU-T X.690
windows 預設會將憑證輸出為 .der 格式的檔案
.p7b .p7c
- 定義在 RFC 2315
- 存放 Certificates & Chain certificates,不包含 private key
Base64 encoded ASCII files
.pkcs12 .pfx .p12
- 由 RSA 定義在 Public-Key Cryptography Standards 這個規格中
- 必須用一個密碼才能打開這個 container 檔案
- 裡面儲存了 public 與 private certificate pairs 憑證
- 跟 .pem 檔案不同,檔案本身就有用密碼加密
可利用以下這個指令將 .p12 檔案裡面的 public 與 private keys 轉換成 .pem
openssl pkcs12 -in a.p12 -out a.pem -nodes
常用在 Windows OS,這是用來匯入或匯出 certificates and Private keys
.crl
- Certificate Revocation List 的簡稱
- CA (Certificate Authorities) 會在憑證過期前,產生出來,用來通知使用者這些憑證已經過期了
What is a Pem file and how does it differ from other OpenSSL Generated Key File Formats?
What are the differences between PEM, DER, P7B/PKCS#7, PFX/PKCS#12 certificates
沒有留言:
張貼留言