The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何處理 HiCOS 跨平台網頁元件無法連線的問題

自然人憑證通常都只有每年要報稅的時候才會用,不然就是政府的線上服務會用到,一般企業鮮少使用,原因無他,就是各種憑證應用的 UX 實在是太差了。最近因為被一家客戶要求要用工商憑證與自然人憑證簽署 NDA 文件,過程非常的坎坷,拖了兩個星期都沒簽好,今天則是遇到 HiCOS 跨平台網頁元件無法連線的問題,我打算來說說我今天的解決方法。

HiCOS PKI Smart Card Component

方法一:重開治百病

基本上這是計算機科學領域中最常見也最有效的方法之一,就是「重開機」你正在用的電腦,這個動作可以解決許多問題,包括 HiCOS 跨平台網頁元件無法連線的問題。

方法二:重灌治百病

如果重開機沒辦法解決,那就重新下載HiCOS卡片管理工具,執行 HiCOS_Client.exe 安裝檔,過程中會自動解除安裝現有版本,然後會自動重新安裝。

如果「重新安裝」搭配「重開機」還不能解決問題,那你可能要去拜拜了!

方法二:重新啟動跨平台網頁元件

我之前一直不瞭解,為什麼政府的各項服務都要我安裝HiCOS卡片管理工具,從名字看來,他就只是個「卡片管理工具」而已不是嗎?其實不是,這套管理工具還包含了一套「跨平台網頁元件」並會安裝到你的電腦中,所有需要透過 Chrome/Edge 進行憑證操作的地方,都會用到這組元件!

但我覺得最扯的地方是,下載的地方幾乎沒說明細節,他們可能覺得對一般大眾講這些大家也聽不懂,乾脆不要說,但我覺得這對開發人員非常不友善!

事實上,當你遇到HiCOS 跨平台網頁元件無法連線的問題時,只要參考下圖啟動元件服務即可:

image

或是直接下指令啟動:

"C:\Program Files (x86)\HiPKILocalSignServer\ChkSrv.exe" /start

啟動後可以透過瀏覽器連到 http://localhost:61161 查看 HiPKI Local Server 的版本資訊:

image

方法四:保留跨平台網頁元件的通訊埠 (Port: 61161)

我最近發現,只要我開啟 Docker Desktop 服務,就很有機會被佔用 Port 61161,這個 Port 是 HiPKI Local Server 的通訊埠,如果被佔用,就會導致 HiCOS 跨平台網頁元件無法連線,而且一定要「重開機」才能解決。

重點是,並不是 Docker 每次都會佔用到 61161 這個 Port,但是當他佔用時,你不會意識到跟這件事情有關,只會覺得很煩,怎麼「自然人憑證」又不能登入了!😅

想要查詢 Port 是否被佔用,可以使用下面的指令:

netsh int ipv4 show excludedportrange protocol=tcp

如果發現 Port 61161 被佔用,是解不開的,只能重開機。重開機之後,只要使用以下指令保留住這個 Port,未來就不會再發生這個問題了!

netsh int ipv4 add excludedportrange protocol=tcp numberofports=1 startport=61161

不過,當你哪天換了一台電腦,或是電腦重灌後,記得要重新執行一次該命令,否則明年報稅時又要重開機了!😅

開發者筆記

我覺得 HiCOS 有幾點設計很奇葩:

  1. 一般人根本不知道有這個元件存在,當意外停止時自然也不知道要去啟動他。

    安裝HiCOS卡片管理工具之後,預設會在「開始」功能表中出現一個 HiCOS PKI Smart Card 目錄,但完全不會注意到他其實安裝了兩個目錄,另一個是上圖的 跨平台網頁元件,網頁下載的地方與HICOS卡片管理工具使用說明(PDF)文件都沒寫耶!

    說到頭來,我的問題在於,我並不清楚我的跨平台網頁元件是何時被關閉的,當你不知道該元件的存在,自然也不知道要手動啟動他。

  2. 這個元件服務如果停止時,並不會因為你開啟了HiCOS卡片管理工具而順便啟動。

  3. 該元件服務並沒有註冊到 Windows Services 之中,所以你在「服務管理員」中找不到。

當你啟動元件服務之後,就可以從本機連到 http://localhost:61161/selfTest.htm 進行IC卡元件自我檢測,測試讀卡機與卡片是否正常!

最後,你可以到 C:\Program Files (x86)\HiPKILocalSignServer 目錄查找一些網頁程式與檔案,這裡有許多有趣的東西可以開來研究看看!

相關連結

留言評論