使用 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 提供 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>`__。
先决条件¶
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 的密钥和证书。
安装¶
Download the PKI Proxy 2024 installer from the /n software website.
打开安装程序,按照安装向导进行操作。
从 "开始 "菜单打开 PKI 代理。如果将其安装到默认位置,也可以从*Run* 对话框或 PowerShell 中使用以下命令运行它。
C:\Program Files\PKI Proxy 2024\PKIProxy.exe备注
即使主窗口已关闭,PKI 代理也会最小化到系统托盘。
Service Configuration¶
下面的说明用于配置 PKI 代理。
Open the PKI Proxy main window.
Change to the Settings tab.
Make sure the checkbox Enable TLS is checked and an appropriate certificate is used.
Change to the Users tab.
单击**New...** 按钮创建新用户。选择所有客户端都支持的验证类型。
在主窗口的菜单栏中单击**Start** 按钮启动 PKI 代理服务。
Publish Certificates from the NetHSM¶
下面我们将配置通过 PKI 代理提供哪些来自 NetHSM 的证书。
确保 PKI 代理主窗口已打开。
Change to the Certificates tab.
单击**New...** 按钮。这将打开**股票** 窗口。
单击窗口**Certificate** 框中的**Select Certificate or Key...** 按钮。这将打开**选择私钥** 窗口。
更改为**安全密钥** 选项卡。
单击**Browse...** 按钮并选择 NetHSM PKCS#11 驱动程序库文件。文本字段**PKCS#11 库** 现在显示库文件的路径。
从下拉菜单**Security Key (PKCS#11)** 中选择包含证书的插槽。所列插槽取决于 PKCS#11 模块的配置。
Click the Open button.
Certificates 下方的文本列表现在显示 NetHSM 上可用证书和通用密钥的列表。选择要与 PKI 代理共享的证书或通用密钥。
单击**OK** 按钮确认选择。这将使您返回**股票** 窗口。窗口现在将显示所选证书的详细信息。
单击窗口**访问和权限** 框中的**添加...** 按钮。这将打开**选择用户** 窗口。
从下拉菜单中选择一个现有用户,或选择**Create New User...** 创建一个新用户。单击**OK** 按钮确认选择。如果选择创建新用户,则随后将显示**New User** 窗口。
回到**共享证书** 窗口,确保只允许对证书或通用密钥进行所需的操作。这可以通过**访问和权限** 框架底部的复选框进行更改。
点击**OK** 按钮发布证书。这将使您返回 PKI 代理主窗口。
Certificate Management 下方的文本列表现在显示已发布的证书。
重要
确保 NetHSM 上的共享密钥机制允许在 PKI 代理中使用。
PKI 代理 - 客户端¶
PKI 代理客户端工具提供了从 PKI 代理服务器访问共享密钥和证书的不同方法。
小技巧
PKI 代理服务器包含客户端工具。因此,运行服务器的机器本身也可以是客户端。
安装¶
从`/n 软件网站<https://www.nsoftware.com/pkiproxy/download>`__ 下载*PKI Proxy 2024 - Client Tools* 。
打开安装程序,按照安装向导进行操作。
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>`__ 。