为什么curl无法使用自签名证书连接到OpenDJ

时间:2013-11-06 20:52:03

标签: curl ssl opendj

有人可以告诉我为什么卷曲不使用ldaps和自签名证书?

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

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

这是我收到的错误消息:

  • 关于connect()到a.b.c.d端口636(#0)
  • 尝试a.b.c.d ...已连接
  • 连接到a.b.c.d(a.b.c.d)端口636(#0)
  • LDAP local:LDAP Vendor = OpenLDAP; LDAP版本= 20423
  • LDAP local:ldaps://a.b.c.d:636 / dc = example,dc = com
  • LDAP local:尝试建立加密连接
  • LDAP local:ldap_simple_bind_s无法联系LDAP服务器
  • 关闭连接#0 curl:(38)LDAP local: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 file https ftps scp sftp 功能:GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

请注意,它不适用于ldap:

[root @ myserver]#/ usr / bin / curl -v ldap://a.b.c.d/dc=example,dc=com *即将连接()到a.b.c.d端口389(#0) *尝试a.b.c.d ...已连接 *连接到a.b.c.d(a.b.c.d)端口389(#0) * LDAP local:LDAP Vendor = OpenLDAP; LDAP版本= 20423 * LDAP local:ldap://a.b.c.d/dc=example,dc=com * LDAP local:尝试建立明文连接 DN:dc = example,dc = com     DC =例如,DC = COM

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

谢谢, S.E

2 个答案:

答案 0 :(得分:0)

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

此致

朱利

答案 1 :(得分: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旨在提供的安全性的很大一部分,但我相信它仍然会加密传输。据我所知,唯一的其他选择是获得证书卷曲喜欢并验证安装在源主机上,或者找到并使用以卷曲喜欢的形式签署当前源证书的根证书。