2019年12月16日

SSL container formats

在處理 SSL 以及 TLS 的時候,常需要利用 openssl 或是 java 的 keytool 產生憑證,而憑證通常會存放在某種規格的檔案中,而且不同的 client 通常支援了不同的憑證格式,例如常見的 .crt .pem 等等,以下我們試著去了解一下這些存放憑證的檔案規格。

  • .csr

  1. 這是 Certificate Signing Request 的簡稱
  2. 實際上的格式是 RFC2986 定義的 PKCS10
  3. 裡面包含了所有詳細的憑證資料,例如 subject, organization, state
  4. 用在數位簽章

  • .pem

  1. 這是 Privacy Enhanced Email 的簡稱
  2. 定義在 RFC 1421 ~ 1424
  3. 這是一種 container format,通常只會存放 public certificate
  4. 可以存放整個 certificate chain,包含了 public key, private key 與 root certificates
  5. 這是一個失敗的 email 加密方法,但儲存憑證的格式卻有被廣泛使用
  6. Base64 encoded ACII files

  • .key

  1. 這是 .pem 格式的檔案,只會存放 private key
  2. 這是既定俗成的一個副檔名,並不是一種標準的檔案格式

  • .der .cer .crt

  1. Distinguished Encoding Rules 的簡稱
  2. 是一種 binary format of encoding a data value of any data types including nested data structures
  3. 是一種 ASN.1 的編碼規則
  4. 規格定義在 ITU-T X.690
  5. windows 預設會將憑證輸出為 .der 格式的檔案

  • .p7b .p7c

  1. 定義在 RFC 2315
  2. 存放 Certificates & Chain certificates,不包含 private key
  3. Base64 encoded ASCII files

  • .pkcs12 .pfx .p12

  1. 由 RSA 定義在 Public-Key Cryptography Standards 這個規格中
  2. 必須用一個密碼才能打開這個 container 檔案
  3. 裡面儲存了 public 與 private certificate pairs 憑證
  4. 跟 .pem 檔案不同,檔案本身就有用密碼加密
  5. 可利用以下這個指令將 .p12 檔案裡面的 public 與 private keys 轉換成 .pem

    openssl pkcs12 -in a.p12 -out a.pem -nodes
  6. 常用在 Windows OS,這是用來匯入或匯出 certificates and Private keys

  • .crl

  1. Certificate Revocation List 的簡稱
  2. 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

沒有留言:

張貼留言