我已经将NSS 3.12.4配置为在FIPS模式下使用SunPKCS11提供程序与我的java程序一起工作,一切都很好。现在,我正在执行中提到的步骤https://blogs.oracle.com/meena/entry/what_s_new_in_nss1以使NSS作为共享数据库工作。
当我在共享数据库模式下配置NSS时,secmod.db文件将按预期替换为pkcs11.txt。但现在SunPKCS11未能初始化,因为在初始化过程中似乎有对secmod.db的检查。我还尝试在configDir前面加上sql:,但这也不起作用。
我得到以下异常。
Caused by: java.io.FileNotFoundException: /etc/nss/secmod.db
at sun.security.pkcs11.Secmod.initialize(Secmod.java:181)
at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:179)
有人尝试过用java共享NSS数据库,或者用任何方法来解决这个问题吗?
为了让它为我工作,我采取了两个额外的步骤。
- 使用touch创建一个空的secmod.db-Java代码只是在检查它是否存在,实际上并没有使用它
- 在启动Java进程"export NSS_default_DB_type=sql"之前设置默认数据库类型
有了这两个更改,我现在有了一个服务器端进程,使用NSS加载它的密钥。