要在 Ubuntu/Debian 虚拟机 (VM) 上启用 True SSO 功能,请安装 True SSO 功能所依赖的库、支持受信任的身份验证的根证书颁发机构 (CA) 证书以及 Horizon Agent。如果 True SSO 身份验证也由从属 CA 颁发,则必须安装包含根 CA 证书和从属 CA 证书的完整证书链。要完成身份验证设置,必须编辑某些配置文件。

可以使用以下过程在 Ubuntu/Debian 虚拟机上启用 True SSO。

前提条件

过程

  1. 在虚拟机上,安装 pkcs11 支持软件包。
    sudo apt install libpam-pkcs11
  2. 安装 libnss3-tools 软件包。
    sudo apt install libnss3-tools
  3. 安装根 CA 证书或证书链。
    1. 找到您下载的根 CA 证书或证书链,并将其传输到 PEM 文件。
      sudo openssl x509 -inform der -in /tmp/certificate.cer -out /tmp/certificate.pem
    2. 创建 /etc/pki/nssdb 目录以包含系统数据库。
      sudo mkdir -p /etc/pki/nssdb
    3. 使用 certutil 命令将根 CA 证书或证书链安装到系统数据库 /etc/pki/nssdb 中。
      将以下示例命令中的“root CA cert”替换为系统数据库中根 CA 证书的名称。
      sudo certutil -A -d /etc/pki/nssdb -n "root CA cert" -t "CT,C,C" -i /tmp/certificate.pem
    4. 创建 /etc/pam_pkcs11/cacerts 目录,然后将根 CA 证书或证书链复制到该目录中。
      sudo mkdir -p /etc/pam_pkcs11/cacerts
      sudo cp /tmp/certificate.pem /etc/pam_pkcs11/cacerts
    5. 为根 CA 证书或证书链创建哈希链接。在 /etc/pam_pkcs11/cacerts 目录中,运行以下命令。
      sudo pkcs11_make_hash_link
  4. 安装 Horizon Agent 软件包并启用 True SSO。
    sudo ./install_viewagent.sh -T yes
  5. 将以下参数添加到 Horizon Agent 自定义配置文件 /etc/vmware/viewagent-custom.conf 中。使用以下示例,其中,NETBIOS_NAME_OF_DOMAIN 是您的组织的域的 NetBIOS 名称。
    NetbiosDomain=NETBIOS_NAME_OF_DOMAIN
  6. 编辑 /etc/pam_pkcs11/pam_pkcs11.conf 配置文件。
    1. 如果需要,请创建 /etc/pam_pkcs11/pam_pkcs11.conf 配置文件。在 /usr/share/doc/libpam-pkcs11/examples 中找到示例文件,将其复制到 /etc/pam_pkcs11 目录中,并将该文件重命名为 pam_pkcs11.conf。根据需要,将您的系统信息添加到文件内容中。
    2. 修改 /etc/pam_pkcs11/pam_pkcs11.conf 配置文件,以使其包含类似于以下示例的内容。
      注: 对于 Ubuntu 20.04 或更高版本,请将 ms 附加到 use_mappers 行的末尾。
      use_pkcs11_module = coolkey;
      pkcs11_module coolkey {
        module = /usr/lib/vmware/viewagent/sso/libvmwpkcs11.so;
        slot_num = 0;
        ca_dir = /etc/pam_pkcs11/cacerts;
        nss_dir = /etc/pki/nssdb;
      }
      
      mapper ms {
        debug = false;
        module = internal;
        # module = /usr/$LIB/pam_pkcs11/ms_mapper.so;
        ignorecase = false;
        # ignore domain name
        ignoredomain = true;
        domain = "DOMAIN.COM"; #<== Replace "DOMAIN.COM" with your organization's domain name
      }
      
      use_mappers = digest, cn, pwent, uid, mail, subject, null, ms;  #<== For Ubuntu 20.04 or later, append "ms" at end of use_mappers
  7. 在 Linux 终端中,将 /etc/krb5.conf 配置文件的访问权限设置为 644,如以下示例中所示。
    sudo chmod 644 /etc/krb5.conf

    验证是否已修改权限。

    ls -l /etc/krb5.conf
    
    -rw-r--r-- 1 root root xxx xx xx xxxx /etc/krb5.conf
    注: 如果未按指定方式修改 /etc/krb5.conf 的权限,True SSO 功能可能无法正常使用。
  8. 重新启动虚拟机,然后重新登录。