将PKCS11与NSS一起用于Java加密:Java.security.ProviderException:初始化失败
我正在尝试设置Java以使用NSS执行一些不同的加密例程。我知道将这些例程卸载到NSS所需的JCE是PKCS11。我编译了所有NSS二进制文件,并将每个生成的共享对象移动到/usr/lib/NSS:将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
$ 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,然后一切正常。