通过使用客户端设备证书身份验证功能,您可以为客户端系统设置对适用于 Linux 的 Horizon Client 的证书身份验证。Unified Access Gateway 可对客户端系统进行身份验证。通过 SoftHSM2 库,可将证书分发和部署到客户端系统。成功完成设备身份验证后,用户仍必须执行用户身份验证。

必备条件

此功能存在以下要求:

  • Unified Access Gateway 2.6 或更高版本
  • Horizon 7 版本 7.5 或更高版本
  • 客户端系统配有 Unified Access Gateway 接受的根证书颁发机构 (CA) 证书

有关配置 Unified Access Gateway 的信息,请参阅 Unified Access Gateway 文档

设置 Linux 客户端系统以进行设备证书身份验证

要设置设备证书身份验证,您必须执行以下概要任务:

  • 在系统上安装 SoftHSM2 库。
  • 为 SoftHSM2 库创建加密令牌。
  • 准备设备证书以及公钥和私钥。
  • 将证书和密钥文件导入到 SoftHSM2 数据库中。
  • 配置 SoftHSM2 库以供 Horizon Client 使用。

以下过程提供了在常规 Linux 客户端系统上完成此设置时的准则。具体步骤可能会根据您所用的 Linux 分发包而有所不同。

注: 运行 Becrypt Paradox 的瘦客户端也支持设备证书身份验证。有关设置信息,请参阅 Becrypt Paradox 文档。
  1. 可使用以下方法之一在 Linux 客户端系统上安装 SoftHSM2 库。
    1. 方法 1:使用软件包管理工具。
      例如,在 Ubuntu 系统上,您可以运行以下命令。
      sudo apt-get install softhsm2
    2. 方法 2:手动编译并安装 SoftHSM2 库。
      1. 将 SoftHSM2 源代码存储库克隆到系统。
        git clone https://github.com/opendnssec/SoftHSMv2.git
      2. 通过克隆的源代码编译、配置和安装 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
        
  2. 为 SoftHSM2 库创建加密令牌。

    默认情况下,SoftHSM2 具有一个令牌插槽。在初始化第一个插槽中的令牌时,将自动添加第二个插槽。在初始化每个插槽中的新令牌时,都会添加后续插槽。

    1. 运行以下命令以创建令牌。
      softhsm2-util --init-token --slot 0 --label "<your token label>"
    2. 记下由令牌创建命令返回的插槽 ID。稍后在将 X.509 设备证书和密钥文件导入到 SoftHSM2 数据库中时,将需要此插槽 ID。
  3. 准备 X.509 设备证书以及公钥和私钥。
    1. 获取采用 PFX 格式的包含私钥的设备证书。
    2. 将该 PFX 文件转换为 PEM 格式的密钥文件。例如,以下命令会将 client.pfx 转换为 client-keys.pem
      openssl pkcs12 -in client.pfx -nocerts -nodes -out client-keys.pem
    3. 将该 PEM 密钥文件转换为 PKCS8 密钥文件。
      openssl pkcs8 -in client-keys.pem -topk8 -nocrypt -out client-keys.pk8
    4. 将 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
  4. 将 X.509 证书和密钥文件导入到 SoftHSM2 证书数据库中。
    1. 将密钥文件导入到 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
    2. 将 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
    3. 确认 X.509 证书、公钥和私钥均存储在 SoftHSM2 数据库中。
      pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -p <softhsm2-pin> --token-label "<your token label>" --list-objects
  5. 配置 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 客户端系统以进行设备证书身份验证) 中所述的设置过程,并进行以下修改。

要以 FIPS 合规模式编译 SoftHSM2 库,请运行以下命令序列。
cd SoftHSMv2/
sh autogen.sh
./configure --with-crypto-backend=openssl --with-openssl=<path to OpenSSL library>  --enable-fips
make
sudo make install
注: 如果在编译过程中遇到缺少头文件问题,则可以从 www.openssl.org/source/ 中下载与 FIPS 相关的头文件对应的源代码。将头文件复制到 OpenSSL 库的路径中,然后重复执行该命令序列以按 FIPS 合规模式编译 SoftHSM2 库。