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

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

![HiCOS PKI Smart Card Component](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/c7f55955e292f4969514-c67b2524-72e5-450f-9e0e-ddc60dd229c9.webp)

### 方法一：重開治百病

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

### 方法二：重灌治百病

如果重開機沒辦法解決，那就重新下載[HiCOS卡片管理工具](https://moica.nat.gov.tw/download_1.html)，執行 `HiCOS_Client.exe` 安裝檔，過程中會自動解除安裝現有版本，然後會自動重新安裝。

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

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

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

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

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

![image](https://stwillblogassets.blob.core.windows.net/files/images/external/github.com/94a37001025c6391d963-5763c53d-c703-4ccb-bdff-cf1e8c072323.png)

或是直接下指令啟動：

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

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

![image](https://stwillblogassets.blob.core.windows.net/files/images/external/github.com/a529b93ffc5eb050feba-26adb4e8-dbd1-4507-9927-d08a7283dd68.png)

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

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

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

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

```batch
netsh int ipv4 show excludedportrange protocol=tcp
```

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

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

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

### 方法五：清潔自然人憑證的金屬接點

> 2025-02-05 更新: 所有讀卡機與服務都運作正常，就是某一張卡讀不到，所以整理出這個方法五。

如果你用[HiCOS卡片管理工具](https://moica.nat.gov.tw/download_1.html)發現插卡後顯示「卡片沒有回應」，但是插入其他的憑證又可以正常讀取，那很有可能是因為**自然人憑證**或**工商憑證**的金屬接點有髒污或氧化，這時就需要清潔憑證的金屬接點，以去除氧化層。

![HiCOS卡片管理工具 > 卡片沒有回應](https://stwillblogassets.blob.core.windows.net/files/images/external/github.com/ce3b0cdf45adea219364-525c71ed-abfa-4226-b96b-541df1deb72c.jpg)

我今天在使用自然人憑證時，就遇到這樣的狀況，一開始我還不太確定是什麼問題，我這篇文章所有技巧都用上了，還是無法解決。最後我才想到是不是憑證的金屬接點有問題，於是我簡單用手指擦拭一下自然人憑證的金屬接點處，結果依然沒效果。最後我想到用橡皮擦擦拭金屬接點，果然就可以正常讀取了！

> 在清潔過程中，請確保卡片乾燥，避免接觸水分或其他液體，以免損壞卡片內部的電子元件。

### 開發者筆記

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

1.  一般人根本不知道有這個元件存在，當意外停止時自然也不知道要去啟動他。
    
    安裝[HiCOS卡片管理工具](https://moica.nat.gov.tw/download_1.html)之後，預設會在「開始」功能表中出現一個 `HiCOS PKI Smart Card` 目錄，但完全不會注意到他其實安裝了兩個目錄，另一個是上圖的 `跨平台網頁元件`，網頁下載的地方與[HICOS卡片管理工具使用說明(PDF)](http://moica.nat.gov.tw/download/File/HiCOS.pdf)文件都沒寫耶！
    
    說到頭來，我的問題在於，我並不清楚我的**跨平台網頁元件**是何時被關閉的，當你不知道該元件的存在，自然也不知道要手動啟動他。
    
2.  這個元件服務如果停止時，並不會因為你開啟了HiCOS卡片管理工具而順便啟動。
    
3.  該元件服務並沒有註冊到 Windows Services 之中，所以你在「服務管理員」中找不到。
    

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

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

### 相關連結

-   [MOICA內政部憑證管理中心-檔案下載](https://moica.nat.gov.tw/download_1.html)
    -   [HiCOS卡片管理工具(ZIP)](https://api-hisecurecdn.cdn.hinet.net/HiCOS_Client.zip)
    -   [HICOS卡片管理工具使用說明(PDF)](http://moica.nat.gov.tw/download/File/HiCOS.pdf)
