在我的项目中,我们使用托管的HSM服务来签署应用程序使用有效证书生成的PDF文档。基本上,设置包括安装在Web服务器上的证书,该证书通过客户端驱动程序连接到远程HSM上的私钥。我们正在使用iText库生成PDF并进行签名。
C#实施说明由证书颁发机构提供,该机构也是托管的HSM提供商。我们的实现与他们在微不足道的细节中提供的示例不同。 问题是,签名PDF偶尔会停止工作(不会对正在编写的代码进行任何更改),其中包含2个加密异常之一 - “未定义密钥集”或“错误数据”。异常似乎被X509Certificate2类构造函数抛出。
问题似乎在一段时间后从几小时到大约两天后自行解决。这对我们造成了重大问题,因为生成签名PDF是应用程序的核心功能。 我们能够验证Luna SA客户端驱动程序是否已正确安装,以及它们是否可以连接到远程HSM上的分区。此外,访问本地证书(即Web服务器上的证书)的所有用户权限似乎都是有序的(即运行应用程序的应用程序池对其具有完全权限的帐户)。
坦率地说,这一直让我们疯狂,因为它似乎随机发生,而且没有对代码/托管环境进行任何更改。托管的HSM提供商坚持认为“他们没有发现任何奇怪的东西”,而且最重要的是,整个事情似乎记录不清,而且我无法找到任何指针,因此无法在线导致死胡同远。 任何输入都会非常赞赏。