536 字
3 分鐘
[背景知識] 憑證的格式 PEM 與 DER | 自然人憑證開發筆記

PEM(Privacy Enhanced Mail)和 DER(Distinguished Encoding Rules)是兩種常見的二進位編碼格式,通常用於表示加密和數位簽章相關的資料,如憑證、公鑰和私鑰。
DER (Distinguished Encoding Rules):
- 格式: DER 是二進位編碼格式,不同於PEM,它不包含Base64編碼,而是使用二進位形式直接表示資料。
- 副檔名: .der、.cer
- 使用情境: DER 格式主要在二進位環境中使用,例如在ASN.1(Abstract Syntax Notation One)資料結構中傳輸資料。在網路協議和標準中,通常使用DER格式進行資料的編碼和解碼。
PEM (Privacy Enhanced Mail)
- 格式: PEM 是基於將 DER 內容做Base64 編碼的 ASCII 文字,並且以
-----BEGIN-----和-----END-----標記括住。 - 副檔名:.pem
- 使用情境: PEM 格式廣泛用於憑證、公鑰和私鑰等資料,並且由於其易於人類閱讀的 ASCII 格式,很容易在文字檔中存儲和交換。
副檔名
我們常看到憑證的副檔名有 .der、.pem、.crt、.cer 等等,這其中有兩種含義:
一、以檔案的格式為副檔名
.der、.pem 如上述就是以檔案格式來分類。.der 為二進制,.pem 為 .der 的 base64 加上前後標籤。
二、以檔案的類型為副檔名
.crt、.cer 為憑證,.key 為金鑰,.pfx 為 PKCS12,.csr 為憑證請求檔。但不代表檔案的格式為 .pem 或 .der,可能是其中之一的格式。以 Windows 系統為例,他能夠同時解析上述兩種格式的憑證 .crt。
各種 PEM
憑證的 PEM
-----BEGIN CERTIFICATE-----MIIDyzCCArKgAwIBAgIJANnVbBfqVVzMMA0GCSqGSIb3DQEBCwUAMIGAMQswCQYDVQQGEwJVUzELMAkGA1UECAwCVloxCzAJBgNVBAcMAlZaMQswCQYDVQQKDAJPTjELMAkGA1UECwwCUEQxDTALBgNVBAMMBHRlc3QxHjAcBgkqhkiG9w0BCQEWD2luc2lkZUBleGFtcGxlLmNvbTAeFw0yMjAxMjcxNjE1MTZaFw0yMjAyMTcxNjE1MTZaMIGA...-----END CERTIFICATE-----公鑰的 PEM
-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1ymUuKnPRw99S1wMbEJtnKv7lTOyYryYiXAlRjQznFYSaLVa8TACplEKEiLPO2A3aJG9tJf6ObMRiOhKnuGIE9QJ+ByNOqJZM3mTHm/hAnX0N8d7WCozrJGyXlrb4I/JNkwTFx8DWggT+0rLPTCs...-----END PUBLIC KEY-----私鑰的 PEM
-----BEGIN PRIVATE KEY-----MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDXKZS4qc9HD31LXAxsQm2cq/uVM7JivJiJcCVGNDOcVhJotVrxMAqmUQoSIs87YDdomGjbRvSX+jmzEYjoSpe4YgT1An4HI06olkzeZMeb+ECdfQ3x3tYKjOskbJeWtvgj8k2TBMXHwNa...-----END PRIVATE KEY-----PKCS7 的 PEM
-----BEGIN PKCS7-----MIIDrDCCApSgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBiTELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB1ZhbGlkYXRlMRAwDgYDVQQHEwdWYWxpZGF0ZTEOMAwGA1UEChMFbXlzdGVsbDEUMBIGA1UECxMLRGV2ZWxvcG1lbnQxFzAVBgNVBAMTDnd3dy5leGFt...-----BEGIN PKCS7-----PKCS12 的 PEM
-----BEGIN PKCS12-----MIICyDCCAbCgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAyMQswCQYDVQQGEwJVUzELMAkGA1UECAwCVloxCzAJBgNVBAcMAlZaMQswCQYDVQQKDAJPTjEUMBIGA1UEAwwLdGVzdC1jcnlwdG8wHhcNMjAwNTA5MjIwMDAwWhcNMjAwNTA5MjIwMDAwWjAyMQsw...-----END PKCS12-----結論
PEM 是一種基於 Base64 的 ASCII 文字格式,而 DER 是一種二進位格式。在實際應用中,PEM 格式更易於人閱讀,而 DER 格式則更適合在二進位環境中使用。
自然人憑證讀出來的憑證、公鑰、PKCS7 都為 DER 的 Base64,等於是 PEM 去頭去尾中間那段。