1956 字
10 分鐘
憑證鏈介紹 | 自然人憑證開發筆記

上一篇提到自然人憑證卡內有四張憑證,這四張憑證代表什麼意義,將在本篇進行說明。
卡內的四張憑證
可以到 http://127.0.0.1:61161/pkcs11info?withcert=true 取得以下四張憑證的詳細資料,包含公鑰、效期、主體、序號、用途等資訊。可以驗證這些憑證是否屬於同一個憑證鏈
- 政府根憑證(Root CA)
- 內政部中繼憑證
- 個人簽章用憑證
- 個人加密用憑證
憑證鏈

憑證鏈(Certificate Chain)是一連串的數位憑證,用於建立信任連接,以確保數位通信的安全性。在公開金鑰基礎建設(PKI)中,憑證鏈的主要目的是確保憑證的合法性和信任性。以下是憑證鏈的基本概念:
- 根憑證(Root Certificate): 根憑證是憑證鏈的頂層,是一個被信任的權威機構(CA)所簽發的憑證。根憑證的公開金鑰通常被內建在操作系統或瀏覽器等軟體中,用於驗證其他憑證的信任。
政府根憑證由數位發展部下的「政府憑證總管理中心」負責維運。 - 中繼憑證(Intermediate Certificate): 中間憑證是介於根憑證和終端憑證之間的憑證。這些憑證由根憑證簽發,同時也用來簽發其他憑證,包括終端憑證。中間憑證的存在使得憑證鏈形成一個連續的信任鏈。
各政府機關建立自己的憑證管理中心,自然人憑證是「內政部憑證管理中心」負責簽發,另外還有「經濟部工商憑證管理中心」、「衛福部醫事憑證管理中心」。 - 終端憑證(End Entity Certificate): 終端用戶憑證是由中間憑證簽發的,通常是用戶、伺服器或其他實體的憑證。這些憑證包含實體的公開金鑰和相關的身份信息。個人簽章用憑證、個人加密用憑證皆屬於此。
憑證鏈的建立過程通常如下:
- 系統或應用程式首先檢查終端用戶憑證的簽名是否由中間憑證簽發。
- 然後,檢查中間憑證的簽名是否由根憑證簽發。
- 最終,系統或應用程式驗證根憑證的簽名,以確保它是由信任的根權威機構簽發的。
通過這個層層驗證的過程,系統可以建立對通信方身份的信任,確保憑證的有效性,防止惡意活動和網路攻擊。憑證鏈是建立公開金鑰基礎建設中信任鏈的關鍵概念之一。
政府根憑證
從 pkcs11info 得到的根憑證資訊如下:
{ "certb64": "MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQGEwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dvdmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qNw8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfOhtX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wovJ5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1tB6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJBO9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNVHRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg209yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZTulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6TjZwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlUD7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6QzDxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+HbkZ6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQCZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS", "id": "Uk9PVENBQ2VydA==", "issuerDN": "C=TW,O=Government Root Certification Authority", "label": "ROOT CA Cert", "notAfter": "321205132333Z", "notAfterT": 1985865813, "notBefore": "021205132333Z", "notBeforeT": 1039094613, "signatureAlgorithm": "1.2.840.113549.1.1.5", "sn": "1F9D595AD72FC20644A5800869E35EF6", "subjectDN": "C=TW,O=Government Root Certification Authority", "thumbprint": "F48B11BFDEABBE94542071E641DE6BBE882B40B9"}- certb64: 包含憑證的 Base64 編碼形式。
- id: 憑證的唯一標識符,Base64 解碼完是 ROOTCACert。
- issuerDN: 憑證簽發者(發行者)的識別名稱(Distinguished Name,DN),這裡是台灣政府根憑證機構。
- label: 憑證的標籤或名稱,這裡是 ROOT CA Cert。
- notAfter: 憑證的有效期截止日期,這裡是321205132333Z,表示在2032年12月05日13時23分33秒之前有效。
- notBefore: 憑證的有效期開始日期,這裡是021205132333Z,表示在2002年12月05日13時23分33秒之後生效。
- signatureAlgorithm: 使用的簽名演算法的OID(Object Identifier),這裡是SHA-1(1.2.840.113549.1.1.5)。
- sn: 憑證的序號,這裡是1F9D595AD72FC20644A5800869E35EF6。
- subjectDN: 憑證擁有者(主體)的識別名稱,這裡同樣是政府根憑證機構。
- thumbprint: 憑證的指紋(Thumbprint),通常是憑證的數位指紋摘要,這裡是F48B11BFDEABBE94542071E641DE6BBE882B40B9。
內政部中繼憑證
{ "certb64": "MIIFJzCCAw+gAwIBAgIQCLXYq8gL3O8sfg85ClY3EzANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQGEwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTAzMDQyMTA3NTYwN1oXDTIzMDQyMTA3NTYwN1owRzELMAkGA1UEBhMCVFcxEjAQBgNVBAoMCeihjOaUv+mZojEkMCIGA1UECwwb5YWn5pS/6YOo5oaR6K2J566h55CG5Lit5b+DMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv7thQDmOKp3/+oyNHVH7TmbIZJhsa8mhxBhHky5jkfXoQvQN/+TQ0eM384NQdw3cFM2NKrND5eQEGmHnZsdQ1EQPLHS0u5Ih3r7RlfZ6U9agOwxBUm0rVOetUoQY0de5VG8QjRwmjRo3eeQ/YOLWlJa6D6jb37MNymrNeQM4Lb0e9TAVivbxHsOt5TA1xR/4Pxdw06PJSKFHDQuCz7izJS3fw1pOTbq25yGx3KlWroVwJEBslLYjbgLA9QqFCzWLtTJmgbmNPrt0G1NQrP9RzvqlBwqKB6UFLNslkmmVa98v19Vdq3Yk3sLrv/Bd1xqRVV0P5vyaFwVAu8RKO4F67QIDAQABo4IBFTCCAREwHwYDVR0jBBgwFoAUzMzvzClgpDuxkrY8+jJij6wlFTswHQYDVR0OBBYEFLYgyM++UYqkVLl40wTRCrLMfi9GMA4GA1UdDwEB/wQEAwIBBjAUBgNVHSAEDTALMAkGB2CGdmUAAwMwEgYDVR0TAQH/BAgwBgEB/wIBADA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vZ3JjYS5uYXQuZ292LnR3L3JlcG9zaXRvcnkvQ1JML0NBLmNybDBWBggrBgEFBQcBAQRKMEgwRgYIKwYBBQUHMAKGOmh0dHA6Ly9ncmNhLm5hdC5nb3YudHcvcmVwb3NpdG9yeS9DZXJ0cy9Jc3N1ZWRUb1RoaXNDQS5wN2IwDQYJKoZIhvcNAQEFBQADggIBAEj4KE9PRejbvaPo91oPNstXaywc99QDsAx2Kl4tm7owpWhLS6aMVIQcD/B1PnnPTOla1yc+Qk8EWbMoDuryFwRtxDeEkHpT51+FCuJNdPosK6eKUxxYPr2JTsCw3QyJivU5F4FZBVIZBVWZ3zwXzzSdwowCdPK6yj3PsWuFKNDbJOmTHZ2ZCP1XKRmYFYmUvZGwg2X0JUorH4OmUjaRgibctVMpkMQWUXMQRClj9jNaF2mp/PCZ/3FtqbsQLa2vL/Cayb/4AIY5qIJRKhg+BKlZ0MenufHpBBastnLoznemwO4h5/9Bo1EnVe/ywexVeAEL7O7Tf1tWryEcbW7H0C+kq4AyBGsSwnRwpwU0afa8L4+Y3N5axz1Aw3731zhKXHD6qZP7dxyEtUCuqwfMaFJt60CsASh2sv1XB+/nV8DNPlbzM0JC1gJJSp+cJjwcB05jfb5iiG4mSRpv8wo5faKynt3+6mdvXSSfxDgUPOkMivFcGFf5vlJtBOT+VFjKKomX1++QHva3I7uWptYwVQSe5sAv6AZRf4sgN+algrRxBpCPGHxkfb5NWNgkHiI9XHxnKkk9SQr8y1gJ7jyCjpcBpLGHlowJPCyHcWmBFePR6L+HQBdixOrLBKVogxWTPHOIDmUZCKjDAXzxwdgN9ZVpCMc+h0OMGZU9aWwDbp1k", "id": "Q0FDZXJ0", "issuerDN": "C=TW,O=Government Root Certification Authority", "label": "CA Cert", "notAfter": "230421075607Z", "notAfterT": 1682063767, "notBefore": "030421075607Z", "notBeforeT": 1050911767, "signatureAlgorithm": "1.2.840.113549.1.1.5", "sn": "08B5D8ABC80BDCEF2C7E0F390A563713", "subjectDN": "C=TW,O=行政院,OU=內政部憑證管理中心", "thumbprint": "3E21D6E39C6FC08F4442F37B22F3C13AA1A3D99E", "usage": "keyCertSign|cRLSign"}- certb64: 包含憑證的Base64編碼形式。
- id: 憑證的唯一標識符,Base64 解碼完是 CACert。
- issuerDN: 憑證簽發者(發行者)的識別名稱(Distinguished Name,DN),這裡是台灣政府根憑證機構。
- label: 憑證的標籤或名稱,這裡是 CA Cert。
- notAfter: 憑證的有效期截止日期,這裡是230421075607Z,表示在2032年04月21日07時56分07秒之前有效。
- notBefore: 憑證的有效期開始日期,這裡是030421075607Z,表示在2003年04月21日07時56分07秒之後生效。
- signatureAlgorithm: 使用的簽名演算法的OID(Object Identifier),這裡是SHA-1(1.2.840.113549.1.1.5)。
- sn: 憑證的序號,這裡是08B5D8ABC80BDCEF2C7E0F390A563713。
- subjectDN: 憑證擁有者(主體)的識別名稱,這裡是屬於台灣政府內政部憑證管理中心。
- thumbprint: 憑證的指紋(Thumbprint),通常是憑證的數位指紋摘要,這裡是3E21D6E39C6FC08F4442F37B22F3C13AA1A3D99E。
- usage: 憑證的使用權限,這裡是 keyCertSign|cRLSign,表示該憑證有簽署其他憑證(keyCertSign)和簽署撤銷清單(cRLSign)的權限。
個人簽章用憑證
{ "certb64": "<隱藏>", "id": "U0lHTg==", "issuerDN": "C=TW,O=行政院,OU=內政部憑證管理中心", "label": "cert1", "notAfter": "251112155959Z", "notAfterT": 1762963199, "notBefore": "201112011756Z", "notBeforeT": 1605143876, "signatureAlgorithm": "1.2.840.113549.1.1.11", "sn": "<隱藏>", "subjectCN": "周詳", "subjectDN": "C=TW,CN=周詳,serialNumber=<隱藏>", "subjectID": "0000", "thumbprint": "<隱藏>", "usage": "digitalSignature"}- certb64: 包含憑證的Base64編碼形式。
- id: 憑證的唯一標識符,Base64 解碼完是 SIGN。
- issuerDN: 憑證簽發者(發行者)的識別名稱(Distinguished Name,DN),這裡是行政院內政部憑證管理中心。
- label: 憑證的標籤或名稱,這裡是 cert1。
- notAfter: 憑證的有效期截止日期,這裡是251112155959Z,表示在2051年11月12日15時59分59秒之前有效。
- notBefore: 憑證的有效期開始日期,這裡是201112011756Z,表示在2011年12月1日17時56分之後生效。
- signatureAlgorithm: 使用的簽名演算法的OID(Object Identifier),這裡是SHA-256(1.2.840.113549.1.1.11)。
- sn: 憑證的序號。
- subjectCN: 憑證擁有者的姓名,這裡是”周詳”。
- subjectDN: 憑證擁有者的識別名稱,serialNumber 為擁有者的序號。
- subjectID: 憑證擁有者的識別ID,為身分證字號的末四碼。
- thumbprint: 憑證的指紋。
- usage: 憑證的使用權限,這裡是 digitalSignature,表示該憑證僅用於數位簽章。
個人加密用憑證
{ "certb64": "<隱藏>", "id": "S0VZWA==", "issuerDN": "C=TW,O=行政院,OU=內政部憑證管理中心", "label": "cert2", "notAfter": "251112155959Z", "notAfterT": 1762963199, "notBefore": "201112011756Z", "notBeforeT": 1605143876, "signatureAlgorithm": "1.2.840.113549.1.1.11", "sn": "<隱藏>", "subjectCN": "周詳", "subjectDN": "C=TW,CN=周詳,serialNumber=<隱藏>", "subjectID": "0000", "thumbprint": "<隱藏>", "usage": "keyEncipherment|dataEncipherment"}- certb64: 包含憑證的Base64編碼形式。
- id: 憑證的唯一標識符,Base64 解碼完是 KEYX。
- issuerDN: 憑證簽發者(發行者)的識別名稱(Distinguished Name,DN),這裡是行政院內政部憑證管理中心。
- label: 憑證的標籤或名稱,這裡是”cert2”。
- notAfter: 憑證的有效期截止日期,這裡是251112155959Z,表示在2051年11月12日15時59分59秒之前有效。
- notBefore: 憑證的有效期開始日期,這裡是201112011756Z,表示在2011年12月1日17時56分之後生效。
- signatureAlgorithm: 使用的簽名演算法的OID(Object Identifier),這裡是SHA-256(1.2.840.113549.1.1.11)。
- sn: 憑證的序號。
- subjectCN: 憑證擁有者的姓名,這裡是”周詳”。
- subjectDN: 憑證擁有者的識別名稱,serialNumber 為擁有者的序號。
- subjectID:憑證擁有者的識別ID,為身分證字號的末四碼。
- thumbprint: 憑證的指紋。
- usage: 憑證的使用權限,這裡是keyEncipherment|dataEncipherment,表示該憑證有加密金鑰以及資料加密的權限。
結語
從上面我們可以了解到憑證鏈的原理,並且彼此間驗證的方式,而這些擁有者資訊、用途、身分證末四碼也都有包含在憑證 certb64 中。個人用的兩張憑證是完全不同的,憑證序號 sn 也不同,subjectDN 中的 serialNumber 代表擁有者序號則會相同。
▶ 閱讀更多:深入淺出自然人憑證