2010-07-08 92 views
1

我正在開發CAC身份驗證應用程序。從無CAC銷售證書

我正在運行RHEL 5.5並在我的機器上安裝了讀卡器。當我插入智能卡/ CAC時,彈出通知出現在時鐘窗口的右上角,並且可以通過單擊圖標(帶有鎖的卡)來訪問「智能卡管理器」出現。通過顯示智能卡管理器,我可以查看卡上的證書列表以及詳細信息等,而無需輸入密碼。

現在,另一方面,當我在我的C++代碼中使用nss庫獲取插槽和列表證書時,我無法獲取證書列表而無需輸入引腳。

我想要做的是從卡片上獲取證書列表,並在對話框中向用戶顯示該列表,然後用引腳文本字段填寫,以便用戶可以輸入該引腳,然後選擇要使用的證書認證ALL IN ONE一步,而不是應用程序必須顯示一個單獨的對話框的引腳,然後彈出證書選擇,但它似乎是不可能使用nss庫,但另一方面智能卡管理器gui可以輕鬆地做到這一點。一個人可以指出我正確的方向,如果有一個單獨的API我可以用來從CAC獲得證書列表?謝謝!

回答

2
  • 搜索「友好證書」或「公開可讀證書」網絡功能/機制(爲0x1 < < 28時加載的模塊) - 默認NSS假設需要一個PIN之前什麼可以讀從令牌。這是恕我直言絕對的愚蠢,並保持它作爲默認...
  • 一定要考慮到密碼鍵盤讀卡器(受保護的認證路徑PKCS#11),你希望會喜歡,支持更好的安全性爲用戶誰擁有的能力。連接PINpad閱讀器時,不應顯示PIN輸入文本框。
+0

martin,謝謝你的回覆。我必須承認我是C++和nss api的新手,所以我不知道(0x1 << 28)是什麼意思。我在我的C++程序中使用此方法加載模塊:module = SECMOD_LoadUserModule(moduleSpecName,NULL,PR_TRUE); 如何使用上述方法設置此標誌? 在我的應用程序中沒有涉及pinpad。這是一個Linux登錄應用程序。謝謝! – azm882 2010-07-09 15:46:16

+0

從https://developer.mozilla.org/zh/PKCS11_Module_Specs: slotParams - 空格分隔的名稱/值對列表,其中名稱是slotID,值是與該slotID相關的空間分隔列表參數。 有效slotParams值爲: slotFlags - 其中該槽被預期逗號分隔的密碼組列表成爲(不區分大小寫)默認的實現。 有效的標誌是: PublicCerts – 2010-07-11 10:04:34

+0

萬一有人正在尋找細節,在我的情況下,下面的工作: 靜態字符MODULENAME [] = 「庫= \」/ usr/lib中/ PKCS11/libcoolkeypk11.so \」 NAME = \ 「智能卡\」 NSS = \ 「slotParams = {爲0x1 = [slotFlags = 'PublicCerts']} \」「; 模塊= SECMOD_LoadUserModule(MODULENAME,NULL,PR_TRUE); – azm882 2010-07-19 17:05:47