使用 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>`__。
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 的密钥和证书。
安装¶
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.
确保选中**Enable TLS** 复选框,并使用适当的证书。
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>`__ 。