0

有人能告诉我为什么 curl 不能使用 ldaps 和自签名证书吗?

我有一个在 ldaps 端口 636 上侦听的 Opendj 目录服务器,我正在尝试使用 curl 和 opendj 的自签名证书从远程服务器连接到它:

[root@myserver]# /usr/bin/curl -v -k --cacert /tmp/opendj.cer ldaps://abcd/dc=example,dc=com

这是我收到的错误消息:

  • 即将 connect() 到 abcd 端口 636 (#0)
  • 尝试 abcd .. 已连接
  • 连接到 abcd (abcd) 端口 636 (#0)
  • LDAP 本地:LDAP 供应商 = OpenLDAP;LDAP 版本 = 20423
  • LDAP 本地:ldaps://abcd:636/dc=example,dc=com
  • LDAP 本地:尝试建立加密连接
  • LDAP 本地:ldap_simple_bind_s 无法联系 LDAP 服务器
  • 关闭连接 #0 curl:(38)LDAP 本地:ldap_simple_bind_s 无法联系 LDAP 服务器

[root@myserver]#/usr/bin/curl -V
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.12.9.0 zlib/1.2.3 libidn/1.18 libssh2/1.2.2协议:tftp ftp telnet dict ldap ldaps http 文件 https ftps scp sftp 功能:GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

请不要认为它适用于 ldap:

[root@myserver]# /usr/bin/curl -v ldap://abcd/dc=example,dc=com * 即将 connect() 到 abcd 端口 389 (#0) * 正在尝试 abcd .. 已连接 * 已连接到abcd (abcd) 端口 389 (#0) * LDAP 本地:LDAP 供应商 = OpenLDAP;LDAP 版本 = 20423 * LDAP 本地:ldap://abcd/dc=example,dc=com * LDAP 本地:尝试建立明文连接 DN:dc=example,dc=com dc=example,dc=com

objectClass: domain
objectClass: top
  • 关闭连接 #0

谢谢, SE

4

2 回答 2

0

大多数 SSL 工具都会尝试验证它们连接的对等方的证书。基本上,他们检查它是否由他们已经信任的权威机构签署,并且 curl 不喜欢其中一个证书。对于您连接到此验证的计算机上的自签名证书,通常会失败。

Curl 有一个命令行选项可以提供帮助,--insecure

尝试这样的事情:

url --url scp://191.168.0.99/etc/config/wireless.conf -u <username>:<password> --pass -k --insecure -s > C:\wireless.conf

您需要替换您的 URL、凭据和文件名,但参数本质上是告诉 curl 跳过证书的对等验证并接受它并使用密码身份验证。这完全绕过了 SSL 旨在提供的大部分安全性,但我相信它仍然会加密传输。据我所知,唯一的其他选择是获得一个 curl 喜欢的证书并验证安装在源主机上,或者找到并使用以 curl 喜欢的形式签署当前源证书的根证书。

于 2013-12-11T22:08:25.963 回答
0

很可能是因为 SSL 层能够在客户端和服务器之间就通用密码套件达成一致。如果您在服务器端或客户端启用 SSL 调试,您应该能够获得更详细的错误原因。您可能需要检查http://ludopoitou.wordpress.com/2011/06/29/opendj-troubleshooting-ldap-ssl-connections/

问候,

卢多维奇

于 2013-11-07T14:24:09.710 回答