Open Directory:启用 Open Directory 和备份服务器的 SSL
可启用加密套接字协议层 (SSL) 来提供 Open Directory 主服务器、备份服务器和访问 LDAP 目录域的电脑之间的加密通信。SSL 使用数字证书为各个服务器提供经认证的身份。你可以使用自签名证书或从证书颁发机构获得的证书。
将 Open Directory 主服务器和备份服务器电脑准备就绪后:
确保 Open Directory 主服务器和备份服务器电脑均支持 SSL 连接。
使用自签名证书启用 Open Directory 主服务器上的 SSL 加密,并将通用名称设为主服务器的主机名。
启用所有备份服务器电脑上的 SSL:使用 Server Admin 在备份服务器电脑上创建自签名证书,并将通用名称设为对应电脑的主机名。
在“终端”中,执行以下命令:
Mac OS X Server 10.5:
sudo slapconfig -setldapconfig -ssl on -sslkey [path to SSL key] -sslcert [path to SSL cert] -ssldomain [name of the certificate]
Mac OS X Server 10.6:
sudo slapconfig -setldapconfig -ssl on -sslkey [path to SSL key] -sslcert [path to SSL cert]
(默认情况下,Server Admin 将证书储存于 /etc/certificates 之下。还应确保在路径中包含文件名称)
安装来自 Open Directory 主服务器和备份服务器的证书
为了让客户端电脑可以使用 SSL,需要将目录群集中各个服务器的证书拷贝至客户端电脑。要安装来自 Open Directory 主服务器和备份服务器电脑的证书,请进行以下操作:
1. 在各客户端电脑上,创建 /etc/openldap/certs 目录。
2. 在客户端电脑上,打开“终端”并执行以下命令以从服务器获取证书:
openssl s_client -connect [hostname of the server]:636
3. 将 ---BEGIN CERTIFICATE--- 和 ---END CERTIFICATE--- 之间的行命令拷贝至名为 hostname 的文件中。
4. 将这个新的 hostname 文件置于以下位置:/etc/openldap/certs/
5. 你可以使用以下命令测试证书:
openssl s_client -connect [hostname of the server]:636 -CAfile /etc/openldap/certs/hostname
运行以上命令后会显示与之前类似的输出,但最后一行会出现下述变化:验证返回代码:0(ok),而非之前收到的 18 或 19
6. 如果你只有一个证书(例如,一个启用了 SSL 的 LDAP 服务器),请将以下内容添加到 /etc/openldap/ldap.conf 文件
TLS_CACERT /etc/openldap/certs/[hostname of the server]
如果你有多个启用了 SSL 的 LDAP 服务器
你需要按照以下步骤分别指定每个服务器,或者将所有服务器放入同一目录并让 ldap.conf 指向它们:
1. 对于 LDAP 群集中的各个服务器,你需要与之前一样使用 openssl s_client 命令获取证书:
openssl s_client -connect [hostname of the server]:636
2. 获得证书后,使用 c_hash(一种 OpenSSL 实用工具)将证书变成经过哈希处理的格式。对于各个证书,c_hash 会提供一个名称,以便用于重命名 /etc/openldap/certs 中的证书文件:
/System/Library/OpenSSL/misc/c_hash /etc/openldap/certs/hostname
输出应与以下内容类似:03be8eb2.0 => /etc/openldap/certs/hostname
3. 收到经过哈希处理的名称后,请手动重命名现有证书文件。
示例:
mv /etc/openldap/certs/hostname /etc/openldap/certs/03be8eb2.0
4. 通过 c_hash 运行所有证书后,请按如下方式编辑 /etc/openldap/ldap.conf 文件:
TLS_CACERTDIR /etc/openldap/certs/
5. 移除 ldap.conf 文件中可能存在的任何较早的 TLS_CACERTDIR 条目。
6. 用 ldapsearch 命令进行验证:
ldapsearch -v -x -H ldaps://[hostname of the server] -b [searchbase]
7. 如果你已经尝试设置 LDAP 服务器,可能需要重新启动目录服务:
sudo killall DirectoryService