使用 PKI 代理的 Windows KSP 和 PKCS#11

本文档介绍 PKI 代理与 NetHSM 的用法。PKI 代理可通过本地 Microsoft Windows API 使用 NetHSM。为此,PKI 代理包含一个 KSP(密钥存储提供程序),可通过 CNG(密码 API:下一代)接口使用。此外,它还提供对 NetHSM 的 PKCS#11 访问,但只有在您的设置需要时才可使用,例如需要 PKI Proxy 的额外身份验证功能,或希望将 PKI Proxy 用作网关以避免直接将 NetHSM 暴露给客户端。在所有其他情况下,请直接使用`NetHSM PKCS#11 驱动程序<pkcs11-setup.html>`__ 。

使用 PKI 代理的 NetHSM 部署情况如下。

NetHSM 与 PKI 代理服务器、客户端和暴露的客户端接口之间的连接。

NetHSM 提供 REST API,由 NetHSM PKCS#11 驱动程序使用。PKI 代理使用该驱动程序连接 NetHSM 并访问其密钥和证书。PKI 代理的客户端使用 PKI 代理服务器的 REST API 访问密钥和证书。客户端上的应用程序可以使用本地 Windows API 或 PKCS#11 驱动程序。NetHSM 与 PKI 代理服务器和 PKI 代理客户端之间的通信是加密的。PKI 代理服务器和客户端可以在同一台计算机上运行。

这种设置的可能用例有

  • Code signing

  • Document signing

小技巧

更多信息,请参阅`PKI 代理官方文档<https://cdn.nsoftware.com/help/PK1/app/default.htm>`__。

Prerequisits

  • NetHSM(硬件或容器化) - 已配置 - 必须知道 NetHSM 的 IP 地址,且 HTTPS 端口必须可以到达。

  • Windows 机器 - 已安装并配置 Nitrokey NetHSM PKCS#11 驱动程序(仅 PKI 代理服务器需要)。

重要

在某些机器上,PKI 代理服务器可能会在 NetHSM PKCS#11 模块卸载过程中崩溃。这是模块依赖关系中的一个错误,已在`this<https://github.com/Nitrokey/nethsm-pkcs11/issues/327>`__ GitHub issue 中进行了跟踪。如果遇到此错误,请在 NetHSM PKCS#11 配置文件中将``disable_thread_pool`` 配置选项设置为``true``。请参阅`示例配置文件<https://github.com/Nitrokey/nethsm-pkcs11/blob/main/p11nethsm.example.conf>`__ 以更好地了解如何配置。

PKI 代理 - 服务器

PKI 代理服务器为不同用户共享来自 NetHSM 的密钥和证书。

安装

  1. Download the PKI Proxy 2024 installer from the /n software website.

  2. 打开安装程序,按照安装向导进行操作。

  3. 从 "开始 "菜单打开 PKI 代理。如果将其安装到默认位置,也可以从*Run* 对话框或 PowerShell 中使用以下命令运行它。

    C:\Program Files\PKI Proxy 2024\PKIProxy.exe
    

    备注

    即使主窗口已关闭,PKI 代理也会最小化到系统托盘。

Service Configuration

下面的说明用于配置 PKI 代理。

  1. Open the PKI Proxy main window.

  2. Change to the Settings tab.

  3. 确保选中**Enable TLS** 复选框,并使用适当的证书。

  4. Change to the Users tab.

  5. 单击**New...** 按钮创建新用户。选择所有客户端都支持的验证类型。

  6. 在主窗口的菜单栏中单击**Start** 按钮启动 PKI 代理服务。

Publish Certificates from the NetHSM

下面我们将配置通过 PKI 代理提供哪些来自 NetHSM 的证书。

  1. 确保 PKI 代理主窗口已打开。

  2. Change to the Certificates tab.

  3. 单击**New...** 按钮。这将打开**股票** 窗口。

  4. 单击窗口**Certificate** 框中的**Select Certificate or Key...** 按钮。这将打开**选择私钥** 窗口。

  5. 更改为**安全密钥** 选项卡。

  6. 单击**Browse...** 按钮并选择 NetHSM PKCS#11 驱动程序库文件。文本字段**PKCS#11 库** 现在显示库文件的路径。

  7. 从下拉菜单**Security Key (PKCS#11)** 中选择包含证书的插槽。所列插槽取决于 PKCS#11 模块的配置。

  8. Click the Open button.

  9. Certificates 下方的文本列表现在显示 NetHSM 上可用证书和通用密钥的列表。选择要与 PKI 代理共享的证书或通用密钥。

  10. 单击**OK** 按钮确认选择。这将使您返回**股票** 窗口。窗口现在将显示所选证书的详细信息。

  11. 单击窗口**访问和权限** 框中的**添加...** 按钮。这将打开**选择用户** 窗口。

  12. 从下拉菜单中选择一个现有用户,或选择**Create New User...** 创建一个新用户。单击**OK** 按钮确认选择。如果选择创建新用户,则随后将显示**New User** 窗口。

  13. 回到**共享证书** 窗口,确保只允许对证书或通用密钥进行所需的操作。这可以通过**访问和权限** 框架底部的复选框进行更改。

  14. 点击**OK** 按钮发布证书。这将使您返回 PKI 代理主窗口。

  15. Certificate Management 下方的文本列表现在显示已发布的证书。

重要

确保 NetHSM 上的共享密钥机制允许在 PKI 代理中使用。

PKI 代理 - 客户端

PKI 代理客户端工具提供了从 PKI 代理服务器访问共享密钥和证书的不同方法。

小技巧

PKI 代理服务器包含客户端工具。因此,运行服务器的机器本身也可以是客户端。

安装

  1. 从`/n 软件网站<https://www.nsoftware.com/pkiproxy/download>`__ 下载*PKI Proxy 2024 - Client Tools* 。

  2. 打开安装程序,按照安装向导进行操作。

KSP (Key Storage Provider)

PKI 代理提供一个 KSP,用于连接 PKI 代理服务器。KSP 可通过 CNG(密码 API:下一代)接口与应用程序一起使用本地 Windows API。更多信息请参阅`PKI Proxy 文档<https://cdn.nsoftware.com/help/PK1/app/nsoftware.PKIProxy.htm#pg_runningksp>`__ 。

PKCS#11

PKI 代理提供一个 PKCS#11 模块,用于连接 PKI 代理服务器。更多信息请参阅`PKI Proxy 文档<https://cdn.nsoftware.com/help/PK1/app/nsoftware.PKIProxy.htm#pg_runningpkcs11>`__ 。