如何在PHP中与PKCS#11兼容的HSM设备进行接口

如何在Linux服务器上运行的PHP应用程序中使用PKCS#11兼容HSM(例如SafeNet iKey 2032 [USB]或Aladdin eToken PRO [USB])中的密钥材料?

Solutions Collecting From Web of "如何在PHP中与PKCS#11兼容的HSM设备进行接口"

我还没有看到,一个粗略的搜索没有找到,PHP的PCKS#11胶水库。 可能不是你正在寻找的答案。 (:如果你有比我更好的搜索功能,请更新这个线程。

我认为你最好的选择是编写一个调用PKCS#11的C程序,并访问HSM,并从PHP应用程序中调用它作为外部二进制文件。 即使PKCS#11包装器出现在PHP中,这种方法也将为您提供C代码可用的完整API,而不必与满足自己需求的包装器的作者做任何事情。 PKCS#11是一个很大的API,包装器实现往往不够完整。

您需要查看OpenSC项目中的pkcs11-helper 。 如果您尝试直接从PHP访问PKCS#11模块,这将是一个困难的方法。

我假设你问用户使用他们的令牌生成签名。 在客户端即在浏览器中生成签名。 你的解决方案是在Linux / PHP的事实并不重要。

你必须添加一个名为签名者的软件组件,它将读取证书并生成签名。

现有的开源签名者是用java编写的,原因是java applet仍然是最可用的客户端技术。