在開發或測試電子簽章時,pkcs11-tool
是與自然人憑證(或任何智慧卡)溝通的關鍵工具。
它屬於 OpenSC 套件的一部分,可直接呼叫 PKCS#11 介面 與卡片交互,用來:
本文將介紹如何在 Windows 與 macOS 安裝、確認路徑,並以 HiCOS 驅動 實際操作讀取與匯出憑證。
pkcs11-tool
pkcs11-tool
是 OpenSC 提供的命令列工具,用於測試和操作符合 PKCS#11 規範的模組(例如 HiCOS、TWCA、GPKI 等)。
主要功能包括:
功能 | 指令 |
---|---|
查詢可用插槽 | pkcs11-tool -L |
讀取卡內物件(憑證、公私鑰) | pkcs11-tool -O |
匯出憑證 | pkcs11-tool --read-object --type cert --id <ID> --output-file cert.der |
簽章 | pkcs11-tool --sign --mechanism SHA256-RSA-PKCS |
透過 choco 安裝 opensc
choco install opensc -y
pkcs11-tool 預設路徑為 C:\Program Files (x86)\OpenSC Project\OpenSC\tools\pkcs11-tool.exe
若要在任何資料夾使用,請將以下路徑加入系統 PATH:
C:\Program Files\OpenSC Project\OpenSC\tools\
透過 brew 安裝 opensc
brew install opensc
pkcs11-tool 預設路徑為 /opt/homebrew/bin/pkcs11-tool
,可以直接執行pkcs11-tool
HiCOS 自然人憑證安裝後,會附帶 PKCS#11 模組(讓應用程式能呼叫卡片功能)。
Windows 為 HiCOSPKCS11.dll
,macOS 為libHicos_p11v1.dylib
,這個檔案作為驅動程式。該函式庫符合 PKCS11 規範,並轉換為 APDU 指令。
系統 | 模組路徑 |
---|---|
Windows | C:\Program Files (x86)\HiPKILocalSignServer\HiCOSPKCS11.dll |
macOS | /System/Volumes/Data/Users/<username>/Library/HiPKILocalSignServer/libHicos_p11v1.dylib |
以下卡片查詢目前的讀卡機資訊,driver_path
放上面驅動程式模組的路徑。
pkcs11-tool --module <driver_path> -L
這會顯示:
Available slots:
Slot 0 (0x0): InfoThink USB reader
token label : HiCOS PKI Smart Card
token manufacturer : Chunghwa TeleCom Co., Ltd.
token model : T7S0564412XXXXX
token flags : login required, rng, token initialized, PIN initialized
hardware version : 1.0
firmware version : 1.0
serial num : TP072405131XXXXX
pin min/max : 6/8
uri : pkcs11:model=T7S0564412XXXXX;manufacturer=Chunghwa%20TeleCom%20Co.%2c%20Ltd.;serial=TP072405131XXXXX;token=HiCOS%20PKI%20Smart%20Card
接下來就來解析其中內容
Available slots:
Slot 0 (0x0): InfoThink USB reader
這表示你的系統偵測到 1 個智慧卡讀卡機:
代表卡機驅動已安裝正確,PKCS#11 模組能夠透過 PC/SC 通訊層與它互動。
這裡描述的是插在該讀卡機裡的「Token」= 智慧卡本身。
token label : HiCOS PKI Smart Card
token manufacturer : Chunghwa TeleCom Co., Ltd.
token model : T7S0564412XXXXX
serial num : TP072405131XXXXX
逐行說明👇
欄位 | 意思 | 說明 |
---|---|---|
token label | 卡片名稱 | HiCOS 驅動給卡片的識別標籤。 |
token manufacturer | 製造商 | 中華電信(Chunghwa TeleCom Co., Ltd.),這就是 HiCOS 自然人憑證的發卡單位。 |
token model | 模組型號 | 智慧卡晶片的型號(每張卡略不同,例如 T7S、T8E 等)。 |
serial num | 卡片序號 | 每張卡唯一序號,可在驗章或憑證鏈中比對。 |
token flags : login required, rng, token initialized, PIN initialized
這行是最關鍵的安全屬性描述,拆解如下:
Flag | 含義 | 功能 |
---|---|---|
login required | 需要登入 | 操作私鑰(簽章、解密)前必須先輸入 PIN 碼。 |
rng | 具備亂數產生器 | 晶片內建安全隨機數產生器(用於加密與簽章安全)。 |
token initialized | Token 已初始化 | 卡片已設定完成、可使用。 |
PIN initialized | PIN 碼已設定 | 使用者 PIN 已啟用(表示卡已註冊完成)。 |
✅ 代表這張卡可以被安全使用,也就是說你可以進行簽章、加密等操作。
hardware version : 1.0
firmware version : 1.0
pin min/max : 6/8
這是登入卡片所需 PIN 碼的長度限制:
符合 HiCOS 自然人憑證的標準 PIN 長度規範。
uri: pkcs11:model=T7S0564412XXXXX;manufacturer=Chunghwa%20TeleCom%20Co.%2c%20Ltd.;serial=TP072405131XXXXX;token=HiCOS%20PKI%20Smart%20Card
這是一個 PKCS#11 URI(統一資源識別碼),可以讓程式直接指向這張特定卡片。
類別 | 資訊 |
---|---|
讀卡機 | InfoThink USB Reader |
智慧卡標籤 | HiCOS PKI Smart Card |
製造商 | Chunghwa Telecom (中華電信) |
型號 | T7S0564412XXXXX |
序號 | TP072405131XXXXX |
功能 | 支援亂數生成、需 PIN 驗證 |
狀態 | Token 已初始化、PIN 已設定 |
PIN 長度 | 6–8 碼 |
PKCS#11 URI | 可用於程式指向該卡 |