
上一篇講完開發方法的選擇,最簡單的方法是網站介接本機的 HiPKI Local Server,接著來介紹他。
HiPKI Local Server
由於網頁前端無法直接與讀卡機上的自然人憑證進行互動,網站使用者需要先在電腦安裝 HiCOS 跨平台網頁元件,HiCOS 會在本地起一個 API Server (http://localhost:61161)叫做 HiPKI Local Server,網站則可以跟 Local Server 交換資料來使用自然人憑證。目前支援 Windows、Linux、MacOS。
打開瀏覽器輸入 http://localhost:61161,有看到以下畫面,代表服務有正常啟用。

IC 卡功能檢測
想測試卡片功能可以 http://127.0.0.1:61161/selfTest.htm,可以看到卡片內有兩組憑證,分別用於簽章、加密,另外還有卡號、姓名、序號等資訊。

卡片詳細資訊
要知道整張卡的詳細資訊可以到 http://127.0.0.1:61161/pkcs11info?withcert=true,包含使用者的憑證,如下圖會回傳一大串JSON。如果只要讀卡機資訊可以訪問 http://127.0.0.1:61161/pkcs11info。

整體結構如下,會有一些伺服器資訊,其中最重要的資訊都在slots[0].token裡面。token下serialNumber代表卡號,certs則包含公鑰與其他資訊。

接下來看certs裡面的資訊,裡面會有四張憑證(certb64),憑證包含著公鑰,分別為:
- 政府根憑證(Root CA)
- 內政部中繼憑證
- 個人簽章用憑證
- 個人加密用憑證
以下為政府 Root CA 的憑證,以 PEM 格式加上 Header 排版,可以用來確認個人憑證是否是從政府憑證簽出來的。我另外把他放在 Github Gist上。
-----BEGIN CERTIFICATE-----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-----END CERTIFICATE-----以下為內政部中繼憑證,並放在 Github Gist。
-----BEGIN CERTIFICATE-----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-----END CERTIFICATE-----兩張個人用的憑證中會包含姓名、憑證序號、身分證末四碼(subjectID),我們取得這些資訊不需要用到 PIN 碼,所以這些都是卡片的公開資訊。只有用到簽章與加密,需要使用到私鑰的情境,才需要輸入 PIN 碼。


HiPKI Local Server範例
內政部提供了範例網站可以做簽章、加密的測試,並可以觀察他的原理。

結語
卡式憑證之所以安全是因為,私鑰存放在卡片裡無法取出,需資料丟進卡片中運算,卡片再將做完簽章或加密的資料傳回電腦,而我們可以從 HiPKI Local Server 取得公鑰與其他資訊。接下來會來說明如何開發簽章與加密。
▶ 閱讀更多:深入淺出自然人憑證