4. 将 LDAP 客户端连接到安全 LDAP 服务

按照本文中的说明将 LDAP 客户端连接到安全 LDAP 服务。

重要提示:

  • 请务必阅读供应商文档
    本文提供的有关将 LDAP 客户端连接到安全 LDAP 服务的详细信息仅供参考,可能会发生变化。除了这些帮助说明之外,请务必阅读供应商文档,了解将客户端连接到安全 LDAP 服务的最新步骤。
  • 准备工作
    在使用这些说明之前,请确保您已将客户端添加到安全 LDAP 服务、配置访问权限、下载客户端证书和密钥,并视需要创建访问凭据。
  • 连接测试
    (可选)在开始执行这些步骤之前,您可能需要使用 ldapsearch、ADSI 和 ldp.exe 等简单工具进行快速连接测试。如果您在尝试将 LDAP 客户端连接到服务时遇到错误,也可以使用这些工具进行问题排查。如需查看相关说明,请参阅安全 LDAP 连接测试。
  • 如何完成设置步骤
    按照本页上的说明连接 LDAP 客户端后,您需要在 Google 管理控制台中将服务状态切换为开启,以完成 LDAP 客户端的设置。如需查看相关说明,请参阅5. 将 LDAP 客户端切换为“启用”。

本文内容

本文包括以下部分:

这些说明假定您下载的客户端密钥和证书文件名为 ldap-client.key 和 ldap-client.crt。

基本配置说明

本部分包含有关将 LDAP 客户端连接到安全 LDAP 服务的一般说明。如果您的 LDAP 客户端未在以下说明中列出,请务必查阅该应用的文档。

注意:某些 LDAP 客户端(例如 Atlassian Jira 和 SSSD)会在用户身份验证期间执行用户查找,以获取有关用户的更多信息。为确保此类 LDAP 客户端的用户身份验证正常运行,您需要为所有已启用验证用户凭据的组织部门启用读取用户信息。(如需查看相关说明,请参阅配置访问权限。)

如需将 LDAP 客户端连接到安全 LDAP 服务,请执行以下操作:

  1. 将 Cloud Directory 配置为 LDAP 客户端的 LDAP 服务器。
  2. 将相应证书上传到 LDAP 客户端。

    安全 LDAP 服务使用 TLS 客户端证书作为主要身份验证机制。如需开始将证书上传到 LDAP 客户端,请打开 LDAP 客户端的身份验证或目录设置,然后输入下表中的详细信息。

    注意:如需详细了解如何上传 TLS 证书以及上传到何处,请参阅供应商文档。

请参照下表中所列的基本连接信息:

Hostname(主机名)

ldap.google.com

端口

389(适用于启用了 StartTLS 的 LDAP)
636(适用于启用了 SSL/TLS 的 LDAP)

Base DN(基本 DN)

您的域名(采用 DN 格式)。例如:

example.com 的 DN 为 dc=example,dc=com

用户名和密码

除了使用证书进行身份验证之外,部分 LDAP 客户端还会要求您输入用户名和密码。如果用户名和密码字段不是必填字段,您可以跳过此步骤。

请在 Google 管理控制台中生成用户名和密码。有关说明,请参阅生成访问凭据。

客户端证书和密钥文件

请使用从 Google 管理控制台下载的证书和密钥文件。如果 LDAP 客户端不提供使用客户端证书进行身份验证的方法,请参阅将 stunnel 用作代理。

重要提示:某些 LDAP 客户端(例如 Apache Directory Studio)不支持上传数字证书。如遇这种情况,请参阅使用 Stunnel 作为代理。

特定 LDAP 客户端的配置说明

ADSI 编辑器 (Windows)

请按照以下步骤操作:

  1. 按照 ldp.exe (Windows) 中的第 1-11 步安装客户端证书。
  2. 转到 Action(操作)> Connect to…(连接到…)
  3. 输入以下连接设置:

    名称:输入连接的名称,例如 Google LDAP。
    连接点:“选择或输入可分辨名称或命名上下文”
    以 DN 格式输入您的域名(例如,example.com 的 DN 格式为 dc=example,dc=com)。

    计算机:“选择或输入网域或服务器”
    ldap.google.com

    使用基于 SSL 的加密:已选中
  4. 点击高级…,然后输入以下详细信息:

    指定凭据:已选中
    用户名:管理控制台中的访问凭据用户名
    密码:管理控制台中的访问凭据密码
    端口号:636
    协议:LDAP
    简单绑定身份验证:已选中
  5. 点击 OK(确定),然后再次点击 OK(确定)。
  6. 如果连接成功,右侧窗格中会显示基本 DN 中的 Active Directory 内容。

Apache Directory Studio

如需使用 Apache Directory Studio,请通过 stunnel 进行连接,并使用在 Google 管理控制台中生成的访问凭据(用户名和密码)。假设凭据已就位,并且 stunnel 正在监听 localhost 端口 1389,请按以下步骤操作:

  1. 点击 File(文件)> New…(新建…)。
  2. 选择 LDAP Browser(LDAP 浏览器)> LDAP Connection(LDAP 连接)。
  3. 点击下一步。
  4. 输入连接参数:

    连接名称:选择一个名称,例如 Google LDAP
    主机名:localhost
    端口:1389(或 stunnel 监听/接受端口)
    加密方法:不加密(注意:如果 stunnel 在远程运行,建议在 stunnel 和客户端之间进行加密。)
  5. 点击下一步。
  6. 输入身份验证参数:

    身份验证方法:简单身份验证
    绑定 DN 或用户:管理控制台中的访问凭据用户名
    绑定密码:管理控制台中的访问凭据密码
  7. 点击下一步。
  8. 输入基本 DN。
    这是 DN 格式的域名(example.com 的 DN 格式为 dc=example,dc=com)。
  9. 点击完成。

Atlassian Jira

Atlassian Jira 会在用户身份验证期间执行用户查找,以获取有关用户的更多信息。为确保此 LDAP 客户端的用户身份验证功能正常运行,您需要为所有已启用验证用户凭据的组织部门启用读取用户信息和读取群组信息。(有关说明,请参阅配置访问权限)。

重要提示:按照以下说明操作可能会向用户和日志文件公开 KeystorePassword。请采取预防措施,避免未经授权访问本地 shell、日志文件和 Google 管理控制台。作为以下说明的替代方案,您可以使用 stunnel4 方法(请参阅可选:使用 stunnel 作为代理)。

注意:以下说明假设 Jira 安装在 /opt/atlassian/jira。

如需将 Atlassian Jira 客户端连接到安全 LDAP 服务,请执行以下操作:

  1. 将证书和密钥复制到 Jira 服务器(这是在将 LDAP 客户端添加到安全 LDAP 服务时,在 Google 管理控制台中生成的证书。)

    例如:
    $ scp ldap-client.key user@jira-server:
  2. 将证书和密钥转换为 Java 密钥库格式。在此过程中,系统会提示您输入密码。为简单起见,请选择一个安全密码,并在每次系统提示时使用同一密码。

    $ openssl pkcs12 -export -out jira-ldap.pkcs12 -in ldap-client.crt -inkey ldap-client.key

    $ sudo /opt/atlassian/jira/jre/bin/keytool -v -importkeystore -srckeystore jira-ldap.pkcs12 -srcstoretype PKCS12 -destkeystore /opt/atlassian/jira/jira-ldap.jks -deststoretype JKS

  3. 将 Jira 配置为使用新创建的密钥库。按照此处的说明添加选项:

    "-Djavax.net.ssl.keyStore=/opt/atlassian/jira/jira-ldap.jks -Djavax.net.ssl.keyStorePassword=password"

    在 Linux 上:
    1. 修改 /opt/atlassian/jira/bin/setenv.sh。
    2. 找到 JVM_SUPPORT_RECOMMENDED_ARGS 设置。
    3. 添加“-Djavax.net.ssl.keyStore=/opt/atlassian/jira/jira-ldap.jks -Djavax.net.ssl.keyStorePassword=password”,并将“password”替换为您在上面选择的密码。
  4. 重启 Jira。

    $ /opt/atlassian/jira/bin/stop-jira.sh
    $ /opt/atlassian/jira/bin/start-jira.sh

  5. 以管理员身份登录 Jira 网页界面。
    1. 前往设置 > 用户管理。(这里的设置,是指右上角的齿轮图标)。
    2. 点击 User Directories(用户目录)。
    3. 点击添加目录。
    4. 选择 LDAP 作为类型。
    5. 点击下一步。
  6. 输入以下内容:

    Name(名称)

    Google Secure LDAP

    Directory type(目录类型)

    OpenLDAP

    Hostname(主机名)

    ldap.google.com

    Port(端口)

    636

    Use SSL(使用 SSL)

    勾选

    用户名

    请在 Google 管理控制台中生成用户名和密码。有关说明,请参阅生成访问凭据。

    密码

    请在 Google 管理控制台中生成用户名和密码。有关说明,请参阅生成访问凭据。

    Base DN(基本 DN)

    您的域名(采用 DN 格式,例如 example.com 的 DN 为 dc=example,dc=com)。

    Additional User DN(其他用户 DN)

    可选。"ou=Users"

    Additional Group DN(其他群组 DN)

    可选。"ou=Groups"

    LDAP Permissions(LDAP 权限)

    只读

    Advanced Settings(高级设置)

    未更改

    User Schema Settings(用户架构设置)>
    User Name Attribute(用户名称属性)

    googleUid

    User Schema Settings(用户架构设置)>
    User Name RDN Attribute(用户名称 RDN 属性)

    uid

    Group Schema Settings(群组架构设置)>
    Group Object Class(群组对象类)

    groupOfNames

    Group Schema Settings(群组架构设置)>
    Group Object Filter(群组对象过滤器)

    (objectClass=groupOfNames)

    Membership Schema Settings(成员架构设置)>
    Group Members Attribute(群组成员属性)

    member

    Membership Schema Settings(成员架构设置)>
    Use the User Membership Attribute(使用用户成员属性)

    勾选
  7. 为群组授予角色。

    在 Atlassian Jira 允许用户登录之前,该用户必须是已获得 Jira 访问权限的群组的成员。

    要为群组授予角色,请按以下步骤操作:
    1. 依次前往设置 > 应用 > 应用访问权限。
    2. 在选择群组文本框中,输入您要为其提供 Jira 访问权限的 Google 群组的名称。

CloudBees Core/Jenkins

如需有关将 CloudBees Core 连接到安全 LDAP 服务的说明,请参阅 Configure CloudBees Core with Google's Cloud Identity Secure LDAP(配置 CloudBees Core,将其添加至 Google 的 Cloud Identity 安全 LDAP 服务)。

FreeRadius

请按照以下步骤操作:

  1. 在 /etc/freeradius/3.0/ 安装并配置 FreeRADIUS。

    FreeRADIUS 安装完毕后,您可以安装“freeradius-ldap”插件以添加 LDAP 配置。

    $ sudo apt-get install freeradius freeradius-ldap
  2. 将 LDAP 客户端密钥和证书文件分别复制到 /etc/freeradius/3.0/certs/ldap-client.key 和 /etc/freeradius/3.0/certs/ldap-client.crt。

    $ chown freeradius:freeradius
    /etc/freeradius/3.0/certs/ldap-client.*
    $ chmod 640 /etc/freeradius/3.0/certs/ldap-client.*

  3. 启用 LDAP 模块。

    $ cd /etc/freeradius/3.0/mods-enabled/
    $ ln -s ../mods-available/ldap ldap

  4. 修改 /etc/freeradius/3.0/mods-available/ldap。
    1. ldap->server = 'ldaps://ldap.google.com:636'
    2. identity = 应用凭据中的用户名
    3. password = 应用凭据中的密码
    4. base_dn = 'dc=domain,dc=com'
    5. tls->start_tls = no
    6. tls->certificate_file = /etc/freeradius/3.0/certs/ldap-client.cer
    7. tls->private_key_file = /etc/freeradius/3.0/certs/ldap-client.key
    8. tls->require_cert = 'allow'
    9. 注释掉面包屑导航中代表“ldap -> post-auth -> update”部分的所有字段
  5. 修改 /etc/freeradius/3.0/sites-available/default。
    这会修改 FreeRadius 客户端连接。如果您使用的不是默认客户端,请务必更新您已配置的相关客户端(内部隧道或任何自定义客户端)。
    1. 修改 authorize 部分,在底部密码身份验证协议 (PAP) 语句之后添加以下代码块:

      if (User-Password) {
      update control {
      Auth-Type := ldap
      }
      }

    2. 在 authorize 部分中,移除 LDAP 前面的“-”符号,以启用 LDAP。

      #
      # ldap 模块从 LDAP 数据库中读取密码。
      ldap
    3. 通过修改 Auth-Type LDAP 块来修改 authenticate 部分,如下所示:

      # Auth-Type LDAP {
      ldap
      # }

    4. 通过修改 Auth-Type PAP 块来修改 authenticate 部分,如下所示:

      Auth-Type PAP {
      # pap
      ldap
      }

GitLab

如需有关将 GitLab 连接到安全 LDAP 服务的说明,请参阅 Configure Google Secure LDAP for GitLab(为 GitLab 配置 Google Secure LDAP)。

Itopia/Ubuntu

如需有关将 Itopia/Ubuntu 连接到安全 LDAP 服务的说明,请参阅 Configuring Google Cloud Identity LDAP on Ubuntu 16.04 for user logins(在 Ubuntu 16.04 上为用户登录凭据配置 Google Cloud Identity LDAP)。

Ivanti/LanDesk

请按照以下步骤操作:

  1. 在 Ivanti Web 服务器上,使用文本编辑器打开以下两个文件夹中的 OpenLDAPAuthenticationConfiguration.xml 或 OpenLDAPSSLAuthenticationConfiguration.xml:

    C:\ProgramData\LANDesk\ServiceDesk\servicedesk.Framework 和 C:\ProgramData\LANDesk\ServiceDesk\servicedesk.WebAccess(其中 servicedesk 是实例名称)
  2. 将 <Server> 值更新为 ldap.google.com。
  3. 将 <Port> 值更新为端口 3268(对于启用了 StartTLS 的明文)和 3269(对于 SSL/TLS 端口)(默认值为 389 [对于明文端口] 或 636 [对于 SSL/TLS 端口])。
  4. 将 <TestDN> 值设置为 DN 格式的域名。(例如,对于 example.com,则为 dc=example,dc=com)。
  5. 在 ..ProgramData\LANDesk\ServiceDesk\ServiceDesk.Framework\tps.config 和 ..ProgramData\LANDesk\ServiceDesk\WebAccess\tps.config 中,添加以下代码行:

    <add key="AuthenticationProvider" value="Touchpaper.Integrations.OpenLDAPLogon.OpenLDAPAuthenticationProvider" />

    或以下代码行:

    <add key="AuthenticationProvider" value="Touchpaper.Integrations.OpenLDAPSSLLogon.OpenLDAPSSLAuthenticationProvider" />
  6. 在 Ivanti Configuration Center(Ivanti 配置中心)中,打开需要的实例。
  7. 点击 Service Desk Framework 应用旁边的 Edit(修改)。
    系统会针对 Service Desk Framework 应用显示 Edit Application(修改应用)对话框。
  8. 在 Configuration parameters(配置参数)组中,从 Logon policy(登录政策)列表中选择 Explicit only(仅限明示),然后点击 OK(确定)。
  9. 点击 Web Access 应用旁边的修改。
    系统会针对 Web Access 应用显示 Edit Application(修改应用)对话框。
  10. 在配置参数组中,在登录政策列表中选择仅显式,然后点击确定。

登录时,请使用相关网域用户的网络密码。

LDAP 服务器身份验证的异常日志记录

如果您在配置 LDAP 服务器身份验证时遇到问题,可以启用异常日志记录来帮助您找出问题。异常日志记录功能在默认情况下处于停用状态,我们建议您在完成调查后重新停用此功能。

如需为 LDAP 服务器身份验证启用异常日志记录,请执行以下操作:

  1. 使用文本编辑器打开要修改的身份验证配置 XML 文件:

    DirectoryServiceAuthenticationConfiguration.xml、OpenLDAPAuthenticationConfiguration.xml 或 OpenLDAPSSLAuthenticationConfiguration.xml
  2. 将以下行:

    <ShowExceptions>false</ShowExceptions>
    更改为
    <ShowExceptions>true</ShowExceptions>
  3. 保存更改。

ldp.exe (Windows)

请按照以下步骤操作:

  1. 将证书和密钥文件转换为一个 PKCS12 格式的文件。在命令提示符处,输入以下内容:

    如果您使用的是 macOS 或 Linux,请使用以下命令:

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    输入密码以加密输出文件。

    如果您使用的是 Windows,请使用以下命令:

    $ certutil -mergepfx ldap-client.crt ldap-client.p12

    重要提示:这两个文件(<CERT_FILE>.crt 和 <CERT_FILE>.key)必须位于同一目录中。此外,请确保 key 和 crt 具有相同的名称(但扩展名不同)。在本示例中,我们使用名称 ldap-client.crt 和 ldap-client.key。

  2. 转到控制面板。
  3. 在搜索框中,搜索“证书”,然后点击管理用户证书。
  4. 转到 Action(操作)> All Tasks(所有任务)> Import…(导入…)
  5. 选择 Current User(当前用户),然后点击 Next(下一步)。
  6. 点击 Browse…(浏览…)。
  7. 在对话框右下角的“File type”(文件类型)下拉列表中,选择 Personal Information Exchange (*.pfx;*.p12)(个人信息交换证书文件 (*.pfx;*.p12))。
  8. 选择第 2 步中的 ldap-client.p12 文件,点击打开,然后点击下一步。
  9. 输入在第 2 步获取的密码,然后点击 Next(下一步)。
  10. 选择个人证书存储区,点击下一步,然后点击完成。
  11. 运行 Ldp.exe。
  12. 依次前往 Connection > Connect…(连接 > 连接…)
  13. 输入以下连接详细信息:

    Server(服务器):ldap.google.com
    Port(端口):636
    Connectionless(无连接):不勾选
    SSL:勾选
  14. 点击确定。
  15. 转到 View(查看)> Tree(树)。
  16. 输入基本 DN,也就是您的域名(采用 DN 格式,例如 example.com 的 DN 为 dc=example,dc=com)。
  17. 点击确定。
  18. 如果连接成功,LDP.exe 会在右侧窗格中显示 Active Directory 内容,例如基本 DN 中的所有属性。

Netgate/pfSense

如需有关将 Netgate/pfSense 连接到安全 LDAP 服务的说明,请参阅 Configuring Google Cloud Identity as an Authentication Source(将 Google Cloud Identity 配置为身份验证来源)。

OpenLDAP/ldapsearch (Linux)

如要通过命令行访问 LDAP 目录,您可以使用 OpenLDAP ldapsearch 命令。

假设您的客户端证书和密钥文件分别为 ldap-client.crt 和 ldap-client.key,您的网域为 example.com,用户名为 jsmith:

$ LDAPTLS_CERT=ldap-client.crt LDAPTLS_KEY=ldap-client.key ldapsearch -H ldaps://ldap.google.com -b dc=example,dc=com '(uid=jsmith)'

这会将相关环境变量设置为指向客户端密钥。您可以将其他 ldapsearch 选项替换为需要的过滤器、要求的属性等等。如需了解其他详情,请参阅 ldapsearch 手册页(“man ldapsearch”)。

ldapsearch (macOS)

请按照以下步骤操作:

  1. 将证书和密钥文件转换为一个 PKCS12 格式的文件。在命令提示符处,输入以下内容:

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    输入密码以加密输出文件。
  2. 点击菜单栏右上角的 ,然后输入钥匙串访问。
  3. 打开“钥匙串访问”应用,然后点击左侧列表中的系统。
  4. 点击左侧菜单栏中的文件选项,然后选择导入项目。
  5. 浏览到生成的 ldap-client.p12 所在的位置,选择 ldap-client.p12,然后点击打开。
    如果系统提示,请输入您的密码。
    现在,名为 LDAP Client 的证书应该会显示在系统钥匙串证书列表中。
  6. 点击 LDAP 客户端证书旁的箭头。私钥会显示在公钥下方。
    1. 双击私钥。
    2. 在对话框中,选择访问权限控制标签页,然后点击左下角的 +。
    3. 在打开的窗口中,按 Command+Shift+G 打开一个新窗口,然后将现有文本替换为 /usr/bin/ldapsearch。

    4. 点击 Go(继续)。

      系统会打开一个窗口并突出显示 ldapsearch。

    5. 点击添加。

    6. 点击保存更改,并在系统提示时输入密码。

      您现在可以在命令行中使用 OpenLDAP ldapsearch 命令访问 LDAP 目录。

  7. 假设您之前导入到钥匙串中的 ldap-client.p12 文件名为 LDAP Client,您的域名为 example.com,用户名为 jsmith,请输入以下内容:

    $ LDAPTLS_IDENTITY="LDAP Client" ldapsearch -H ldaps://ldap.google.com:636 -b dc=example,dc=com '(uid=jsmith)'

这样会将相关环境变量设为指向导入的客户端证书。您可以将其他 ldapsearch 选项替换为需要的过滤器、要求的属性等等。有关详情,请参阅 ldapsearch 手册页面(“man ldapsearch”)。

OpenVPN(社区版)

请按照以下步骤操作:

  1. 请首先安装并配置 OpenVPN 的基本参数;如果您已安装并配置完毕,请在 OpenVPN 中打开设置页面。

    VPN 的常规配置不在这篇帮助文章的讨论范围内。完成 VPN 常规配置以后,您可以通过 LDAP 添加用户身份验证和授权。具体而言,您需要安装 openvpn-auth-ldap 插件。

    $ sudo apt-get install openvpn openvpn-auth-ldap
  2. 将 LDAP 客户端密钥和证书文件复制到 /etc/openvpn/ldap-client.key 和 /etc/openvpn/ldap-client.crt。
  3. 创建一个文件 /etc/openvpn/auth-ldap.conf,其中包含以下内容(假设 example.com 是域名):

    <LDAP>
    URL ldaps://ldap.google.com:636 #
    Timeout 15
    TLSEnable false
    TLSCACertDir /etc/ssl/certs
    TLSCertFile /etc/openvpn/ldap-client.crt
    TLSKeyFile /etc/openvpn/ldap-client.key
    </LDAP>
    <Authorization>
    BaseDN "dc=example,dc=com"
    SearchFilter "(uid=%u)" # (or choose your own LDAP filter for users)
    RequireGroup false
    </Authorization>

  4. 修改 OpenVPN 配置文件,通常名为 /etc/openvpn/server.conf 或类似名称。在文件底部添加以下内容:

    plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth-ldap.conf
    verify-client-cert optional

  5. 重启 OpenVPN 服务器。

    $ sudo systemctl restart openvpn@server
  6. 将 VPN 客户端配置为使用用户的用户名和密码。例如,在 OpenVPN 客户端配置中,将 auth-user-pass 添加到 OpenVPN 客户端配置文件的末尾,然后启动 OpenVPN 客户端:

    $ openvpn --config /path/to/client.conf
  7. 按照将 stunnel 用作代理的说明操作。

OpenVPN Access Server(商业版)

如需有关将 OpenVPN Access Server 连接到安全 LDAP 服务的说明,请参阅 Configuring Google Secure LDAP with OpenVPN Access Server(使用 OpenVPN Access Server 配置 Google Secure LDAP)。

PaperCut MF 和 PaperCut NG

如需有关将 PaperCut 连接到安全 LDAP 服务的说明,请参阅如何在 PaperCut 中同步 Google Workspace 和 Google Cloud Identity 用户并对其进行身份验证。

Puppet Enteprise

如需有关将 Puppet Enterprise 连接到安全 LDAP 服务的说明,请参阅 Google Cloud Directory for PE(适用于 PE 的 Google Cloud Directory)。

Softerra LDAP Browser

重要提示:在开始之前,请确保您已安装 Softerra LDAP Browser 4.5 (4.5.19808.0) 或更高版本。请参阅 LDAP Browser 4.5。

请按照以下步骤操作:

  1. 将证书和密钥文件转换为一个 PKCS12 格式的文件。在命令提示符处,输入以下内容:

    如果您使用的是 macOS 或 Linux,请使用以下命令:

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    输入密码以加密输出文件。

    如果您使用的是 Windows,请使用以下命令:

    $ certutil -mergepfx ldap-client.crt ldap-client.p12

    重要提示:这两个文件(<CERT_FILE>.crt 和 <CERT_FILE>.key)必须位于同一目录中。此外,请确保 key 和 crt 具有相同的名称(但扩展名不同)。在本示例中,我们使用名称 ldap-client.crt 和 ldap-client.key。

  2. 在 Softerra LDAP Browser 中,安装密钥对。
    1. 转到 Tools(工具)> Certificate Manager(证书管理器)。
    2. 点击 Import…(导入…)。
    3. 点击 Next(下一步)。
    4. 点击 Browse…(浏览…)。
    5. 在对话框右下角的文件类型下拉列表中,选择 Personal Information Exchange (*.pfx;*.p12)(个人信息交换证书文件 (*.pfx;*.p12))。
    6. 选择上述第 2 步中的 ldap-client.p12 文件。
    7. 点击 Open(打开),然后点击 Next(下一步)。
    8. 输入在第 2 步获取的密码,然后点击 Next(下一步)。
    9. 选择个人证书存储区。
    10. 点击下一步。
    11. 点击完成。
  3. 添加服务器配置文件。
    1. 依次前往 File > New > New Profile…
    2. 输入配置文件名称,例如“Google LDAP”。
    3. 点击下一步。

      输入以下内容:

      Host(主机):ldap.google.com
      Port
      (端口):636
      Base DN(基准 DN):DN 格式的域名。(例如,对于 example.com,输入 dc=example,dc=com)
      使用安全连接 (SSL):已选中
    4. 点击下一步。
    5. 选择 External (SSL Certificate)(外部 (SSL 证书))
    6. 点击下一步。
    7. 点击完成。

Sophos Mobile

如需有关将 Sophos Mobile 连接到安全 LDAP 服务的说明,请参阅使用安全 LDAP 将 Sophos Mobile 连接到 Google Cloud Identity / Google Cloud Directory。

Splunk

将 Splunk 连接到安全 LDAP 服务时,请务必使用 Splunk 8.1.4 版或更高版本。使用较旧的 Splunk 版本(例如 Splunk 8.1.3 版)时,系统可能会向 LDAP 服务器发送过多的 LDAP 查询,这可能会导致您的 LDAP 配额很快用尽。如需详细了解 Splunk 8.1.3 版问题,请参阅 Splunk 已知问题。

请按照以下步骤操作:

  1. 将 LDAP 客户端密钥和证书文件分别复制到 /home/splunk/splunkadmin/etc/openldap/certs/ldap-client.key 和 /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.crt。

    $ cat /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.crt /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.key > /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.pem

    $ sudo chown $(splunkuser):$(splunkuser) /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.*

    $ sudo chmod 644 /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.*

  2. 修改 ldap.conf 文件,添加以下配置:

    ssl start_tls
    TLS_REQCERT never
    TLS_CERT /home/splunkadmin/splunk/etc/openldap/certs/ldap.pem
    TLS_KEY /home/splunkadmin/splunk/etc/openldap/certs/ldap.pem

  3. 在用户的 /home/splunkadmin/.ldaprc 文件中添加以下配置:

    TLS_CERT /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.pem
    TLS_KEY /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.pem

  4. 使用 Splunk 网页界面添加 LDAP 策略。输入以下详细信息,然后点击保存:

名称

Google Secure LDAP

主机

ldap.google.com

Port(端口)

636

已启用 SSL

勾选

连接顺序

1

绑定 DN

输入您在 Google 管理控制台中生成的访问凭据。

绑定 DN 密码

输入您在 Google 管理控制台中生成的访问凭据。

Base DN(基本 DN)

DN 格式的域名(例如,域名 example.com 的 DN 格式为 dc=example,dc=com)

用户群过滤条件

根据您计划用于过滤用户的对象类别,输入对应的用户群过滤条件。

用户名属性

uid

实名属性

displayname

电子邮件属性

mail

群组映射属性

dn

群组基本 DN

DN 格式的域名(例如,对于域名 example.com,输入 ou=Groups,dc=example,dc=com)

静态群组搜索过滤条件

根据您计划用于过滤用户的对象类别,输入对应的静态群组搜索过滤条件。

组名称属性

cn

静态成员属性

位成员

SSSD(Red Hat Enterprise 和 CentOS)

在用户身份验证过程中,SSSD 会执行用户查询,以便获取更多用户信息。为确保此 LDAP 客户端的用户身份验证功能正常运行,您需要为所有已启用验证用户凭据的组织部门启用读取用户信息和读取群组信息。(有关说明,请参阅配置访问权限)。

如需将 Red Hat 8 或 CentOS 8 上的 SSSD 客户端连接到安全 LDAP 服务,请执行以下操作:

  1. 将 SSSD 客户端添加到安全 LDAP 服务:
    1. 在 Google 管理控制台中,转到应用 > LDAP > 添加客户端。
      请务必使用您的公司账号(而非个人 Gmail 账号)登录。
    2. 输入客户端详细信息,然后点击继续。
    3. 配置访问权限:
      验证用户凭据 - 整个网域
      读取用户信息 - 整个网域
      读取群组信息 - 开启
    4. 点击添加 LDAP 客户端。
    5. 下载已生成的证书。
    6. 点击继续前往客户端详细信息页面。
    7. 将服务状态更改为开启。
  2. 安装依赖项:

    dnf install openldap-clients sssd-ldap
    install -d --mode=700 --owner=sssd --group=root /etc/sssd/ldap


    解压缩证书 .zip 文件,并将 .crt 和 .key 文件复制到 /etc/sssd/ldap
  3. (可选)使用 ldapsearch 进行测试:

    LDAPTLS_REQCERT=never \
    LDAPTLS_KEY=Google.key \
    LDAPTLS_CERT=Google.crt \
    ldapsearch -H ldaps://ldap.google.com:636/ \
    -b dc=example,dc=com \
    -D usertoverify@example.com \
    -W \
    '(mail=usertoverify@example.com)' \
    mail dn


    在系统提示时输入用户的 Google 密码。

    注意:用户必须拥有 Google Workspace 企业版或 Cloud Identity 专业版许可。

  4. 创建包含以下内容的文件 /etc/sssd/sssd.conf:

    [sssd]
    services = nss, pam
    domains = example.com

    [domain/example.com]
    ldap_tls_cert = /etc/sssd/ldap/Google.crt
    ldap_tls_key = /etc/sssd/ldap/Google.key
    ldap_tls_reqcert = never
    ldap_uri = ldaps://ldap.google.com
    ldap_search_base = dc=example,dc=com
    id_provider = ldap
    auth_provider = ldap
    ldap_schema = rfc2307bis
    ldap_user_uuid = entryUUID

  5. 更新权限和 SELinux 标签:

    chown 0:0 /etc/sssd/sssd.conf /etc/sssd/ldap/*
    chmod 600 /etc/sssd/sssd.conf /etc/sssd/ldap/*
    restorecon -FRv /etc/sssd

  6. 重启 SSSD:

    systemctl restart sssd
  7. 测试:

    通过安全外壳协议连接到服务器:

    ssh -l user@example.com {HOSTNAME}

问题排查

  1. 检查 SSSD 版本(必须大于或等于 1.15.2):

    # sssd --version
    2.2.3

  2. 在 RHEL/CentOS(或任何强制执行 SELinux 的发行版)中,SSSD 配置文件、证书文件和密钥都必须位于 ssd_conf_t 角色可以访问的目录中:

    # egrep "object_r:sssd_conf_t" /etc/selinux/targeted/contexts/files/file_contexts

    检查 /var/log/audit/audit.log 是否包含 AVC 拒绝消息。

  3. 检查 /etc/nsswitch.conf 是否具有 passwd、shadow、group 和 netgroup 实体的“sss”:

    passwd: files sss
    shadow: files sss
    group: files sss
    netgroup: files sss


    在这里,本地文件将覆盖 LDAP 用户。
  4. 检查 /var/log/sssd.conf 是否存在配置错误:

    示例:
    [sssd] [sss_ini_add_snippets] (0x0020): Config merge error: File /etc/sssd/sssd.conf did not pass access check.Skipping.

    操作:您需要对 .conf 文件执行 chmod 600。

    示例:
    [sssd] [sss_ini_call_validators] (0x0020): [rule/allowed_domain_options]: Attribute 'ldap_groups_use_matching_rule_in_chain' is not allowed in section 'domain/{DOMAIN}'. Check for typos.

    [sssd] [sss_ini_call_validators] (0x0020): [rule/allowed_domain_options]: Attribute 'ldap_initgroups_use_matching_rule_in_chain' is not allowed in section 'domain/{DOMAIN}'. Check for typos.

    所需操作:从 ssd.conf 中移除不受支持的群组匹配 LDAP 扩展程序。

  5. 检查 /var/log/sssd_{DOMAIN}.log 是否包含 LDAP/network/auth 错误。

    示例:

    [sssd[be[example.com]]] [sss_ldap_init_sys_connect_done] (0x0020): ldap_install_tls failed: [Connect error] [error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed (self signed certificate)]

    所需操作:您需要将“ldap_tls_reqcert = never”添加到 sssd.conf。

    要记录错误内容的更多详情,请在 sssd.conf 文件的 domains 部分下方添加“debug_level = 9”,然后重启 sssd。

SSSD(其他 Linux 发行版)

在用户身份验证过程中,SSSD 会执行用户查询,以便获取更多用户信息。为确保此 LDAP 客户端的用户身份验证功能正常运行,您需要为所有已启用验证用户凭据的组织部门启用读取用户信息和读取群组信息。(有关说明,请参阅配置访问权限)。

如需将 SSSD 客户端连接到安全 LDAP 服务,请执行以下操作:

  1. 安装 SSSD 1.15.2 或更高版本。

    $ sudo apt-get install sssd
  2. 假设您的客户端证书和密钥文件名为 /var/ldap-client.crt 和 /var/ldap-client.key,并且您的网域为 example.com,请使用如下配置修改 /etc/sssd/sssd.conf:


    [sssd]
    services = nss, pam
    domains = example.com

    [domain/example.com]
    ldap_tls_cert = /var/ldap-client.crt
    ldap_tls_key = /var/ldap-client.key
    ldap_uri = ldaps://ldap.google.com
    ldap_search_base = dc=example,dc=com
    id_provider = ldap
    auth_provider = ldap
    ldap_schema = rfc2307bis
    ldap_user_uuid = entryUUID
    ldap_groups_use_matching_rule_in_chain = true
    ldap_initgroups_use_matching_rule_in_chain = true

  3. 更改配置文件的所有权和权限:

    $ sudo chown root:root /etc/sssd/sssd.conf
    $ sudo chmod 600 /etc/sssd/sssd.conf

  4. 重启 SSSD:

    $ sudo service sssd restart

提示:如果您在 Google Compute Engine 上没有外部 IP 地址的 Linux 计算机上使用 SSSD 模块,只要您启用了对 Google 服务的内部访问权限,就仍然可以连接到安全 LDAP 服务。如需了解详情,请参阅配置专用 Google 访问通道。

macOS

请按照以下步骤使用安全 LDAP 服务连接 macOS 客户端,以便进行用户账号身份验证。

系统要求

  • 必须使用 Catalina 10.15.4 或更高版本的 macOS。
  • 必须提供 Google 超级用户用户 ID,才能完成准备阶段中的第 1 步。
  • 您需要拥有本地管理员权限才能进行此配置。

目录:

准备阶段

这一部分的说明介绍了如何使用安全 LDAP 服务手动设置和测试 macOS 身份验证。

第 1 步:在 Google 管理控制台中将 macOS 注册为 LDAP 客户端

如需查看相关说明,请参阅添加 LDAP 客户端,或观看此安全 LDAP 演示。在此过程中,您还会下载自动生成的 TLS 客户端证书。

第 2 步:将证书导入系统钥匙串

  1. 将证书(在第 1 步中下载的 zip 文件)和密钥复制到 macOS 计算机。
    提示:解压缩文件即可找到证书和密钥文件。
  2. 将密钥对导入系统钥匙串:
    1. 将密钥和证书转换为 PKCS 12 (p12) 文件。在终端中运行以下命令:

      openssl pkcs12 -export -out ldap-client.p12 -in ldap-client.crt -inkey ldap-client.key

      提示:请记下 .p12 文件的名称。

      系统会要求您输入密码。输入用于加密 p12 文件的密码。

    2. 打开钥匙串访问应用。

    3. 点击系统钥匙串。

    4. 点击文件 > 导入项目。

    5. 选择上文中创建的 ldap-client.p12 文件。

    6. 如果系统提示,请输入管理员密码以允许修改系统钥匙串。

    7. 输入您在上文中创建的密码以解密 p12 文件。

      注意:您应该会在密钥列表中看到新的证书和关联的私钥。这个新证书可能名为 LDAP Client。记下证书的名称,以便在下面的下一步中使用。
    8. 按照本文 ldapsearch (macOS) 部分第 6 步的操作,为私钥设置“访问权限控制”选项,以添加下文中指定的应用。如果“所有项目”类别下未显示私钥,请尝试切换到“我的证书”类别,然后展开相应证书以找到正确的私钥条目。

      说明中指定的 ldapsearch 应用仅在需要排查问题时才相关,不适用于其他用途。通常会在向用户提供 macOS 访问权限之前将其移除。

      必须将以下三个应用添加到访问权限控制列表:

      /System/Library/CoreServices/Applications/Directory Utility
      /usr/libexec/opendirectoryd
      /usr/bin/dscl
  3. 向 /etc/openldap/ldap.conf 配置文件中添加一行,确保“LDAP 客户端”与导入 .p12 文件后 macOS 钥匙串访问应用中显示的证书名称完全相同(该名称来自所生成证书的 X.509 主题通用名称):

    sudo bash -c 'echo -e "TLS_IDENTITY\tLDAP Client" >> /etc/openldap/ldap.conf'

第 3 步:将设备指向 Google 目录进行身份验证

打开目录实用工具应用,以创建新的 LDAP 目录节点:

  1. 点击锁按钮以进行更改,然后输入您的密码。
  2. 选择 LDAPv3,然后点击铅笔图标以修改设置。
  3. 点击 New…(新建…)
  4. 在服务器名称字段中,输入 ldap.google.com,选择使用 SSL 加密,然后点击手动。
  5. 选择新的服务器名称,然后点击 Edit…(修改…)
  6. 输入描述性名称(例如 Google 安全 LDAP)作为配置名称。
  7. 选择使用 SSL 加密,并确保端口设置为 636。
  8. 转到 Search & Mappings(搜索与映射)标签页。
    1. 从使用以下协议访问此 LDAPv3 服务器下拉列表中选择 RFC2307。
    2. 看到提示时,在搜索基本后缀中输入与网域相关的信息。例如,如果域名为 zomato.com,请输入 dc=zomato,dc=com。
    3. 点击确定。
    4. 在用户记录类型下配置属性:
      1. 在记录类型和属性部分,选择用户,然后点击“+”按钮。
      2. 在弹窗中,选择 Attribute Types(属性类型),选择 GeneratedUID,然后点击 OK(确定)以关闭弹窗。

        GeneratedUID 应在展开后显示在“Users”下。
      3. 点击 GeneratedUID,然后点击右侧框中的“+”图标。
      4. 在文本框中输入 apple-generateduid,然后按 Enter 键。
      5. 在 Users 节点下,点击 NFSHomeDirectory 属性。
      6. 在右侧屏幕中,将此属性的值更新为 #/Users/$uid$
      7. 点击确定,然后输入密码以保存更改。
  9. 在“目录实用工具”窗口中,采取新的 LDAP 配置:
    1. 前往搜索政策标签页。
    2. 点击锁形图标以进行更改,并在出现提示时输入当前用户的密码。
    3. 将下拉选项从 Search Path(搜索路径)更改为 Custom path(自定义路径)。
    4. 打开 Authentication(身份验证)标签页,然后点击“+”图标。
    5. 从“目录网域”列表中选择 /LDAPv3/ldap.google.com,然后点击添加。
    6. 点击应用按钮,并在系统提示时输入管理员密码。
  10. 运行以下四个命令分别停用 DIGEST-MD5、GRAM-MD5、NTLM 和 GSSAPI SASL 身份验证机制。macOS 将使用简单绑定通过 Google 安全 LDAP 服务进行身份验证:

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string DIGEST-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string CRAM-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string NTLM" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string GSSAPI" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

  11. 重新启动以重新加载 OpenDirectory 配置。

第 4 步:创建移动账号(允许离线登录)

任何 Google Workspace 或 Cloud Identity 用户都可以使用网络账号(Google 账号)用户名和密码登录。使用这种方式登录需要网络连接。如果用户想要在没有网络连接的情况下登录,则可创建移动账号。无论您是否连接到网络,移动账号都可让您使用网络账号(Google 账号)用户名和密码登录。如需了解详情,请参阅在 Mac 上创建和配置移动账号。

要为安全 LDAP 用户创建移动账号,请执行以下操作:

  1. 运行以下命令,连接到安全 LDAP 服务器并设置主路径和移动账号:

    sudo /System/Library/CoreServices/ManagedClient.app/Contents/Resources/createmobileaccount -n $uid -v

    提示:将 $uid 替换为与用户的 Google 账号关联的电子邮件地址的用户名部分。例如,jsmith 是 jsmith@solarmora.com 的用户名部分。

  2. 当系统提示输入 SecureToken 管理员用户名时,请输入您的管理员用户名,然后在下一个提示中输入您的密码。这会将 $uid 添加到文件保险箱中。如果 macOS 磁盘已加密,则需要执行此操作。

第 5 步:(可选)设置登录屏幕偏好设置

  1. 依次前往系统偏好设置 > 用户与群组 > 登录选项(位于左下角)。
  2. 点击锁按钮,然后输入管理员凭据以解锁。
  3. 将登录窗口显示为更改为名称和密码。

第 6 步:重启并登录您的设备

  1. 确保设备已连接到互联网。如果您没有互联网连接,安全 LDAP 用户将无法登录。
    注意:只有在首次登录时才需要连接到网络。任何后续登录都可以在没有网络连接的情况下进行。
  2. 使用已配置为通过安全 LDAP 进行身份验证的用户账号登录设备。

部署阶段

这一部分的说明介绍了如何为用户自动配置设备配置。在准备阶段完成手动配置的同一 macOS 设备上,执行以下第 1 步和第 2 步。

第 1 步:使用 Apple Configurator 2 创建包含证书的 Mac 配置文件

  1. 在您通过安全 LDAP 手动配置 macOS 身份验证的计算机上安装 Apple Configurator 2。
  2. 打开 Apple Configurator 2,新建配置文件,然后在“Certificate”(证书)部分点击“Configure”(配置),然后导入之前生成的 .p12 文件。

    注意:请确保此 .p12 文件已设置密码。在证书的“密码”部分中输入此密码。

  3. 保存此配置文件。
  4. (对于使用 M1 或 M2 处理器的设备,请跳过此步骤,然后继续执行第 5 步。)使用任意文本编辑器打开此配置文件,并在第一个 <dict> 标记中添加以下代码段:

    <key>PayloadScope</key>
    <string>System</string>


    添加此代码段的原因是 Apple Configurator 尚不支持 macOS 的配置文件。
  5. 在第二个 <dict> 标记(与证书数据平行)中,添加以下代码行:

    <key>AllowAllAppsAccess</key>
    <true/>


    这样可以确保所有应用都可访问此证书。

第 2 步:将目录配置文件 (plist) 转换为 xml

在此步骤中,您需要将准备阶段第 3 步中完成的所有手动配置提取到一个 XML 文件中。您可以使用此文件和上述第 1 步中创建的 Mac 配置文件来自动配置其他 macOS 设备。

  1. 将 /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist 复制到桌面或其他地方。
  2. 将其转换成 XML 文件,以便在任何文本编辑器中对其进行检查。在终端中运行以下命令:

    sudo plutil -convert xml1 <path>/ldap.google.com.plist

    您可以通过 <path>/ldap.google.com.plist 访问该文件。
  3. 更改上述文件的权限,以便打开 XML 文件。请确保文件中有内容。

第 3 步:创建 Python 脚本,在最终用户设备上自动执行配置

复制下面的 Python 脚本,并将其保存为 Python 文件(.py 文件)。

注意:此示例脚本旨在与 Python 版本 3.10.x 兼容。此脚本是按原样提供的。Google 支持团队不会为示例脚本提供支持。

Ldap_python_config.py

#!/usr/bin/python
from OpenDirectory import ODNode, ODSession, kODNodeTypeConfigure
from Foundation import NSMutableData, NSData

import os
import sys

# Reading plist
GOOGLELDAPCONFIGFILE = open(sys.argv[1], "r")
CONFIG = GOOGLELDAPCONFIGFILE.read()
GOOGLELDAPCONFIGFILE.close()

# Write the plist
od_session = ODSession.defaultSession()
od_conf_node, err = ODNode.nodeWithSession_type_error_(od_session, kODNodeTypeConfigure, None)
request = NSMutableData.dataWithBytes_length_(b' '*32, 32)
request.appendData_(NSData.dataWithBytes_length_(str.encode(CONFIG), len(CONFIG)))
response, err = od_conf_node.customCall_sendData_error_(99991, request, None)

# Edit the default search path and append the new node to allow for login
os.system("dscl -q localhost -append /Search CSPSearchPath /LDAPv3/ldap.google.com")
os.system("bash -c 'echo -e \"TLS_IDENTITY\tLDAP Client\" >> /etc/openldap/ldap.conf' ")

第 4 步:自动配置最终用户设备

前往您要配置的其他 macOS 设备,然后按照以下步骤操作:

  1. 将第 1 步生成的 Mac 配置描述文件、第 2 步生成的 XML 配置文件和第 3 步中的 Python 脚本复制到该设备。
  2. 如需为脚本安装必要的依赖项,请运行以下命令:
    python3 -m pip install pyobjc-framework-opendirectory
  3. 运行以下命令:
    sudo python </path/to/saved_python_script> </path/to/ldap.google.com.plist generated in step 2>
  4. 要将证书导入 macOS 系统钥匙串,请双击第 1 步生成的 Mac 配置描述文件,并在系统提示时输入 macOS 本地管理员凭据。然后,系统会提示您输入在准备阶段设置的 .p12 密码。
  5. 重启 macOS 计算机。
  6. 按照准备阶段第 4 步中的说明创建移动账号,并根据需要设置准备阶段第 5 步中列出的其他偏好设置。

限制和指南

  • 对于使用 Google 凭据登录 macOS 的用户,其 Workspace 账号用户名必须与其 macOS 用户个人资料用户 ID 不同,否则登录会被阻止。
  • 在用户开始使用 Google 凭据登录 macOS 后,您必须在 Google 网站上(例如,在 myaccount.google.com 或 Google 管理控制台中)进行用户密码管理(重置或恢复)。如果您选择使用第三方解决方案进行密码管理,请确保最新密码已与 Google 同步。
  • 如果管理员创建了新用户或重置了现有用户的密码,并且开启了要求在下次登录时更改密码设置,则用户无法使用管理员设置的临时密码登录 Mac。
    解决方法:用户需要使用其他设备(例如移动设备或其他桌面设备)登录 Google,设置永久密码,然后使用新密码登录 macOS。
  • Mac 必须连接到有效的互联网连接,以便在完成上述配置后首次登录期间可以访问 ldap.google.com。只要您选择设置移动账号,任何后续登录均无需互联网连接。
  • 我们在 macOS Catalina、Big Sur 和 Monterey 上测试了 macOS 与 Google 安全 LDAP 的集成。

问题排查

如果您在连接到安全 LDAP 服务时遇到问题,请按照以下说明操作。

第 1 步:验证连接。

使用 odutil 验证连接。
在终端中运行 odutil show nodenames 命令。
验证 /LDAPv3/ldap.google.com 状态是否为在线。如果状态不是“online”(在线),请尝试使用 telnet 选项。

使用 nc 验证连接。
在终端中执行以下命令:nc -zv ldap.google.com 636
如果您无法使用此方法连接到 Google,请尝试使用 IPv4 进行连接。

使用 IPv4 验证连接。
您可以按照以下步骤将设备更改为使用 IPv4:

  1. 转到系统偏好设置 > 网络 > Wi-Fi > 高级。
  2. 在“高级”菜单下,转到“TCP/IP”标签页。
  3. 将下拉菜单中的选择从配置 IPv6 更改为仅限本地链路。
  4. 点击确定,然后点击应用以保存更改。
  5. 通过 ldapsearch 的连接情况,以及进行有效的搜索,来检查服务是否可用。

第 2 步:检查您是否能够看到目录对象。

  1. 打开目录实用工具,然后打开目录编辑器标签页。
  2. 在下拉列表中选择 /LDAPv3/ldap.google.com 节点。
  3. 验证您是否能够看到 Google 网域中的用户和群组。

Java 应用的配置说明

大多数提供 LDAP 功能的 Java 应用都可以通过在应用的密钥库中安装客户端证书,配置为使用客户端证书进行身份验证。确切的配置文件因应用而异,但过程通常类似。设置要求安装 OpenSSL 和 Java 运行时环境。

  1. 将证书和密钥转换为 Java 密钥库格式。在此过程中,系统会提示您输入密码。选择一个安全的密码,并在所有提示中使用相同的密码。假设您的客户端密钥文件名为 ldap-client.key:

    如果您使用的是 macOS 或 Linux,请使用以下命令:

    $  openssl pkcs12 -export -out java-application-ldap.pkcs12 -in ldap-client.crt -inkey ldap-client.key
    

    如果您使用的是 Windows,请使用以下命令:

    $  certutil -mergepfx ldap-client.crt java-application-ldap.pkcs12
    

    重要提示:这两个文件(<CERT_FILE>.crt 和 <CERT_FILE>.key)必须位于同一目录中。此外,请确保 key 和 crt 具有相同的名称(具有两个不同的扩展名)。在本示例中,我们使用名称 ldap-client.crt 和 ldap-client.key。

  2. 将证书导入密钥库:

    $  keytool -v -importkeystore -srckeystore java-application-ldap.pkcs12 -srcstoretype PKCS12 -destkeystore java-application-ldap.jks -deststoretype JKS
    
  3. Java 属性可以采用不同的方式进行配置,具体取决于应用。通常,您可以在用于启动它的“java”命令行中使用 -D 选项来设置它们。为应用设置 Java 属性的代码如下:

    javax.net.ssl.keyStore = /<path-to>/java-application-ldap.jks
    javax.net.ssl.keyStorePassword = <password selected above>
    
  4. 使用基本配置说明中的信息配置应用的 LDAP 连接设置。

可选:使用 stunnel 作为代理

对于不提供使用客户端证书向 LDAP 进行身份验证的方法的客户端,请使用 stunnel 作为代理。

将 stunnel 配置为向 LDAP 服务器提供客户端证书,并将客户端配置为连接到 stunnel。理想情况下,您应在与应用相同的服务器上运行 stunnel,并且仅在本地监听,这样就不会将 LDAP 目录暴露给该服务器以外的其他服务器。

请按照以下步骤操作:

  1. 安装 Stunnel。例如,在 Ubuntu 上可以使用以下命令进行安装:

    $  sudo apt-get install stunnel4
    
  2. 创建一个包含以下内容的配置文件 /etc/stunnel/google-ldap.conf(假设 ldap-client.crt 是证书,ldap-client.key 是密钥):

    [ldap]
    client = yes
    accept = 127.0.0.1:1636
    connect = ldap.google.com:636
    cert = ldap-client.crt
    key =
    ldap-client.key

  3. 要启用 Stunnel,请修改 /etc/default/stunnel4 并设置 ENABLED=1。

  4. 重启 Stunnel。

    $  sudo /etc/init.d/stunnel4 restart
    
  5. 将应用配置为指向 ldap://127.0.0.1:1636。

    如果您还更改了上述配置文件中的 accept 行,则可以将“1636”替换为任何未使用的端口。您需要在客户端和 stunnel 之间使用明文 LDAP,而不启用 StartTLS/SSL/TLS,因为它们是在本地进行通信。

注意:如果您选择在单独的服务器上运行 stunnel,则必须配置防火墙,以便只有必要的应用才能访问您的 stunnel 服务器。您还可以将 stunnel 配置为使用 TLS 进行监听,以便对应用和 stunnel 服务器之间的数据进行加密。这两种配置的详细信息取决于您的环境。

后续步骤

将 LDAP 客户端连接到安全 LDAP 服务后,您需要为 LDAP 客户端将服务状态切换为开启。

如要了解后续步骤,请参阅 5. 将 LDAP 客户端切换为“启用”。

注意:如果需要,您可以使用 ldapsearch、ADSI 或 ldp.exe 等简单工具来排查在尝试将 LDAP 客户端连接到服务时遇到的错误。如需查看相关说明,请参阅Connectivity Tests 和问题排查。