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

请根据本文说明将您的 LDAP 客户端连接到安全 LDAP 服务。

重要提示:

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

本文内容

本文包含以下部分:

在以下说明中,我们假设您下载的客户端密钥和证书文件分别名为 ldap-client.keyldap-client.crt

基本配置说明

这一部分就如何将 LDAP 客户端连接到安全 LDAP 服务作了一般说明。如果以下说明中没有列出您使用的 LDAP 客户端,请务必参阅该应用自身的说明文件。

注意:部分 LDAP 客户端(如 Atlassian Jira 和 SSSD)会在用户身份验证过程中执行用户查询,以便获取更多用户信息。为确保此类 LDAP 客户端的用户身份验证能正常完成,您必须为已开启验证用户凭据的所有组织部门开启读取用户信息。(有关说明,请参阅配置访问权限。)

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

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

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

    注意:要完整了解如何上传 TLS 证书以及在何处上传,请参阅供应商的说明文件。

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

主机名

ldap.google.com

端口

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

基本 DN

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

example.comexample.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.comexample.com 的 DN 为 dc=example,dc=com)。

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

    Use SSL-based Encryption(使用基于 SSL 的加密):勾选
  4. 点击高级…,然后输入以下详细信息:

    指定凭据:已选中
    用户名:在管理控制台中获取的访问凭据用户名
    密码:在管理控制台中获取的访问凭据密码
    端口号:636
    协议:LDAP
    简单绑定身份验证:已选中
  5. 点击确定,然后再次点击确定
  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. 输入身份验证参数:

    Authentication Method(身份验证方法):简单的身份验证
    Bind DN or user(绑定 DN 或用户):在管理控制台中获取的访问凭据用户名
    Bind password(绑定密码):在管理控制台中获取的访问凭据密码
  7. 点击下一步
  8. 输入基本 DN。
    也就是您的域名(采用 DN 格式,例如 example.comexample.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. 点击 Add Directory(添加目录)。
    4. 选择 LDAP 作为类型。
    5. 点击下一步
  6. 输入以下内容:

    名称

    Google Secure LDAP

    目录类型

    OpenLDAP

    主机名

    ldap.google.com

    端口

    636

    使用 SSL

    已选中

    用户名

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

    密码

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

    基本 DN

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

    Additional User DN(其他用户 DN)

    可选。“ou=Users”

    Additional Group DN(其他群组 DN)

    可选。"ou=Groups"

    LDAP 权限

    只读

    高级设置

    未更改

    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(群组成员属性)

    成员

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

    已选中
  7. 为群组授予角色。

    用户必须处于有权访问 Jira 的群组中,Atlassian Jira 才会允许其登录。

    要为群组授予角色,请按以下步骤操作:
    1. 依次前往设置 > 应用 > 应用访问权限
    2. 选择群组文本框中,输入您希望让哪些用户有权访问 Jira,这些用户所属 Google 群组的名称。

CloudBees Core / Jenkins

如需有关将 CloudBees Core 连接到安全 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 客户端连接。如果您未使用默认客户端,请务必更新您配置的相关客户端(inner-tunnel 或任何自定义客户端)。
    1. 修改 authorize(授权)部分,在底部的密码身份验证协议 (PAP) 语句后添加以下代码块:

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

    2. authorize(授权)部分,移除 LDAP 前面的“-”,以启用 LDAP。

      #
      # ldap 模块从 LDAP 数据库中读取密码。
      ldap
    3. 修改 authenticate(身份验证)部分,将 Auth-Type LDAP 代码块修改为:

      # Auth-Type LDAP {
      ldap
      # }

    4. 修改 authenticate(身份验证)部分,将 Auth-Type PAP 代码块修改为:

      Auth-Type PAP {
      # pap
      ldap
      }

GitLab

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

Itopia/Ubuntu

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

Ivanti / LanDesk

请按照以下步骤操作

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

    C:\ProgramData\LANDesk\ServiceDesk\servicedesk.FrameworkC:\ProgramData\LANDesk\ServiceDesk\servicedesk.WebAccess(其中“servicedesk”是实例名称)
  2. <Server> 值更新为 ldap.google.com
  3. 更新 <Port> 值,将明文显示的端口改为 3268(同时启用 StartTLS),并将 SSL/TLS 端口改为 3269(明文端口和 SSL/TLS 端口的默认值分别为 389636)。
  4. <TestDN> 值设为您的域名(采用 DN 格式)。(例如,example.comexample.com 的 DN 为 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 应用旁边的 Edit(修改)。
    系统会针对 Web Access 应用显示 Edit Application(修改应用)对话框。
  10. Configuration parameters(配置参数)组中,从 Logon policy(登录政策)列表中选择 Explicit only(仅限明示),然后点击 OK(确定)。

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

针对 LDAP 服务器身份验证的异常日志记录功能

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

如要针对 LDAP 服务器身份验证启用异常日志记录功能,请执行以下操作

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

    DirectoryServiceAuthenticationConfiguration.xmlOpenLDAPAuthenticationConfiguration.xmlOpenLDAPSSLAuthenticationConfiguration.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. 在搜索框中,搜索“certificate”(证书),然后点击 Manage user certificates(管理用户证书)。
  4. 依次前往 Action(操作)> All Tasks(所有任务)> Import…(导入…)
  5. 选择现有用户,然后点击下一步
  6. 点击浏览…
  7. 在对话框右下角的“File type”(文件类型)下拉列表中,选择 Personal Information Exchange (&ast;.pfx;&ast;.p12)(个人信息交换证书文件 (&ast;.pfx;&ast;.p12))。
  8. 选择第 2 步中的 ldap-client.p12 文件,点击打开,然后点击下一步
  9. 输入在第 2 步获取的密码,然后点击 Next(下一步)。
  10. 选择 Personal(个人)证书存储区,点击 Next(下一步),然后点击 Finish(完成)。
  11. 运行 Ldp.exe
  12. 依次前往连接 > 连接…
  13. 输入以下连接详情:

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

Netgate / pfSense

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

OpenLDAP / ldapsearch (Linux)

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

假设您的客户端证书名和密钥文件名分别为 ldap-client.crtldap-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. 点击左上方菜单栏中的 File(文件)选项,然后选择 Import Items(导入项目)。
  5. 前往生成的 ldap-client.p12 所在的位置,选择 ldap-client.p12,然后点击 Open(打开)。
    如果系统提示,请输入您的密码。
    名为“LDAP 客户端”的证书现在应该会显示在系统钥匙串证书列表中。
  6. 点击 LDAP 客户端证书旁的箭头。私钥会显示在其下方。
    1. 双击私钥。
    2. 在对话框中选择 Access Control(访问权限控制)标签页,然后点击左下角的 +
    3. 在打开的窗口中,按 Command + Shift + G 以打开新窗口,然后用 /usr/bin/ldapsearch 替换现有文本。

    4. 点击 Go(继续)。

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

    5. 点击添加

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

      您现在可以使用 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”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 服务的说明,请参阅针对 OpenVPN Access Server 配置 Google Secure LDAP

PaperCut MF 和 NG

如需有关将 PaperCut 连接到安全 LDAP 服务的说明,请参阅 How to sync and authenticate Google Workspace and Google Cloud Identity users in PaperCut(如何在 PaperCut 中同步 Google Workspace 和 Google Cloud Identity 用户并对他们进行身份验证)。

Puppet Enteprise

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

Softerra LDAP Browser

重要提示:开始之前,请确保您已安装第 4.5 (4.5.19808.0) 版或更高版本的 Softerra LDAP Browser。请参阅 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. 前往工具 > 证书管理器
    2. 点击 Import…(导入…)。
    3. 点击下一步
    4. 点击浏览…
    5. 在对话框右下角的“File type”(文件类型)下拉列表中,选择 Personal Information Exchange (&ast;.pfx;&ast;.p12)(个人信息交换 (&ast;.pfx;&ast;.p12))。
    6. 选择上述第 2 步中的 ldap-client.p12 文件。
    7. 点击打开,然后点击下一步
    8. 输入在第 2 步获取的密码,然后点击下一步
    9. 选择 Personal(个人)证书存储区。
    10. 点击下一步
    11. 点击完成
  3. 添加服务器配置文件。
    1. 依次前往 File > New > New Profile…
    2. 输入配置文件名称,例如“Google LDAP”
    3. 点击下一步

      输入以下内容:

      Host(主机):ldap.google.com
      Port
      (端口):636
      Base DN(基本 DN):您的域名(采用 DN 格式,例如 example.com 的 DN 为 dc=example,dc=com)。
      Use secure connection (SSL)(使用安全连接 (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

端口

636

已启用 SSL

已选中

连接顺序

1

Bind DN

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

Bind DN password

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

基本 DN

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

用户群过滤器

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

用户名属性

uid

真实名称属性

displayname

电子邮件属性

邮件

群组映射属性

dn

群组基本 DN

您的域名(采用 DN 格式,例如 example.com 的 DN 为 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. 跳过。

    所需操作:您需要对 .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}'. 检查是否有拼写错误。

    [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}'. 检查是否有拼写错误。

    所需操作:从 sssd.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

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

macOS

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

系统要求

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

目录

准备阶段

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

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

有关说明,请参阅添加 LDAP 客户端或观看此 Secure LDAP demo(安全 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 Client”与导入 .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,选择 Encrypt using SSL(使用 SSL 加密),然后点击 Manual
  5. 选择新的服务器名称,然后点击 Edit…(修改…)
  6. 输入一个描述性的配置名称,例如“Google 安全 LDAP”
  7. 选择 Encrypt using SSL(使用 SSL 加密)并确保将端口设置为 636
  8. 前往搜索与映射标签页。
    1. 从“访问此 LDAPv3 服务器使用”下拉列表中选择 RFC2307
    2. 系统提示时,在 Search Base Suffix(搜索基准后缀)中输入与网域相关的信息。例如,针对 zomato.com 的域名输入 dc=zomato,dc=comzomato.com
    3. 点击确定
    4. 配置 Users 记录类型下的属性:
      1. 在“Record Types and Attributes”(记录类型和属性)部分,选择 Users(用户),然后点击“+”按钮。
      2. 在弹出式窗口中,选择属性类型,选择 GeneratedUID,然后点击确定以关闭弹出式窗口。

        展开后,GeneratedUIDGeneratedUID 应显示在“用户”下方。
      3. 点击“GeneratedUID”,然后点击右侧框中的“+”图标。
      4. 在文本框中输入 apple-generateduid,然后按 Enter 键。
      5. Users(用户)节点下方,点击 NFSHomeDirectory 属性。
      6. 将右侧屏幕中的属性的值更新为 #/Users/$uid$
      7. 点击确定,然后输入密码以保存更改。
  9. 在“目录实用工具”窗口中,采取新的 LDAP 配置:
    1. 前往 Search Policy(搜索策略)标签页。
    2. 点击锁形图标以进行更改,并在出现提示时输入当前用户的密码。
    3. 搜索路径的下拉菜单选项更改为自定路径
    4. 打开身份验证标签页,然后点击“+”图标。
    5. 从目录域列表中选择 /LDAPv3/ldap.google.com,然后点击添加
    6. 点击应用按钮,并在系统提示时输入管理员密码。
  10. 运行以下四个命令分别停用 DIGEST-MD5、CRAM-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@solarmora.com 的用户名部分是 jsmith

  2. 当系统提示您输入 SecureToken admin user name 时,请输入管理员用户名,然后在下一个提示符处输入您的密码。确认后,系统会将 $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。如果状态不是“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 客户端切换为“开启”

注意:如果您在尝试将 LDAP 客户端连接到服务时遇到错误,可以根据需要使用 ldapsearchADSIldp.exe 一类的简单工具进行问题排查。有关说明,请参阅连接测试和问题排查