【问题标题】:Does Java Crypto JCA Provider really require windows dll?Java Crypto JCA Provider 真的需要 windows dll 吗?
【发布时间】:2012-05-15 10:43:00
【问题描述】:

我在这里读到:

“与大多数 Java 密码体系结构 (JCA) 提供商不同,Sun PKCS#11 提供程序未实现加密功能 直接地;它依赖于它的本机 PKCS#11 实现 转发所有操作。此实现必须作为 Windows 中的 .dll 文件或 UNIX 和 Linux 中的 .so 文件。例如,如果 您使用适用于 Windows 的 Utimaco SafeGuard 智能卡提供程序, PKCS#11 实现是库 pkcs201n.dll。”

智能卡提供商是否有义务拥有 jca 提供商?例如,我在哪里可以找到 gemalto 的 jca 提供程序?

【问题讨论】:

  • 您当然可以在金雅拓获得金雅拓的东西,不要问我们从哪里获得许可软件。金雅拓可能也最清楚是否有一个有效的 JCA 提供程序,这有点取决于 SW 开发的最新状态。在金雅拓。

标签: java cryptography certificate smartcard


【解决方案1】:

智能卡供应商是否必须拥有 jca 供应商?例如在哪里 我可以找到 gemalto 的 jca 提供商吗?

不,当然不是,这完全取决于合同中的内容。您很可能会获得与 PKCS#11 兼容的库(具有或多或少的功能,具体取决于提供商/卡)。很可能但可能没有完全测试这与 PKCS#11 提供程序兼容,这对事情的配置方式有点挑剔。真正的 JCA 提供者的交付是罕见的,如果你能得到一个真正有效的,你就很幸运了。

[编辑]

关于标题中的不同问题:只有 Sun PKCS#11 提供程序要求您配置 .dll。其他人可能需要一个,具体取决于实现。如果提供程序依赖于操作系统支持(例如,CAPI 提供程序使用 Windows 功能),它可能需要在库路径的某个位置使用不可配置的 .dll.so。 Bouncy Castle 和其他纯 Java 提供程序通常不需要任何 .dll.so

联系金雅拓,看看他们是否有 JCA 提供商,他们应该知道。

【讨论】:

  • Nitpick:CAPI 提供程序还需要本地 DLL :)
  • @emboss: 是的,这取决于操作系统的支持,感谢您回复这个名字,这个名字一直在我的脑海里盘旋着越来越大的圆圈:) 我会重写,这句话写得不好第一名。
【解决方案2】:

您所指的 PKCS#11 DLL 是能够使用 PKCS#11 API 的应用程序与特定加密硬件实现之间的接口。由于每个加密硬件都不同,它需要自己的 PKCS#11 DLL。因此,如果应用程序设计为通过 PKCS#11 与加密硬件通信,则它必须调用供应商提供的 DLL。因此,并不是 Java 没有 PKCS#11 的本机实现,而是 PKCS#11 的设计方式。

我认为没有任何硬件供应商有义务提供 JCA 模块,而且其中许多(如果不是大多数)只提供 PKCS#11 驱动程序和 CryptoAPI 模块 (CSP)。

【讨论】:

    【解决方案3】:

    PKCS#11 Reference Guide 是一个很好的起点。

    金雅拓智能卡总是附带一个 PKCS#11 DLL,不幸的是它有不同的名称,具体取决于卡。只需查看安装时附带的文件,直到找到包含“p”和“11”的 DLL :)

    找到它后,您可以按照参考指南中给出的步骤进行操作,即创建一个指向 PKCS#11 库等的配置文件。如果一切顺利,您应该可以简单地访问智能卡作为

    KeyStore ks = KeyStore.getInstance("PKCS11");
    ks.load(null, "pin".toCharArray());
    

    请注意,对于生产代码,您当然应该按照指南中的说明实现正确的CallbackHandler - 以上只是为了快速检查一切是否正常。

    【讨论】:

    • 您好,感谢您的回答。可惜需要dll,这意味着部署到大众消费者并不容易,因为它需要一些本地安装过程,如果客户端机器在公司环境中,这并不容易。
    • 你在告诉谁?我遇到了这个确切的问题 :) 但是不想宣传公司或品牌,请在 Internet 上搜索不需要本地 PKCS#11 驱动程序的 PKCS#11 设备。我找到了一个在 Windows 上根本不需要安装的解决方案。它通过 USB 命令模拟 PKCS#11 接口。在技​​术层面上非常酷,只是比“纯”PKCS#11 慢一点。至少给我留下了深刻的印象。
    • 我搜索了但找不到你不能告诉你的秘密吗;)
    • @user310291 我想我们不允许在这里做产品广告……但只要给我发邮件,我会在那里告诉你!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 2012-03-13
    • 2020-01-29
    • 2014-02-28
    • 2011-01-28
    • 1970-01-01
    相关资源
    最近更新 更多