我已将 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)

任何人都尝试过 NSS 与 java 共享数据库或任何解决此问题的方法?

最佳答案

为了让它为我工作,我采取了两个额外的步骤。

  • 使用 touch 创建一个空的 secmod.db - Java 代码只是检查它是否存在,实际上并没有使用它。
  • 在启动 Java 进程之前设置默认数据库类型 'export NSS_DEFAULT_DB_TYPE=sql'

  • 通过这两个更改,我现在有一个使用 NSS 加载 key 的服务器端进程。

    10-08 20:04