我通过提供的acos-pkcs11.dll库(Java 32位为了在Windows上使用SunPKCS11)在Windows上通过Java SunPKCS11在Windows上运行ACS CryptoMate64令牌。
ACS CryptoMate64是Windows计算机上本地SunPKCS11访问的USB令牌。 Linux没有PKCS11库(没有.so文件或类似的东西)。
因为我正在使用Linux机器来获得一些function,所以我想问一下如何通过USB连接不同计算机上的networking来访问PCKS11设备。
想法如下:Linux:要使用USB CryptoMate64的应用程序,但没有库。 Windows:使用acos-pkcs11.dll连接USB CryptoMate64。 应用程序正在使用Windows计算机上连接的CryptoMate64。
是否可以在Linux机器上configurationJava SunPKCS11以通过networking远程使用它? 或者它是制造商提供的PKCS11模块的一部分?
我知道HSM能够通过PKCS11通过networking进行通信,所以我的问题是询问是否可以用这种方式与USB cryptotoken进行通信。
每一个build议或想法如何做到这一点是值得欢迎的。
基于网络的HSM常用的方法是让PKCS#11库对方法调用执行编组 ,并使用传输协议通过网络发送这些数据。 此应用程序传输协议通常是为TCP套接字定义的。 由于数据的性质,这个传输连接应该是安全的。 它至少应该提供客户端和服务器认证,并保持机密性,真实性和完整性。 可以使用带有客户端身份验证的TLS,但协议不能依赖DNS命名系统来实现其安全性。
现在,包含HSM的网络化HSM或系统应该包含对数据执行非编组,并执行预处理并将其发送到HSM的服务。 虽然不是必需的,但是可以通过简单地调用一个非联网的PKCS#11库来实现这个安全的un-Marshalled数据。
另一种选择是创建自己的Java安全提供程序。 这个提供者可以在服务器上调用代码,并在那里调用PCKS#11库。 实现Java安全提供者也不是那么容易,而且要求您使用Oracle为您的私钥提供证书(用于常规Java SE安装)来签署提供程序。
大家可能知道,通过网络使用HSM不应掉以轻心, 而应该成为HSM安全性的一部分 。 你可以自己尝试创建这样一个系统,但是你不应该自欺欺人; 联网的HSM很可能不像当地使用的那样安全。 一般来说,如果HSM供应商不提供服务,最好购买另一个USB令牌。 或者你可以购买一个网络HSM当然。