web-dev-qa-db-ja.com

LDAPSからサーバー2012への「LDAPサーバーに接続できません(-1)」エラー

[〜#〜] ldaps [〜#〜]を介してWindow Server 2012(おそらくR2)でActive Directoryに接続しようとすると、ldapsearchは次のエラーのいずれかを生成します(より長い出力の終わりに):

$ ldapsearch -H ldaps://my.ad.com -v -b "dc=my,dc=ad,dc=com"
...
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
    additional info: A TLS packet with unexpected length was received.

または

$ ldapsearch -H ldaps://my.ad.com -v -b "dc=my,dc=ad,dc=com" -D "[email protected]"
...
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

または

$ ldapsearch -H ldaps://my.ad.com -d 1 -v -b "dc=my,dc=ad,dc=com" -D "[email protected]" -W
...
TLS: can't connect: A TLS packet with unexpected length was received..
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

SSL証明書がインストールされ、s_clientを使用して検証されています。例:

openssl s_client -connect my.ad.com:636 -CApath /etc/ssl/certs/

...次のように終わる有効な出力を生成します:

New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-SHA384
    Session-ID: 2938000006304A580F4FA7C47F3C0C64FCF43B83B666D24B247775E24DC6B5B1
    Session-ID-ctx:
    Master-Key: C835DACE990D164C2F97F594B1D6989179735CE38AD822165F7C20C99C826DEE7E91816693AA72B08ADD85EDB6493578
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1490979674
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
1
claytond

この問題は、Windows2012のTLS1.2実装がgnutlsなどの一部のバージョンのLinuxライブラリと互換性がないために発生する可能性があります。

これが問題である場合は、TLS1.2を無効にすると機能が復元されます。次のオプションが利用できる場合があります。

Linux CLIの場合(感嘆符をエスケープする必要がある場合があります。見つかった ここ ):

export LDAPTLS_CIPHER_SUITE=NORMAL:!VERS-TLS1.2

LinuxではPHP( herehere が見つかりました)):

putenv(‘LDAPTLS_CIPHER_SUITE=NORMAL:!VERS-TLS1.2’);

Windows Server 2012では、簡潔な手順が見つかりませんが、これらは レジストリエントリ です。レジストリを直接編集することは危険な場合があるため、注意して使用してください。

1
claytond