簡體   English   中英

從Delphi訪問Mozilla證書

[英]Accessing Mozilla Certificates from Delphi

我想從Delphi(XE)應用程序訪問存儲在Mozilla產品(Firefox和Thunderbird)中的證書。 首先,我想列出它們,接下來能夠管理它們(導入,導出,刪除)並使用它們(符號)會很好。 盡管使用mozilla支持的所有令牌,軟件令牌就足夠了。

到目前為止,我嘗試使用XPCOM和http://d-gecko.svn.sourceforge.net/viewvc/d-gecko/trunk/ delphi綁定。 然而,周圍沒有太多的文檔,我有點混淆所有的術語和概念。 我能管理的最好的是:

    var ns:nsIX509CertDB;
      servMgr:nsIServiceManager;
      p:Pchar;
    begin
      GRE_Startup;
      NS_GetServiceManager(servmgr);
      servMgr.GetServiceByContractID('@mozilla.org/security/x509certdb;1',NS_IX509CERTDB_IID,ns);
      ns.FindCertNicknames(nil,1,count,p);
      GRE_Shutdown;
    end;

使用此代碼,我確實獲得了certdb對象的實例,並且我可以向它請求證書。 但是它似乎是完全空的(來自FindCertNicknames的計數為0)並且它也不會對更改OCSP做出反應(IsOcspOn總是返回true)。 我想我創建了新的certstore,或者我需要以某種方式激活默認用戶配置文件。

我也嘗試訪問softokn.dll作為PKCS#11庫。 由於這似乎有某種PKCS#11 API,因此響應不佳。 即C_Inititialize上的CKR_BAD_ARGUMENTS。

最后也是非常糟糕的方式是直接訪問證書文件,因為它應該是“標准”NSS,但我真的不喜歡這種方式。

我們的SecureBlackbox通過PKCS#11與softtokn.dll配合使用,您可以使用SecureBlackbox提供的接口進行方便的證書管理。

我更多地探索了PKCS#11的方式,我實際上已經做了一些事情。 softokn.dll庫是“幾乎”標准的PKCS#11庫,請參閱https://developer.mozilla.org/en/PKCS11_Module_Specs 關鍵是你需要用特殊參數初始化它(結構在鏈接的URL中描述)。

它也很方便檢查NSS erorr返回值:請參閱http://people.mozilla.com/~chofmann/l10n/tree/mozilla/security/nss/cmd/pk11mode/pk11mode.c中的 CKR_NETSCAPE _...

最后一個關鍵是您需要手動指定令牌,因為文檔不清楚使用secmod.db - 在“MOD DB功能不通過標准PKCS#11接口”中有一個缺少的詞,可能是“支持” ”。

所有這些都是相當低級的編碼,並且仍然需要大量工作,因此如果您從頭開始,使用Eugene建議的SecureBalackbox可能會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM