通过使用客户端设备证书身份验证功能,您可以为客户端系统设置对适用于 Linux 的 Horizon Client 的证书身份验证。Unified Access Gateway 可对客户端系统进行身份验证。通过 SoftHSM2 库,可将证书分发和部署到客户端系统。成功完成设备身份验证后,用户仍必须执行用户身份验证。
必备条件
此功能存在以下要求:
- Unified Access Gateway 2.6 或更高版本
- 客户端系统配有 Unified Access Gateway 接受的根证书颁发机构 (CA) 证书
有关配置 Unified Access Gateway 的信息,请参阅 Unified Access Gateway 文档。
设置 Linux 客户端系统以进行设备证书身份验证
要设置设备证书身份验证,您必须执行以下概要任务:
- 在系统上安装 SoftHSM2 库。
- 为 SoftHSM2 库创建加密令牌。
- 准备设备证书以及公钥和私钥。
- 将证书和密钥文件导入到 SoftHSM2 数据库中。
- 配置 SoftHSM2 库以供 Horizon Client 使用。
以下过程提供了在常规 Linux 客户端系统上完成此设置时的准则。具体步骤可能会根据您所用的 Linux 分发包而有所不同。
- 可使用以下方法之一在 Linux 客户端系统上安装 SoftHSM2 库。
- 方法 1:使用软件包管理工具。
例如,在 Ubuntu 系统上,您可以运行以下命令。
sudo apt-get install softhsm2
- 方法 2:手动编译并安装 SoftHSM2 库。
- 将 SoftHSM2 源代码存储库克隆到系统。
git clone https://github.com/opendnssec/SoftHSMv2.git
- 通过克隆的源代码编译、配置和安装 SoftHSM2 库。
注: Horizon Client 会安装自己的 OpenSSL 库,并且还会使用链接到 SoftHSM2 的 OpenSSL 库。为避免在运行时发生冲突,请确保将 SoftHSM2 链接到由 Horizon Client 安装的 OpenSSL 库。
在以下命令示例中,<path to OpenSSL library> 应包含“include”和“lib”路径。
cd SoftHSMv2/ sh autogen.sh ./configure --with-crypto-backend=openssl --with-openssl=<path to OpenSSL library> make sudo make install
- 将 SoftHSM2 源代码存储库克隆到系统。
- 方法 1:使用软件包管理工具。
- 为 SoftHSM2 库创建加密令牌。
默认情况下,SoftHSM2 具有一个令牌插槽。在初始化第一个插槽中的令牌时,将自动添加第二个插槽。在初始化每个插槽中的新令牌时,都会添加后续插槽。
- 运行以下命令以创建令牌。
softhsm2-util --init-token --slot 0 --label "<your token label>"
- 记下由令牌创建命令返回的插槽 ID。稍后在将 X.509 设备证书和密钥文件导入到 SoftHSM2 数据库中时,将需要此插槽 ID。
- 运行以下命令以创建令牌。
- 准备 X.509 设备证书以及公钥和私钥。
- 获取采用 PFX 格式的包含私钥的设备证书。
- 将该 PFX 文件转换为 PEM 格式的密钥文件。例如,以下命令会将 client.pfx 转换为 client-keys.pem。
openssl pkcs12 -in client.pfx -nocerts -nodes -out client-keys.pem
- 将该 PEM 密钥文件转换为 PKCS8 密钥文件。
openssl pkcs8 -in client-keys.pem -topk8 -nocrypt -out client-keys.pk8
- 将 PFX 文件转换为 DER 格式的 X.509 证书。
openssl pkcs12 -in client.pfx -nokeys -nodes -out client-cert.pem openssl x509 -outform der -in client-cert.pem -out client-cert.der
- 将 X.509 证书和密钥文件导入到 SoftHSM2 证书数据库中。
- 将密钥文件导入到 SoftHSM2 数据库中。
例如,以下命令将导入 client-key.pk8 文件。将 <your token label> 和 <slot ID> 替换为您在步骤 2 中获取的值。
softhsm2-util --import client-key.pk8 --token "<your token label>" --slot <slot ID> --label "client" --id 0001
- 将 X.509 证书导入到 SoftHSM2 数据库中。
例如,以下命令将导入 client-cert.der 文件。将 <softhsm2-pin> 替换为访问 SoftHSM2 数据库所需的 PIN。
pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -p <softhsm2-pin> --write-object client-cert.der --type cert --id 0001
- 确认 X.509 证书、公钥和私钥均存储在 SoftHSM2 数据库中。
pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -p <softhsm2-pin> --token-label "<your token label>" --list-objects
- 将密钥文件导入到 SoftHSM2 数据库中。
- 配置 SoftHSM2 库以供 Horizon Client 使用。
sudo mkdir /usr/lib/vmware/view/pkcs11 sudo ln -s /usr/local/lib/softhsm/libsofthsm2.so /usr/lib/vmware/view/pkcs11/libsofhsm2.so
FIPS 合规模式支持
如果要在符合联邦信息处理标准 (Federal Information Processing Standard, FIPS) 的环境中使用设备证书身份验证,请先完成启用 FIPS 兼容模式中所述的步骤。然后,执行上一部分 (设置 Linux 客户端系统以进行设备证书身份验证) 中所述的设置过程,并进行以下修改。
cd SoftHSMv2/ sh autogen.sh ./configure --with-crypto-backend=openssl --with-openssl=<path to OpenSSL library> --enable-fips make sudo make install