docker - 通过 TLS 连接到 OPENLDAP : Certificate not found

标签 docker ssl ldap tls1.2 openldap

我有一个来自 Osixia 的 OpenLDAP Docker 实例并尝试使用 TLS 从客户端安全地查询它。该查询使用 $ ldapwhoami -H ldap://localhost -x 无需加密即可工作。并且在使用 -ZZ 时不起作用开始 TLS 操作的标志 $ ldapwhoami -H ldap://localhost -x -ZZ - 它返回 ldap_start_tls: Can't contact LDAP server (-1) .我怎样才能使这项工作?以下是我采取的所有步骤:

  • 在 docker 中运行 LDAP 服务器:

  • $ docker run -p 389:389 -p 636:636 --name ldap-service --hostname ldap-service \
    --env LDAP_ADMIN_PASSWORD="password" --env LDAP_BASE_DN="dc=example,dc=org" --detach  osixia/openldap:1.4.0
    
  • 测试连接 - 显示成功,它返回 anonymous

  • $ ldapwhoami -H ldap://localhost -x
    anonymous
    
  • TLS 连接准备 - 配置客户端信任 SERVER 证书颁发机构 (CA)
  • SERVER DOCKER CONTAINER:TLS 证书在运行时在 osixia/openldap 镜像中自动配置。将 CA 的内容复制到 /container/service/slapd/assets/certs/ca.crt
  • 客户:粘贴复制的服务器 ca.crt进入客户文件夹/usr/local/share/ca-certificates/ca.crt ,然后运行 ​​sudo update-ca-certificates添加它。通过检查 CA 是否在 /etc/ssl/certs/ca-certificates.crt 中来确认添加成功
  • 客户:在文件/etc/ldap/ldap.conf中我添加了 TLS_CACERT /etc/ssl/certs/ca-certificates.crt

  • 通过 -ZZ 测试来自 CLIENT 的 TLS 连接开始 TLS 操作的标志:

  • $ ldapwhoami -H ldap://localhost -x -ZZ   
    ldap_start_tls: Can't contact LDAP server (-1)
            additional info: The TLS connection was non-properly terminated.
    
    来自 LDAP docker 内部的更多日志:
    5ff42195 conn=1079 fd=12 ACCEPT from IP=172.17.0.1:39420 (IP=0.0.0.0:636)
    TLS: can't accept: No certificate was found..
    5ff42195 conn=1079 fd=12 closed (TLS negotiation failure)
    
  • 通过 LDAP 安全 URI 方案从客户端测试 TLS 连接 ldaps://

  • $ ldapwhoami -H ldaps://localhost -x 
    ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
    
    我尝试过的事情:
  • 我通读了https://www.openldap.org/doc/admin24/tls.html并随后在客户端上安装了服务器 CA。
  • 我通读了这篇文章:ldapsearch over ssl/tls doesn't work ,我更改了/etc/ldap/ldap.conf中的设置包括以下项目,但无济于事。

  •  TLS_CACERT      /etc/ssl/certs/ca-certificates.crt
     TLS_REQCERT ALLOW
     PORT 636
     HOST localhost // i also tried 'ldap-service' 
    

    最佳答案

    我找到了解决方案:
    添加 --env LDAP_TLS_VERIFY_CLIENT=trydocker run命令。 Source

    关于docker - 通过 TLS 连接到 OPENLDAP : Certificate not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65576605/

    相关文章:

    node.js - Dockerfile 中 nats-server 的 CMD 命令是什么

    python - 在 docker 容器中运行 python 脚本时没有 json 模块

    r - 将特定版本的 R 添加到 docker 容器

    java - 如何使用带有 LDAP 身份验证的 Apache Shiro 添加角色授权

    postgresql - GoLang 服务无法使用 docker compose 访问 Postgres

    svn - 如何使用 Subversion 信任过期的 SSL 证书?

    android - Android Webview客户端证书和Http授权

    ssl - 如何为使用 nginx、gunicorn 和 flask 的 GCP 实例设置 SSL 证书?

    java - 在 Active Directory 中查找具有网络 ID 的用户需要搜索过滤器

    node.js - 制造商 ldapjs 使用 tls