我尝试使用OpenJDK 8 1动态初始化SunPKCS11提供程序。8.0_322(在Linux上),但得到以下异常:
java.lang.ExceptionInInitializerError at AES256.init(AES256.java:26)在AES256。加密(AES256.java:76)在AES256Example.main(AES256示例。java:20)原因:java.lang.NullPointerException at sun.security.pkcs11.SunPKCS11.(SunPKCS11.java:67)
导致此问题的代码部分:
File homedir = new File(System.getProperty("java.home"));
File fileToRead = new File(homedir, "/lib/security/nss.fips.cfg");
Provider p = new sun.security.pkcs11.SunPKCS11(fileToRead.getPath()); <<< this line causes exception
nss的内容。fips.cfg:
name = NSS-FIPS
nssLibraryDirectory = /usr/lib64
nssSecmodDirectory = sql:/etc/pki/nssdb
nssDbMode = readOnly
nssModule = fips
如果我用相同的nss初始化SunPKCS11。fips.cfg它工作正常。SunPKCS11的提供程序是libsoftokn3。所以。
我做错了什么?
这个问题的解决方案是什么?
1条答案
按热度按时间xdnvmnnf1#
非常感谢你的报价,但我找到了这个问题的原因。由于在Suse 15上更改了SunPKCS11类的构造函数,因此发生了此问题。在这个构造函数中,它们试图确定系统fips是否已启用,但用于执行此检查的对象未初始化。此对象在“Security”类中初始化。