Java 7 Windows 64 位上的 PKCS#11
PKCS#11 on Java 7 Windows 64 bit
我需要在 64 位 Windows 上使用 PKCS#11 和 Java 7 从智能卡读取证书。 The oracle docs 说没有用于 64 位的 Sun PKCS#11 提供程序 Windows。如果我理解正确,这意味着即使我有一个 PKCS#11 本机库,我也没有 Java "bridge" 类 来与本机 PKCS#11 实现交互。我有哪些选择?我能想到这些:
- 使用外部程序,例如一个命令行实用程序,用于与智能卡交互并将输出通过管道传输到我的 Java 应用程序
- 如何在 Java 中实现缺少的 PKCS#11 提供程序? (我想避免工作)
- 使用第三方 Java 实现缺少的 Sun 提供程序的库?
找了好久都没有找到解决办法。最接近的是 OpenJDK 实现,但我无法从 Oracle JDK 切换到 OpenJDK.
我错过了什么吗?为什么没有明显的解决方案?我有哪些选择?
非常感谢。
所有选项均可。
外部程序需要您为每个平台编写本机代码。
实现缺少的提供程序是可能的,特别是如果 OpenJDK 中存在一个提供程序并且您可以从那里借用它(如果许可证允许)。
至于 third-party 库 - 我只知道我们自己的 SecureBlackbox,它在内部实现所有安全性并通过 JNI 与 PKCS#11 设备一起工作。
Java 7 本身没有选项的原因是您使用的是 end-of-life 产品。你真的应该升级到 Java 8.
也就是说,Sun/Oracle PKCS#11 提供程序建立在 PKCS#11 wrapper from IAIK 之上。由于 Java 8 有一个 64 位版本的提供程序,那么这可能意味着也可以为 Java 7 编译它。
但是,即使您让包装器工作,也并不一定意味着您让 Java 7 提供程序使用它。 Java 7 个提供商也需要签名,因此即使您可以让提供商与 Java 7 PKCS#11 提供商一起工作,您也可能 运行 遇到麻烦。但是,您可以直接使用 PKCS#11 功能。当然你会失去提供者的好处,主要是与更高级别的互操作 API 的 TLS,XML-digsig 等
当然IAIK也出售他们自己的提供者,已经过安全评估等。部分文档如下:
Note, if you have a 64-bit PKCS#11 module of your crypto hardware, you must also use the 64-bit version of the Wrapper native library, and you must also use a 64-bit Java™ VM (e.g. java -d64 ...).
我需要在 64 位 Windows 上使用 PKCS#11 和 Java 7 从智能卡读取证书。 The oracle docs 说没有用于 64 位的 Sun PKCS#11 提供程序 Windows。如果我理解正确,这意味着即使我有一个 PKCS#11 本机库,我也没有 Java "bridge" 类 来与本机 PKCS#11 实现交互。我有哪些选择?我能想到这些:
- 使用外部程序,例如一个命令行实用程序,用于与智能卡交互并将输出通过管道传输到我的 Java 应用程序
- 如何在 Java 中实现缺少的 PKCS#11 提供程序? (我想避免工作)
- 使用第三方 Java 实现缺少的 Sun 提供程序的库?
找了好久都没有找到解决办法。最接近的是 OpenJDK 实现,但我无法从 Oracle JDK 切换到 OpenJDK.
我错过了什么吗?为什么没有明显的解决方案?我有哪些选择?
非常感谢。
所有选项均可。
外部程序需要您为每个平台编写本机代码。
实现缺少的提供程序是可能的,特别是如果 OpenJDK 中存在一个提供程序并且您可以从那里借用它(如果许可证允许)。
至于 third-party 库 - 我只知道我们自己的 SecureBlackbox,它在内部实现所有安全性并通过 JNI 与 PKCS#11 设备一起工作。
Java 7 本身没有选项的原因是您使用的是 end-of-life 产品。你真的应该升级到 Java 8.
也就是说,Sun/Oracle PKCS#11 提供程序建立在 PKCS#11 wrapper from IAIK 之上。由于 Java 8 有一个 64 位版本的提供程序,那么这可能意味着也可以为 Java 7 编译它。
但是,即使您让包装器工作,也并不一定意味着您让 Java 7 提供程序使用它。 Java 7 个提供商也需要签名,因此即使您可以让提供商与 Java 7 PKCS#11 提供商一起工作,您也可能 运行 遇到麻烦。但是,您可以直接使用 PKCS#11 功能。当然你会失去提供者的好处,主要是与更高级别的互操作 API 的 TLS,XML-digsig 等
当然IAIK也出售他们自己的提供者,已经过安全评估等。部分文档如下:
Note, if you have a 64-bit PKCS#11 module of your crypto hardware, you must also use the 64-bit version of the Wrapper native library, and you must also use a 64-bit Java™ VM (e.g. java -d64 ...).