EJBCA refuses to generate certificates with error : not allowed to use same key

EJBCA refuses to generate certificates with error : not allowed to use same key

我们使用静态值“usernameTest”作为用户名来请求 EJBCA 生成 X.509 证书;在使用这个静态用户名生成证书后,我们将其更改为唯一值来唯一标识每个证书(因为使用静态用户名被视为更新,因为所有证书的用户名都相同 (*) )但现在 EJBCA 拒绝生成证书和仍然引用旧的静态用户名“usernameTest”;我们收到此错误:

不允许用户 '250320092916' 使用与用户 'usernameTest' is/are 使用相同的密钥。

我们撤销了之前为用户名 'usernameTest' 生成的所有证书,但我们仍然从 EJBCA 收到此错误消息。有什么方法可以删除用户名 'usernameTest'?

每个证书都有唯一的 SubjectDN 和用户名。

EJBCA的版本是ejbca-6.2.0

(*):EJBCA 管理 GUI 中生成的所有证书都与同一用户名相关。

提前致谢。

问题已解决;问题不在于对 usernameTest 的引用仍在 EJBCA 中,而是同一密钥(RSA public 密钥)用于其他用户的请求('250320092916') .

这似乎是依赖于来自 Safenet ProtectServer 系列的 HSM PTK-C 模拟器时的已知限制;当我们重新初始化它时,模拟器会重新启动它的随机生成器(我怀疑是我误用了),这意味着它将始终以相同的顺序生成相同的密钥(这会导致此类错误)。

而且消息错误也不清楚;在不指定的情况下谈论 "key",这会导致与 subjectDN 或与 EJBCA 通信的其他属性混淆,作为错误消息,它可能是 "public key" 或 "RSA key",...而不是键 ;)

与HSM无关。 CA 的默认策略设置是不允许用户共享相同的最终用户 public 密钥。即不要向不同用户颁发具有相同 public 密钥的证书。这是 CA 设置中的复选框设置。

托马斯是正确的。转到 CA Functions 下的 "Certificate Authorities"。编辑您的 CA 并在 "Directives" 部分下找到名为 "Enforce unique public keys" 的设置。

取消选中强制,您将能够为不同的用户使用相同的 public 密钥。

您可以将 PTK-C 模拟器配置为不重复使用随机种子(是的,这很烦人)。对于 ejbca,我们已经记录了它 here。 您必须设置环境变量 ET_PTKC_SW_AUTOSEEDRNG=true。使用此设置,模拟器将生成真正的密钥,每次都是一个新密钥。