1

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

1-HSM

1- RFS 服务器

3- 客户

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

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

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

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

4

1 回答 1

3

您尝试做的不是 PKCS#11 标准的一部分。所以我怀疑 PKCS11Interop 是否能够实现这一点(通过查看其文档here)。

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

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

于 2017-08-01T20:13:48.713 回答