本知识库文章主要介绍配置 LDAPS 所需的内容,以便更广泛地解释将 AD/LDAP 与 NetWorker 集成所需的内容,请参阅:
NetWorker:如何设置 AD/LDAP 验证
提醒:可以从 NetWorker 管理控制台和 NetWorker Web 用户界面 (NWUI) 配置外部机构;但是,通常建议使用 authc_config 脚本或 NWUI(19.7 及更高版本)配置 Active Directory。NMC 配置选项仅提供“LDAP over SSL”;如果使用此选项,它将设置“Active Directory: false”。此选项预期身份验证服务器是 LDAP 而不是 Microsoft Active Directory。这将导致登录失败。本知识库文章中概述的流程详细介绍了如何使用authc_configure脚本配置 LDAPS。NWUI(19.7 及更高版本)提供“AD over SSL”选项。
NetWorker:如何从 NetWorker Web 用户界面 (NWUI) 配置“AD over SSL”(LDAPS)
建议先让 AD/LDAP 配置通过 LDAP 工作,然后将其转换为 LDAPS,以排除任何潜在的配置问题。
要使用 LDAPS,您必须将 CA 证书(或证书链)从 LDAPS 服务器导入 JAVA 信任密钥库。这可以通过以下过程完成:
1) 打开管理/root 命令提示符。
2,a) 显示信任存储中的当前受信任证书的列表。
keytool -list -keystore JAVA_PATH/jre/lib/security/cacerts -storepass PASSWORD
- 通常,JAVA 二进制位置是 OS PATH 环境 变量的一部分,因此可以从任何位置运行“keytool”。如果操作系统无法找到密钥工具二进制文件。从 NetWorker 服务器上的 JAVA \bin 目录运行 keytool 命令。
- 将 JAVA_PATH 替换为 JAVA 安装的路径,路径名称因安装的 JAVA 版本而异。
- 在安装了 NetWorker Runtime Environment (NRE) 的系统上,这通常是:
- Linux:/opt/nre/java/latest/
- Windows:C:\Program Files\NRE\java\jre-###
- 将 密码替换为 JAVA 存储通道。默 认值为 changeit 。
[root@rhel7 /]# keytool -list -keystore /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre/lib/security/cacerts -storepass changeit
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 156 entries
emcauthctomcat, 9-Jul-2018, trustedCertEntry,
Certificate fingerprint (SHA1): 01:9B:AF:A4:0D:DA:33:6D:AE:7A:76:8D:84:D5:EB:E2:63:13:0A:0A
...
...
2,b) 查看与 LDAPS 服务器匹配的别名列表(这可能不存在)。您可以将 OS grep/findstr 命令与上述命令配合使用,以缩小搜索范围。如果 LDAPS 服务器存在过时的/现有的 CA 证书,请使用以下命令将其删除:
keytool -delete -alias ALIAS_NAME -keystore JAVA_PATH/jre/lib/security/cacerts -storepass PASSWORD
- 将ALIAS_NAME替换为从 2,a 中的输出收集的 LDAPS 服务器的别名。
3,a) 使用 OpenSSL 工具从 LDAPS 服务器获取 CA 证书的拷贝。
openssl s_client -showcerts -connect LDAPS_SERVER:636
- 默认情况下,Windows 主机不包括 openssl 程序。如果无法在 NetWorker 服务器上安装 OpenSSL,则可以直接从 LDAPS 服务器导出证书;但是,强烈建议使用 OpenSSL 实用程序。
- 除非 OpenSSL 二进制文件目录的路径是 OS PATH 环境变量的一部分,否则您需要从其二进制位置运行 OpenSSL 命令。
- 如果您没有 OpenSSL 并且无法安装,则管理员将证书导出为 Base-64 编码 x.509 格式来提供证书。
- 将LDAPS_SERVER替换为 LDAPS 服务器的主机名或 IP 地址。
3,b) 上述命令将以 PEM 格式输出 CA 证书或证书链,例如:
-----BEGIN CERTIFICATE-----
MIIGQDCCBSigAwIBAgITbgAAAAiwkngyAQWDwwACAAAACDANBgkqhkiG9w0BAQsF
ADBPMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFjAUBgoJkiaJk/IsZAEZFgZlbWNs
...
7NZfi9DiEBhpFmbF8xP96qB/kTJC+29t/0VE8Fvlg87fRhs5BceIoX8nUnetNCdm
m4mGyefXz4TBTwD06opJf4NQIDo=
-----END CERTIFICATE-----
提醒:如果有证书链,则最后一个证书是 CA 证书。您需要按以 CA 证书结尾的顺序(自上而下)导入链中的每个证书。
3,c) 从
---BEGIN证书--- 并以
---END CERTIFICATE 结尾---复制证书并粘贴到新文件中。如果存在证书链,则需要对每个证书执行此操作。
4) 将在 3、c 中创建的证书导入 JAVA 信任密钥库:
keytool -import -alias ALIAS_NAME -keystore JAVA_PATH/jre/lib/security/cacerts -storepass PASSWORD -file PATH_TO\CERT_FILE
- 将ALIAS_NAME替换为导入的证书的别名。通常,这是 LDAPS 服务器名称。如果您需要为证书链导入多个证书,则每个证书必须具有不同的 ALIAS 名称,并且必须单独导入。还必须根据在步骤 3、a(自上而下)中显示的顺序导入证书链。
- 将 JAVA_PATH 替换为 JAVA 安装的路径,路径名称因安装的 JAVA 版本而异。
- 将 密码替换为 JAVA 存储通道。默 认值为 changeit 。
- 将 PATH_TO\CERT_FILE 替换为您在步骤 3,c 中创建的证书文件的位置。
- 系统将提示您导入证书,键入 yes ,然后按 Enter 键。
[root@rhel7 /]# keytool -import -alias winsrvr2k16-ca -keystore /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre/lib/security/cacerts -storepass changeit -file /certificates/ca.cer
Owner: CN=WINSRVR2K16.emclab.local
Issuer: CN=emclab-WINSRVR2K16-CA, DC=emclab, DC=local
Serial number: 6e00000008b0927832010583c3000200000008
Valid from: Wed Sep 12 10:02:47 EDT 2018 until: Thu Sep 12 10:02:47 EDT 2019
Certificate fingerprints:
MD5: 08:FB:DE:58:7B:FC:62:C7:31:5D:37:28:2C:54:6D:68
SHA1: 06:72:D0:E9:19:31:8E:F6:2A:3A:47:60:52:91:0F:4F:2B:EB:10:9D
SHA256: AD:0B:2B:2F:FC:B8:9E:ED:48:16:38:04:A7:CA:6B:55:D9:92:88:CD:54:BB:84:C6:4D:5A:28:E2:35:04:B5:C7
...
...
...
Trust this certificate? [no]: yes
Certificate was added to keystore
5) 确认证书显示在密钥库中:
keytool -list -keystore JAVA_PATH/jre/lib/security/cacerts -storepass PASSWORD
提醒:将操作系统 grep 或 findstr 命令管道 (|) 到上面,以缩小结果范围。
[root@rhel7 /]# keytool -list -keystore /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre/lib/security/cacerts -storepass changeit | grep -i -A1 "winsrvr2k16*"
winsrvr2k16-ca, 12-Sep-2018, trustedCertEntry,
Certificate fingerprint (SHA1): 06:72:D0:E9:19:31:8E:F6:2A:3A:47:60:52:91:0F:4F:2B:EB:10:9D
6) 重新启动 NetWorker 服务器服务。
Linux:
nsr_shutdown
服务网络器启动
窗户:net stop nsrd
net start nsrd
提醒:如果 NetWorker 服务器服务未重新启动,authc 将不会读取 cacerts 文件,也不会检测到与 LDAP 服务器建立 SSL 通信所需的导入证书。
7,a) 更新 authc-create-ad-config (Active Directory) 或 authc-create-ldap-config (LDAP) 脚本以使用 LDAPS:
Location:
Linux |
/opt/nsr/authc-server/scripts/ |
Windows |
[INSTALL DRIVE]:\Program Files\EMC NetWorker\nsr\authc-server\scripts\ |
authc_config -u administrator -e update-config \
-D "config-tenant-id=1" \
-D "config-active-directory=y" \
-D "config-name=ad" \
-D "config-domain=emclab" \
-D "config-server-address=ldaps://winsrvr2k16.emclab.local:636/DC=emclab,DC=local" \
-D "config-user-dn=cn=Administrator,cn=Users,dc=emclab,dc=local" \
-D "config-user-dn-password=Pa$$w0rd01" \
-D "config-user-search-path=" \
-D "config-user-id-attr=sAMAccountName" \
-D "config-user-object-class=user" \
-D "config-group-search-path=" \
-D "config-group-name-attr=cn" \
-D "config-group-object-class=group" \
-D "config-group-member-attr=member" \
-D "config-user-search-filter=" \
-D "config-group-search-filter=" \
-D "config-search-subtree=y" \
-D "config-user-group-attr=memberOf" \
-D "config-object-class=objectClass
提醒:如果要添加新配置“-e add-config”,则应使用更新现有配置“-e update-config”。在 config-server-address address 行中,指定协议“ldaps”(必须为小写)和端口“636”。
7,b) 从命令行运行脚本。它应报告配置已成功更新/添加。
8) 确认配置已更新:
authc_config -u Administrator -e find-all-configs
authc_config -u Administrator -e find-config -D config-id=CONFIG_ID
- 系统将提示您使用每个命令输入 NetWorker 管理员密码。命令可以使用“-p password”标记运行,但由于使用了清除文本密码,这可能会在某些操作系统上失败。
- 将CONFIG_ID替换为使用第一个命令收集的配置 ID:
[root@rhel7 /]# authc_config -u Administrator -e find-config -D config-id=1
Enter password:
Config Id : 1
Config Tenant Id : 1
Config Name : ad
Config Domain : emclab
Config Server Address : ldaps://winsrvr2k16.emclab.local:636/DC=emclab,DC=local
Config User DN : cn=Administrator,cn=Users,dc=emclab,dc=local
Config User Group Attribute : memberOf
Config User ID Attribute : sAMAccountName
Config User Object Class : user
Config User Search Filter :
Config User Search Path :
Config Group Member Attribute: member
Config Group Name Attribute : cn
Config Group Object Class : group
Config Group Search Filter :
Config Group Search Path :
Config Object Class : objectClass
Is Active Directory : true
Config Search Subtree : true
服务器现在通过 LDAPS 使用 AD/LDAP 进行身份验证。
如果在执行此过程时遇到任何错误或问题,请与 CA 管理员联系,以确保使用/提取正确的证书。
无论您使用的是 Windows Active Directory 还是 Linux LDAP(例如:OpenLDAP) LDAP 协议用于身份验证。LDAP(轻型目录应用程序协议)和安全 LDAP (LDAPS) 是应用程序与基础架构内的网络目录或域控制器之间使用的连接协议。
LDAP 以明文形式传输通信,并且 LDAPS 通信经过加密且安全。