LDAPS
LDAPS 是轻型目录访问协议 (LDAP) 的安全版本,其中 LDAP 通信使用 TLS/SSL 进行加密。
默认不加密客户端与服务器应用程序之间的 LDAP 通信。通过 LDAPS,您可以保护 Linux VDA 与 LDAP 服务器之间的 LDAP 查询内容。
以下 Linux VDA 组件在 LDAPS 上都具有依赖项:
- Broker 代理:Linux VDA 注册到 Delivery Controller 中
- 策略服务:策略评估
配置 LDAPS 涉及以下过程:
- 在 Active Directory (AD)/LDAP 服务器上启用 LDAPS
- 导出根 CA 以供客户端使用
- 在 Linux VDA 上启用/禁用 LDAPS
- 为第三方平台配置 LDAPS
- 配置 SSSD
- 配置 Winbind
- 配置 Centrify
- 配置 Quest
注意:
可以运行以下命令为 LDAP 服务器设置监视周期。默认值为 15 分钟。请至少将其设置为 10 分钟。
/opt/Citrix/VDA/bin/ctxreg create -k "HKLM\Software\Citrix\VirtualDesktopAgent" -v "ListOfLDAPServersMonitorPeroid" -t "REG_DWORD" -d "0x0000000f" --force <!--NeedCopy-->
在 AD/LDAP 服务器上启用 LDAPS
可以通过安装 Microsoft 证书颁发机构 (CA) 或非 Microsoft CA 提供的格式正确的证书来启用通过 SSL 的 LDAP (LDAPS)。
提示:
在域控制器上安装企业根 CA 时将自动启用 LDAPS。
有关如何安装证书并验证 LDAPS 连接的详细信息,请参阅 How to enable LDAP over SSL with a third-party certification authority(如何借助第三方证书颁发机构启用通过 SSL 的 LDAP)。
当您有一个多层证书颁发机构层次结构时,您在域控制器上不会自动拥有用于 LDAPS 身份验证的合适证书。
有关如何使用多层证书颁发机构层次结构为域控制器启用 LDAPS 的信息,请参阅 LDAP over SSL (LDAPS) Certificate(通过 SSL 的 LDAP (LDAPS) 证书)一文。
启用根证书颁发机构以供客户端使用
客户端必须使用 LDAP 服务器信任的 CA 颁发的证书。要为客户端启用 LDAPS 身份验证,请将根 CA 证书导入到受信任的密钥库。
有关如何导出根 CA 的详细信息,请参阅 Microsoft 支持 Web 站点上的 How to export Root Certification Authority Certificate(如何导出根证书颁发机构)。
在 Linux VDA 上启用或禁用 LDAPS
要在 Linux VDA 上启用或禁用 LDAPS,请运行 enable_ldaps.sh 脚本(在以管理员身份登录时)。要在非交互模式下运行 enable_ldaps.sh 脚本,请将以下变量导出到您的环境中:
#CTX_LDAPS_KEYSTORE_PASSWORD=
#CTX_LDAPS_LDAP_SERVERS=
<!--NeedCopy-->
-
要通过提供的根 CA 证书启用通过 SSL/TLS 的 LDAP,请执行以下操作:
/opt/Citrix/VDA/sbin/enable_ldaps.sh -Enable pathToRootCA <!--NeedCopy-->
-
要使用通道绑定通过 SSL/TLS 启用 LDAP,请执行以下操作:
/opt/Citrix/VDA/sbin/enable_ldaps.sh -Enablecb pathToRootCA <!--NeedCopy-->
注意:
用于通道绑定的根 CA 证书必须采用 PEM 格式。如果启用 LDAPS 无法成功创建 Python3 虚拟环境,请按照创建 Python3 虚拟环境中的说明手动创建该环境。
要解决在使用 pip 工具时可能会遇到的 SSL 连接错误,请考虑将以下可信主机添加到 /etc/pip.conf 文件中:
[global]
trusted-host =
pypi.org
files.pythonhosted.org
-
回退到未启用 SSL/TLS 的 LDAP
``` /opt/Citrix/VDA/sbin/enable_ldaps.sh -Disable
```
The Java keystore dedicated for LDAPS resides in /etc/xdl/.keystore. Affected registry keys include:
``` HKLM\Software\Citrix\VirtualDesktopAgent\ListOfLDAPServers
HKLM\Software\Citrix\VirtualDesktopAgent\ListOfLDAPServersForPolicy
HKLM\Software\Citrix\VirtualDesktopAgent\UseLDAPS
HKLM\Software\Policies\Citrix\VirtualDesktopAgent\Keystore
HKLM\Software\Citrix\VirtualDesktopAgent\EnableChannelBinding ```
为第三方平台配置 LDAPS
除 Linux VDA 组件外,还有多个附着于可能也需要安全 LDAP 的 VDA 的第三方软件组件,例如 SSSD、Winbind、Centrify 和 Quest。以下各部分介绍了如何通过 LDAPS、STARTTLS 或 SASL 签名和封装配置安全 LDAP。
提示:
并非所有这些软件组件都优先使用 SSL 端口 636 来确保安全 LDAP。并且大多数时间 LDAPS(端口 636 上通过 SSL 的 LDAP)不能与端口 389 上的 STARTTLS 共存。
SSSD
根据选项在端口 636 或端口 389 上配置 SSSD 安全 LDAP 流量。有关详细信息,请参阅 SSSD LDAP Linux 手册页。
Winbind
Winbind LDAP 查询使用 ADS 方法。Winbind 在端口 389 上仅支持 StartTLS 方法。受影响的配置文件为 /etc/samba/smb.conf 和 /etc/openldap/ldap.conf(对于 Amazon Linux 2、RHEL、Rocky Linux、CentOS 和 SUSE)或 /etc/ldap/ldap.conf(对于 Debian 和 Ubuntu)。按如下所示更改这些文件:
-
smb.conf
ldap ssl = start tls
ldap ssl ads = yes
client ldap sasl wrapping = plain
-
ldap.conf
TLS_REQCERT never
或者,可以通过 SASL GSSAPI 签名和封装配置安全 LDAP,但不能与 TLS/SSL 共存。要使用 SASL 加密,请更改 smb.conf 配置:
ldap ssl = off
ldap ssl ads = no
client ldap sasl wrapping = seal
Centrify
Centrify 在端口 636 上不支持 LDAPS。但它在端口 389 上提供安全加密。有关详细信息,请参阅 Centrify 站点。
Quest
Quest Authentication Service 在端口 636 上支持 LDAPS,但在端口 389 上使用其他方法提供安全加密。
故障排除
使用此功能时可能会引发以下问题:
-
LDAPS 服务可用性
请确认 LDAPS 连接是否在 AD/LDAP 服务器上可用。默认情况下,端口为 636。
-
启用了 LDAPS 时 Linux VDA 注册失败
验证 LDAP 服务器和端口是否已正确配置。请先检查根 CA 证书,确保其与 AD/LDAP 服务器匹配。
-
意外错误地更改注册表项
如果在未使用 enable_ldaps.sh 的情况下意外更新了 LDAPS 相关的注册表项,则可能会破坏 LDAPS 组件的依赖项。
-
LDAP 流量不通过 SSL/TLS 从 Wireshark 或任何其他网络监视工具加密
默认禁用 LDAPS。请运行 /opt/Citrix/VDA/sbin/enable_ldaps.sh 强制执行。
-
没有来自 Wireshark 或任何其他网络连接监视工具的 LDAPS 流量
发生 Linux VDA 注册和组策略评估时会出现 LDAP/LDAPS 流量。
-
无法通过在 AD 服务器上运行 ldp connect 验证 LDAPS 可用性
使用 AD FQDN 而非 IP 地址。
-
无法通过运行 /opt/Citrix/VDA/sbin/enable_ldaps.sh 脚本导入根 CA 证书
请提供 CA 证书的完整路径,并确认根 CA 证书的类型是否正确。它应与受支持的大多数 Java Keytool 类型兼容。如果它未在支持列表中列出,您可以先转换类型。如果遇到证书格式问题,我们建议您使用 base64 编码的 PEM 格式。
-
无法通过 Keytool -list 显示根 CA 证书
通过运行
/opt/Citrix/VDA/sbin/enable_ldaps.sh
启用 LDAPS 时,证书将被导入到 /etc/xdl/.keystore 中,并设置密码以保护密钥库。如果忘记了密码,可以重新运行该脚本以创建密钥库。