數字證書掃盲

vipshop_fin_dev發表於2018-06-24

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

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解密的相關內容,將在日後為大家帶來。


作者:皇子

相關文章