【发布时间】:2017-12-02 23:19:04
【问题描述】:
我正在尝试用我的纯软件应用程序替换 HSM,并与 PKCS11 集成。我遇到的问题是所有 PKCS api 函数都处理不属于我的软件应用程序的插槽和令牌。是否有示例可供我查阅,以了解如何使用软件应用程序来模拟 HSM 并与 PKCS 集成?
【问题讨论】:
我正在尝试用我的纯软件应用程序替换 HSM,并与 PKCS11 集成。我遇到的问题是所有 PKCS api 函数都处理不属于我的软件应用程序的插槽和令牌。是否有示例可供我查阅,以了解如何使用软件应用程序来模拟 HSM 并与 PKCS 集成?
【问题讨论】:
当您处理 HSM 时,您必须处理插槽和令牌。您必须稍微修改您的软件以适应这种情况。
您可以通过两种方式使用 PKCS#11,PKCS#11 Wrapper 或 PKCS#11 Provider。 Wrapper 是直接调用 HSM 库(.dll 或 .so)的原生函数的 api。 Provider 在后台使用 Wrapper,但让您可以方便地使用 Java KeyStore api。
考虑到您的情况,Wrapper 可能不适合您,因为它涉及编写新类以与 HSM 集成。您可以使用提供程序。
Java 有非常好的 PKCS11 Provider here 文档。还有一个很好的第三方库,叫做IAIK,here是他们的provider文档。即使您在您的软件应用程序中使用了 Provider,微不足道的代码更改也是不可避免的。
您曾经在哪里使用过KeyStore api,您可能需要在那里进行更改。最初,当您的软件加载时,您必须为 PKCS11 提供程序加载一个配置文件,该文件告诉您要连接到哪个插槽号和令牌。
IAIK 也有非常好的示例,他们的提供程序库仅用于开发目的。
【讨论】: