自然人憑證通常都只有每年要報稅的時候才會用,不然就是政府的線上服務會用到,一般企業鮮少使用,原因無他,就是各種憑證應用的 UX 實在是太差了。最近因為被一家客戶要求要用工商憑證與自然人憑證簽署 NDA 文件,過程非常的坎坷,拖了兩個星期都沒簽好,今天則是遇到 HiCOS 跨平台網頁元件無法連線的問題,我打算來說說我今天的解決方法。
方法一:重開治百病
基本上這是計算機科學領域中最常見也最有效的方法之一,就是「重開機」你正在用的電腦,這個動作可以解決許多問題,包括 HiCOS 跨平台網頁元件無法連線的問題。
方法二:重灌治百病
如果重開機沒辦法解決,那就重新下載HiCOS卡片管理工具,執行 HiCOS_Client.exe
安裝檔,過程中會自動解除安裝現有版本,然後會自動重新安裝。
如果「重新安裝」搭配「重開機」還不能解決問題,那你可能要去拜拜了!
方法二:重新啟動跨平台網頁元件
我之前一直不瞭解,為什麼政府的各項服務都要我安裝HiCOS卡片管理工具,從名字看來,他就只是個「卡片管理工具」而已不是嗎?其實不是,這套管理工具還包含了一套「跨平台網頁元件」並會安裝到你的電腦中,所有需要透過 Chrome/Edge 進行憑證操作的地方,都會用到這組元件!
但我覺得最扯的地方是,下載的地方幾乎沒說明細節,他們可能覺得對一般大眾講這些大家也聽不懂,乾脆不要說,但我覺得這對開發人員非常不友善!
事實上,當你遇到HiCOS 跨平台網頁元件無法連線的問題時,只要參考下圖啟動元件服務即可:
或是直接下指令啟動:
"C:\Program Files (x86)\HiPKILocalSignServer\ChkSrv.exe" /start
啟動後可以透過瀏覽器連到 http://localhost:61161 查看 HiPKI Local Server 的版本資訊:
方法四:保留跨平台網頁元件的通訊埠 (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 有幾點設計很奇葩:
-
一般人根本不知道有這個元件存在,當意外停止時自然也不知道要去啟動他。
安裝HiCOS卡片管理工具之後,預設會在「開始」功能表中出現一個 HiCOS PKI Smart Card
目錄,但完全不會注意到他其實安裝了兩個目錄,另一個是上圖的 跨平台網頁元件
,網頁下載的地方與HICOS卡片管理工具使用說明(PDF)文件都沒寫耶!
說到頭來,我的問題在於,我並不清楚我的跨平台網頁元件是何時被關閉的,當你不知道該元件的存在,自然也不知道要手動啟動他。
-
這個元件服務如果停止時,並不會因為你開啟了HiCOS卡片管理工具而順便啟動。
-
該元件服務並沒有註冊到 Windows Services 之中,所以你在「服務管理員」中找不到。
當你啟動元件服務之後,就可以從本機連到 http://localhost:61161/selfTest.htm 進行IC卡元件自我檢測,測試讀卡機與卡片是否正常!
最後,你可以到 C:\Program Files (x86)\HiPKILocalSignServer
目錄查找一些網頁程式與檔案,這裡有許多有趣的東西可以開來研究看看!
相關連結