以编程方式将 HSM 客户端生成的密钥与 RFS 服务器同步

Programmatically synchronizing keys generated by HSM clients with the RFS server

我正在使用 PKCS11Interop 在 HSM 中执行密钥管理操作。我使用的 HSM 是网络 HSM,Thales N-Shield。以下是我的设置的详细信息:

1- HSM

1- RFS 服务器

3- 客户

我的软件应用程序在 3 个客户端上分发和托管。密钥将在其中一个客户端中生成,并可供其他客户端中的应用程序组件使用。

但是,我注意到除非两个客户端都进行 rfs 同步,否则其他客户端计算机无法访问在一台客户端计算机中生成的密钥。

问题:有没有办法使用一些 PKCS11Interop API 将客户端密钥与 RFS 同步?如果否,那么我可以用什么方式同步 RFS 和客户端机器之间的密钥。

我知道可以使用 C# 代码执行 exe,但看起来不像一个干净的程序。

您尝试执行的操作不属于 PKCS#11 标准。所以我怀疑 PKCS11Interop 能否实现这一点(通过查看其文档 here)。

当您使用 PKCS#11 (PKCS11Interop) 在令牌 (Thales n-Shield) 上生成对象时,安装在客户端上的 Thale 安全管理器实际上是在 HSM 上进行生成。如果我没记错的话,Thales 将这些对象存储在客户端机器上,作为由安全管理器的主密钥加密的平面文件。所以从技术上讲,它不存储在 HSM 上。这就是您必须与 RFS 同步,然后更新您的其他客户端以查看新 keys/objects.

的原因

您必须与 Thales 人员联系,看看他们是否可以提供一种自动化方法。或者你必须实现自己的同步机制。由于 rfs-sync 是 Thales 提供的命令行工具,您将查看是否可以通过 C# 执行命令。或者与他们核实他们是否有为您执行此操作的 C# 库。