java 抱怨从 softhsm 加载 pkcs dll

java complains on loading pkcs dll from softhsm

我正在尝试使用 java 1.8-64 位为我的项目使用 softhsm。

我正在尝试使用此处给出的第一个示例 java class Connecting to SoftHSM java code

我能够安装 softhsm softhsm2-windows installer

并且还能够使用 softhsm-util.exe 工具创建令牌。

但是当我尝试 运行 java 代码时,我得到

            Exception in thread "main" java.security.ProviderException: Initialization failed
                at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:376)
                at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:103)
                at SoftHSM.main(SoftHSM.java:44)
            Caused by: java.io.IOException: The specified module could not be found.
            Z:/SOFTHSM_INSTALL/lib/softhsm2-x64.dll
                at sun.security.pkcs11.wrapper.PKCS11.connect(Native Method)
                at sun.security.pkcs11.wrapper.PKCS11.<init>(PKCS11.java:138)
                at sun.security.pkcs11.wrapper.PKCS11.getInstance(PKCS11.java:151)
                at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:313)
                ... 2 more

即使文件在异常中提到的正确位置可用。

请帮忙解决这个问题。

已安装更新的系统 Visual C++:

Visual C++ in My PC Win 10

TLDR :如果您想在 JAVA 应用程序中使用 softhsm2-x64.dll,则需要安装 64 位版本的 Visual C++ Redistributable for Visual Studio 2015 .


详细答案:您确实使用 SoftHSM2 installer for MS Windows.

安装了 SoftHSM

该包(包括 softhsm2-util.exe)中存在的所有可执行文件和库都是 32 位的,但 softhsm2-x64.dll 是 64 位的。

该包中存在的所有可执行文件和库(包括 softhsm2-util.exe)都依赖于 32 位版本的 Visual C++ Redistributable for Visual Studio 2015,期望 softhsm2-x64.dll 依赖于 64- Visual Studio 2015.

的 Visual C++ Redistributable 位版本

README.md 在项目网站上说:

These packages include both 32-bit and 64-bit versions of PKCS#11 library and require both 32-bit and 64-bit version of Visual C++ Redistributable for Visual Studio 2015 to be installed on the target system.

README.txt 安装后显示:

This package includes both 32-bit and 64-bit build of SoftHSM 2.2.0 statically linked to OpenSSL 1.1.0d. It requires both 32-bit and 64-bit version of Visual C++ Redistributable for Visual Studio 2015 to be installed on the target system. These can be downloaded from:

http://www.microsoft.com/en-us/download/details.aspx?id=48145

我的建议:为 Visual Studio 2015 安装 32 位和 64 位版本的 Visual C++ Redistributable。