AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 523854
Accepted
Dmitriusan
Dmitriusan
Asked: 2013-07-17 14:06:03 +0800 CST2013-07-17 14:06:03 +0800 CST 2013-07-17 14:06:03 +0800 CST

在 Linux 中重新启动后会出现什么问题?非常奇怪的问题:LDAPS 仅在重新启动后才停止工作

  • 772

我有一个设置了 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 是一个原因(也许它在快照中被禁用,明天在工作中检查它)

还有其他建议吗?今天太累了,不想再打了……

linux
  • 2 2 个回答
  • 1806 Views

2 个回答

  • Voted
  1. Dennis Kaarsemaker
    2013-07-17T14:10:04+08:002013-07-17T14:10:04+08:00

    SSL 连接失败通常是由于时间不同步造成的。VM 倾向于这样做,因此请确保您在所有 VM 上运行 ntpd,并且在 ntpd 启动之前在引导时运行 ntpdate。

    • 1
  2. Best Answer
    Dmitriusan
    2013-07-18T06:31:38+08:002013-07-18T06:31:38+08:00

    这个问题实际上是由 SELinux 以一种复杂的方式引起的。

    对于将来会通过谷歌找到这个答案的人,这里是一个确切的错误文本:

    [root@va21 ~]# ldapsearch -d 1 -v -x -H ldaps://localhost:636
    ldap_url_parse_ext(ldaps://localhost:636)
    ldap_initialize( ldaps://localhost:636/??base )
    ldap_create
    ldap_url_parse_ext(ldaps://localhost:636/??base)
    ldap_sasl_bind
    ldap_send_initial_request
    ldap_new_connection 1 1 0
    ldap_int_open_connection
    ldap_connect_to_host: TCP localhost:636
    ldap_new_socket: 3
    ldap_prepare_socket: 3
    ldap_connect_to_host: Trying 127.0.0.1:636
    ldap_pvt_connect: fd: 3 tm: -1 async: 0
    TLS: certdb config: configDir='/etc/openldap/certs' tokenDescription='ldap(0)'                 certPrefix='' keyPrefix='' flags=readOnly
    TLS: using moznss security dir /etc/openldap/certs prefix .
    TLS: error: tlsm_PR_Recv returned 0 - error 21:Is a directory
    TLS: error: connect - force handshake failure: errno 21 - moznss error -5938
    TLS: can't connect: TLS error -5938:Encountered end of file.
    ldap_err2string
    ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
    

    和 openssl s_client 输出:

    [root@va21 ~]# openssl s_client -connect localhost:636 -showcerts
    CONNECTED(00000003)
    140066435413832:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake     failure:s23_lib.c:184:
    ---
    no peer certificate available
    ---
    No client certificate CA names sent
    ---
    SSL handshake has read 0 bytes and written 113 bytes
    ---
    New, (NONE), Cipher is (NONE)
    Secure Renegotiation IS NOT supported
    Compression: NONE
    Expansion: NONE
    ---
    

    这意味着(它应该意味着!)当 slapd 服务器启动时,ssl 证书不可用/可读/不可访问/有效。

    我正在为某些应用程序的 QA 测试准备 VM 映像。此应用程序在安装过程中禁用 SELinux。所以我在 openldap 的配置过程中禁用了 SELinux,并且在将证书放置到 /certs 文件夹时没有任何问题。

    当我不得不将具有相同配置的 openldap 部署到干净的虚拟机或重新启动现有虚拟机时,我的麻烦就开始了。此处启用了 SELinux,它阻止了 slapd 从不允许的位置读取证书。服务日志或输出未包含任何关于拒绝许可的明确投诉。我应该将证书放在 /etc/ssl/certs/ 和 /etc/openldap/certs 的某个位置以使其正常工作。

    • 1

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve