如何用我的软件应用程序替换 HSM 以使用 PKCS?

How can I substitute my software application for an HSM to work with PKCS?

我正在尝试用我的纯软件应用程序替换 HSM 并与 PKCS11 集成。我遇到的问题是所有 PKCS api 函数都处理不属于我的软件应用程序的插槽和令牌。是否有可供我查阅的示例,以了解如何使用软件应用程序来模仿 HSM 并与 PKCS 集成?

当您处理 HSM 时,您必须处理插槽和令牌。您必须稍微修改您的软件以适应这一点。

您可以通过两种方式使用 PKCS#11,PKCS#11 WrapperPKCS#11 Provider。 Wrapper 是直接调用 HSM 库(.dll 或 .so)的本机函数的 api。 Provider 在底层使用 Wrapper,但让您可以方便地使用它 Java KeyStore api.

考虑到您的情况,Wrapper 可能不适合您,因为它涉及编写新的 类 以与 HSM 集成。您可以使用提供商。

Java 有非常好的 PKCS11 提供程序文档 here. There is also a very good third-party library called IAIK, here 是他们的提供程序文档。即使您在软件应用程序中使用 Provider,微不足道的代码更改也是不可避免的。

在您使用 KeyStore api 的地方,您可能必须在那里进行更改。最初,当您的软件加载时,您必须加载 PKCS11 提供程序的配置文件,该文件告诉要连接到哪个槽号和令牌。

IAIK 也有很好的示例,他们的提供程序库仅免费用于开发目的。