我有一个设置了 LDAPS (openldap) 的 Centos 6.3 virtualbox VM 快照。几天前,我根据不同来源的提示设置了它,然后写下了所有内容。但是当我尝试重复安装(按照我自己的说明)时,我没有这样做:SSL 握手被丢弃,就好像服务器完全错误地配置了 SSL 证书一样。看起来如果我将服务器配置指向不存在的证书文件。我在本地运行所有检查(使用 ldapsearch 和“openssl s_client”)。更糟糕的是,我的快照中的 LDAPS 在重新启动后停止处理相同的问题。重新启动 slapd/nslcd/nscd 服务而不重新启动不会破坏它 0_o复制准确的配置和证书以清理(未设置 LDAPS)同一 VM 的快照和正确的配置不起作用。这就是为什么这个问题似乎与配置和证书无关。我已经花了 10 多个小时进行挖掘,但仍然强烈希望了解原因。
对我来说,了解为什么仅在重新启动后而不是在服务重新启动后才会出现此问题是主要(教育)。请随时发布有关在 Linux 主机重新启动时重置为默认/粉碎/混乱的事物的任何想法。换句话说,在 VM 快照中捕获的单独服务的范围内,系统重启与服务重启有何不同?
我已经检查过:
- 当然,logs/netstat/ps
- 一个 tmp 目录(每次重新启动时都会清理它,但不包含任何相关文件)
- 环境变量
- 日期(在快照中,日期是错误的。修复日期和重新启动服务不会破坏 LDAPS)
- 主机名/IP(我为此实例使用手动分配的 IP。重新启动并恢复网络设置后,我尝试重新启动服务但没有成功)
- /var/run 目录中的服务参数和 slapd.args 文件
- 将垃圾写入服务的配置文件并重新启动它以查看是否确实使用了该文件。
- /etc/env / .bashrc / .bash_aliases 文件没有被修改并且不应该干扰。
也许 SELinux 是一个原因(也许它在快照中被禁用,明天在工作中检查它)
还有其他建议吗?今天太累了,不想再打了……
SSL 连接失败通常是由于时间不同步造成的。VM 倾向于这样做,因此请确保您在所有 VM 上运行 ntpd,并且在 ntpd 启动之前在引导时运行 ntpdate。
这个问题实际上是由 SELinux 以一种复杂的方式引起的。
对于将来会通过谷歌找到这个答案的人,这里是一个确切的错误文本:
和 openssl s_client 输出:
这意味着(它应该意味着!)当 slapd 服务器启动时,ssl 证书不可用/可读/不可访问/有效。
我正在为某些应用程序的 QA 测试准备 VM 映像。此应用程序在安装过程中禁用 SELinux。所以我在 openldap 的配置过程中禁用了 SELinux,并且在将证书放置到 /certs 文件夹时没有任何问题。
当我不得不将具有相同配置的 openldap 部署到干净的虚拟机或重新启动现有虚拟机时,我的麻烦就开始了。此处启用了 SELinux,它阻止了 slapd 从不允许的位置读取证书。服务日志或输出未包含任何关于拒绝许可的明确投诉。我应该将证书放在 /etc/ssl/certs/ 和 /etc/openldap/certs 的某个位置以使其正常工作。