gnutls 与 openssl 在 openldap、debian 和 centos 上的比较

gnutls 与 openssl 在 openldap、debian 和 centos 上的比较

我有一台运行 openldap 的 Debian 6.0.5 服务器。它似乎是针对 gnutls 编译的。我使用 gnutls 的 certtool 生成自签名证书,并在几台 debian 客户端计算机上使用它来对 openldap 服务器进行身份验证。

但是,当我尝试在 CentOS 6 客户端上执行相同操作时,我收到 ldapsearch 的以下错误:

ldap_initialize( <DEFAULT> )    
ldap_start_tls: Can't contact LDAP server (-1)
additional info: TLS error -8101:Certificate type not approved for application.    
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

如果我在 CentOS 客户端上运行 gnutls-cli-debug,我会得到以下结果:

gnutls-cli-debug -p 636 ldap.blahblah.com
    Resolving 'ldap.blahblah.com'...
    Connecting to '10.6.0.11:636'...
    Error in %INITIAL_SAFE_RENEGOTIATION
    Checking for Safe renegotiation support...

就这样,它死了。

有谁能够在这种设置下执行 ldaps,gnutls 链接服务器,gnutls 生成的证书,openssl 链接客户端?

谢谢!

答案1

我猜你可以用两种方法之一来解决这个问题:让ldapsearch客户端使用你现有的证书工作,或者生成它喜欢的新证书。就我个人而言,我认为修改服务器证书比更改代码更容易ldapsearch,所以我考虑了这一点。

上述错误表明您的服务器端证书缺少某些内容(即客户端不想与您的服务器对话,因为它无法正确识别)。

首先,我检查了随机 LDAP 服务器使用的证书,在本例中是directory.washington.edu这样的。如果你拿到了它的证书,例如:

openssl s_client -connect directory.washington.edu:636 > dirwash.crt

然后执行以下操作:

openssl x509 -in dirwash.crt -text

你会看到的:

        X509v3 Key Usage: 
            Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment
        X509v3 Extended Key Usage: 
            TLS Web Client Authentication, TLS Web Server Authentication

其他 LDAP 服务器(例如ldap.virginia.edu)根本没有这些扩展。其他服务器,例如ldap.itd.umich.edu具有上述扩展的变体:

        X509v3 Key Usage: 
            Digital Signature, Key Encipherment
        X509v3 Extended Key Usage: 
            TLS Web Server Authentication, TLS Web Client Authentication

简而言之,我建议您检查您的服务器证书(如果愿意,可以在此处发布)以查看它是否包含X509v3 (Extended) Key Usage扩展,如果是,则查看它们是否看起来像其他 LDAP 服务器上使用的扩展。

我看到一个邮件主题这表明:(1) 扩展应该不存在;或 (2) 如果扩展存在,则它们至少需要包含TLS Web Server Authentication。我不知道在这种情况下这是否正确,但无论如何都需要考虑。

相关内容