【问题标题】:Accessing Mozilla Certificates from Delphi从 Delphi 访问 Mozilla 证书
【发布时间】:2011-11-18 18:59:54
【问题描述】:

我想从 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,因此响应不佳。 IE。 C_Initialize 上的 CKR_BAD_ARGUMENTS。

最后一个也是非常糟糕的方法是直接访问证书文件,因为它应该是“标准”NSS,但我真的不喜欢这种方式。

【问题讨论】:

    标签: delphi mozilla x509certificate xpcom pkcs#11


    【解决方案1】:

    我们的 SecureBlackbox 通过 PKCS#11 与 softtokn.dll 一起工作,您可以使用 SecureBlackbox 提供的接口进行便捷的证书管理。

    【讨论】:

      【解决方案2】:

      我对 PKCS#11 的方式进行了更多探索,并且实际上我得到了它的作用。 softokn.dll 库“几乎”是标准 PKCS#11 库,请参阅 https://developer.mozilla.org/en/PKCS11_Module_Specs 。关键是你需要用特殊的参数来初始化它(结构在链接的 URL 中有描述)。

      检查 NSS 错误返回值也很方便:请参阅http://people.mozilla.com/~chofmann/l10n/tree/mozilla/security/nss/cmd/pk11mode/pk11mode.c 上的 CKR_NETSCAPE_...。

      最后一个关键是您需要手动指定令牌,因为文档不清楚使用 secmod.db - 在“MOD DB 功能不是通过标准 PKCS #11 接口”。

      所有这些都是相当低级的编码,仍然需要大量工作,因此如果您从头开始,最好使用 Eugene 建议的 SecureBalackbox。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-21
        • 2011-12-31
        • 1970-01-01
        • 2011-11-15
        • 2013-10-10
        • 2017-04-22
        • 2014-06-03
        • 1970-01-01
        相关资源
        最近更新 更多