将PKCS11与NSS一起用于Java加密:Java.security.ProviderException:初始化失败

将PKCS11与NSS一起用于Java加密:Java.security.ProviderException:初始化失败,java,ioexception,pkcs#11,nss,Java,Ioexception,Pkcs#11,Nss,我正在尝试设置Java以使用NSS执行一些不同的加密例程。我知道将这些例程卸载到NSS所需的JCE是PKCS11。我编译了所有NSS二进制文件,并将每个生成的共享对象移动到/usr/lib/NSS: $ ls /usr/lib/nss/ libfreebl3.so libnss3.so libnssdbm3.so libnssutil3.so libplds4.so libsoftokn3.so libnspr4.so libnssckbi.so libnsssy

我正在尝试设置Java以使用NSS执行一些不同的加密例程。我知道将这些例程卸载到NSS所需的JCE是PKCS11。我编译了所有NSS二进制文件,并将每个生成的共享对象移动到/usr/lib/NSS:

$ ls /usr/lib/nss/
libfreebl3.so  libnss3.so     libnssdbm3.so     libnssutil3.so  libplds4.so   libsoftokn3.so
libnspr4.so    libnssckbi.so  libnsssysinit.so  libplc4.so      libsmime3.so  libsqlite3.so
我使用的nss.cfg文件如下所示:

name=NSS
nssLibraryDirectory=/usr/lib/nss
nssDbMode=noDb
attributes=compatibility
但是,在运行应用程序时,这是输出:

java.security.ProviderException: Initialization failed
    at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:376)
    at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:103)
    ...
Caused by: java.io.IOException: libsqlite3.so: cannot open shared object file: No such file or directory/usr/lib/nss/libsoftokn3.so
    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)
    ... 5 more
java.security.ProviderException:初始化失败
位于sun.security.pkcs11.SunPKCS11。(SunPKCS11.java:376)
位于sun.security.pkcs11.SunPKCS11。(SunPKCS11.java:103)
...
原因:java.io.IOException:libsqlite3.so:无法打开共享对象文件:没有此类文件或目录/usr/lib/nss/libsoftokn3.so
位于sun.security.pkcs11.wrapper.pkcs11.connect(本机方法)
位于sun.security.pkcs11.wrapper.pkcs11.(pkcs11.java:138)
位于sun.security.pkcs11.wrapper.pkcs11.getInstance(pkcs11.java:151)
位于sun.security.pkcs11.SunPKCS11。(SunPKCS11.java:313)
... 还有5个

有什么想法吗?

看起来像是库加载问题:谢谢康斯坦丁!你完全正确。事实证明,我需要将$LD_LIBRARY_PATH设置为/usr/lib/nss,然后一切正常。