我正在使用PKCS11Interop在HSM中执行密钥管理操作。我使用的HSM是网络HSM,Thales N-Shield。以下是我的设置细节:
1- HSM
1- RFS服务器
3-客户
我的软件应用程序已分发并托管在3个客户端上。密钥将在其中一个客户端中生成,并可由其他客户端中的应用程序组件使用。
但是,我注意到,除非两个客户端都执行rfs-sync,否则其他客户端计算机无法访问在一台客户端计算机上生成的密钥。
问题:有没有办法使用某些PKCS11Interop API将客户端密钥与RFS同步?如果否,那么我可以以何种方式同步RFS和客户端计算机之间的密钥。
我知道exe可以使用C#代码执行,但看起来不像一个干净的apporach。
答案 0 :(得分:3)
您要做的不是PKCS#11标准的一部分。因此我怀疑PKCS11Interop是否能够实现这一点(通过查看其文档here)。
当您使用PKCS#11(PKCS11Interop)在令牌(Thales n-Shield)上生成对象时,安装在客户端上的Thale安全管理器实际上是在HSM上进行生成。如果我没记错的话,Thales会将这些对象作为由安全管理器主密钥加密的平面文件存储在客户端计算机上。因此从技术上讲,它不存储在HSM上。这就是您必须与RFS同步,然后更新其他客户端以查看新密钥/对象的原因。
您必须与Thales人员核实,看看他们是否可以提供自动化方法。或者您必须实现自己的同步机制。由于rfs-sync是Thales提供的命令行工具,因此您将看到是否可以通过C#执行命令。或者如果他们有一个C#库为你做这件事,请与他们核实。