通过 TLS 连接到 OPENLDAP:找不到证书
Connecting via TLS to OPENLDAP: Certificate not found
我有一个来自 Osixia 的 OpenLDAP Docker 实例,我正在尝试使用 TLS 从客户端安全地查询它。该查询在没有使用 $ ldapwhoami -H ldap://localhost -x
加密的情况下工作,并且在使用 -ZZ
标志启动 TLS 操作时不起作用 $ ldapwhoami -H ldap://localhost -x -ZZ
- 它 returns 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
- 测试连接 - 显示成功,它 returns
anonymous
$ ldapwhoami -H ldap://localhost -x
anonymous
- 准备 TLS 连接 - 配置客户端以信任服务器证书颁发机构 (CA)
- 服务器 DOCKER 容器:TLS 证书在 osixia/openldap 映像中 运行 时间自动配置。复制
/container/service/slapd/assets/certs/ca.crt
中的 CA 内容
- CLIENT: 将复制的 SERVER
ca.crt
粘贴到 CLIENT 文件夹 /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
标志从客户端测试 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。
我通读了这个 post: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=try
添加到docker run
命令。 Source
对于 Google 员工,
Presto 在连接到 LDAP 服务时不提供客户端证书(客户端证书验证,双向验证),因此如果使用 osixia/openldap
则需要 --env LDAP_TLS_VERIFY_CLIENT=try
或 never
,或者,编辑 ldap.conf
并设置 TLS_REQCERT never
并重新启动 LDAP 服务。
我有一个来自 Osixia 的 OpenLDAP Docker 实例,我正在尝试使用 TLS 从客户端安全地查询它。该查询在没有使用 $ ldapwhoami -H ldap://localhost -x
加密的情况下工作,并且在使用 -ZZ
标志启动 TLS 操作时不起作用 $ ldapwhoami -H ldap://localhost -x -ZZ
- 它 returns 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
- 测试连接 - 显示成功,它 returns
anonymous
$ ldapwhoami -H ldap://localhost -x
anonymous
- 准备 TLS 连接 - 配置客户端以信任服务器证书颁发机构 (CA)
- 服务器 DOCKER 容器:TLS 证书在 osixia/openldap 映像中 运行 时间自动配置。复制
/container/service/slapd/assets/certs/ca.crt
中的 CA 内容
- CLIENT: 将复制的 SERVER
ca.crt
粘贴到 CLIENT 文件夹/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
- 服务器 DOCKER 容器:TLS 证书在 osixia/openldap 映像中 运行 时间自动配置。复制
- 通过
-ZZ
标志从客户端测试 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。
我通读了这个 post: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=try
添加到docker run
命令。 Source
对于 Google 员工,
Presto 在连接到 LDAP 服务时不提供客户端证书(客户端证书验证,双向验证),因此如果使用 osixia/openldap
则需要 --env LDAP_TLS_VERIFY_CLIENT=try
或 never
,或者,编辑 ldap.conf
并设置 TLS_REQCERT never
并重新启动 LDAP 服务。