天天看點

數字證書掃盲

近段時間做的項目都涉及到與各種支付管道對接。由于涉及到接口調用安全,資金安全等,通常都會使用各種格式的數字證書來保證通訊安全,資料不被竊取,以及保證資料的來源合法。但是數字證書中卻有很多概念,到底各個概念都是什麼含義呢?下來帶大家一起來掃盲。

X.509證書

X.509是公鑰證書的标準格式,定義了證書中應該包含哪些内容。X.509證書在很多網際網路協定裡面都有應用,如TLS/SSL。可用在加密通訊、電子簽名等場景。證書需要包含公鑰、簽名資訊、身份資訊,還可以附帶證書合法性驗證算法、證書吊銷清單等附加資訊。

X.509證書的各種字尾名

X.509證書會有很多不同的字尾名,但有些并不是真正意義上的證書,可能隻是儲存了私鑰的檔案而已。下面列出常見的字尾名及其含義:

  1. pem,隐私增強型電子郵件(Privacy Enhanced Mail)。是der編碼的證書,在用Base64進行編碼而存放的。通常以—–BEGIN CERTIFICATE—–開頭,以—–END CERTIFICATE—–結束。如DigiCert_Global_Root_CA.pem證書,打開後是這樣的:
-----BEGIN CERTIFICATE-----
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
-----END CERTIFICATE-----
           
  1. der,二進制格式的證書,直接用文本打開的話全是二進制的東西,沒有可讀性。但是可以通過windows證書打開。如DigiCert_Global_Root_CA.der:
    數字證書掃盲
    數字證書掃盲
    上面的pem和der兩種擴充名其實也是編碼格式,像下面将要講的幾種擴充名的證書檔案,盡管證書内容會有不同,但他們會采用pem和der這兩種編碼方式。
  2. cer,cer是certificate的三個字母,可以有pem和der兩種編碼格式。可以從der中導出。
  3. key,不是X.509證書,通常用于存放公鑰或者私鑰可以有pem和der兩種編碼格式。
  4. csr,證書簽名請求。這個也不是證書,是向CA請求擷取簽名的證書。首先會生成一對鑰匙對(即公鑰和私鑰),然後用私鑰對csr進行簽名,并妥善保管好私鑰。這是csr包含了請求發起者的身份資訊、可以用于驗證簽名的公鑰等。
  5. pfx和p12,是第12号公鑰加密技術标準(PKCS#12)。包含證書和私鑰,不過私鑰是有密碼保護的,隻有提供正确的密碼後,才能從p12檔案中提取出私鑰。
  6. JKS,Java KeyStore。java密鑰管理庫,裡面可以放各種密鑰檔案,與pfx/p12十分類似,用來存放證書和私鑰。

常見的證書就列舉到這裡,相信大家已經有個基本的概念。下面将講解一下X.509證書結構和證書鍊,有興趣的同學可以繼續往下看。

X.509的結構

X.509的結構會包括:證書、版本号、序列号、簽名算法、頒發者、證書有效期、此日期前無效、此日期後無效、主題、主題公鑰資訊、公鑰算法、主題公鑰、頒發者唯一身份資訊(可選項)、主題唯一身份資訊(可選項)、擴充資訊(可選項)、證書簽名算法、數字簽名。

上面這樣列可能不太好了解,下面送上直覺腦圖一份。注意:黃色高亮部分為可選項。

數字證書掃盲

證書鍊

了解證書鍊之前,我們了解一下什麼是CA。

  • CA就是證書頒發機構(Certificate

    Authority),是負責發放和管理數字證書的權威機構,并作為電子商務交易中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。CA又分為root CA 和 intermediates CA(中間CA)。root CA 和 intermediates CA之間是有鍊式關系的,root CA之下可以有多個intermediates CA,intermediates CA自己下面也可以有多個intermediates CA。

    數字證書掃盲
    我們拿唯品會的證書來看一下,最頂層的是VeriSign(VeriSign 是全球最大的數字證書頒發機構)是Root CA,第二層的是Symantec(賽門鐵克),最後才是vip的。
    數字證書掃盲
    既然有了鍊式結構,那麼在驗證證書的是否真實合法的時候,我們就可以通過證書鍊,一層層向上回溯,驗證證書了。
    數字證書掃盲

數字證書的掃盲就講到這裡。其實除了CA認證體系外,還有PGP的Web of Trust體系。關于PGP解密的相關内容,将在日後為大家帶來。

作者:皇子