web-dev-qa-db-ja.com

証明書を使用してtls経由でSLESでldapsearchを機能させる方法は?

証明書を使用して、phpスクリプトをtls経由でLDAPに接続する必要があります。 LDAP接続はtlsなしでうまく機能します。詳細はこちら https://stackoverflow.com/questions/15260252/how-to-use-multiple-tls-certificates-for-ldap-from-php-zend

Softerra LDAP Browserを使用して、Windowsからtls経由で接続できました。それは私達に証明書をインストールするようにそして私達がそれを信頼するかどうか尋ねました。

私の最終的な結果は、phpからTLSを使用してLDAPで認証できるようになることです。タイプ.cerの証明書が与えられました。これは、Windows Exchangeマシンからのものです。 SLESは.pem証明書をサポートしています。だから私の質問は...

Q1:クライアント(SLESサーバー)に証明書をインストールする前に、最初に.cerから.pemに変換し、最後にQ2:この証明書をサーバーにインストールして、phpアプリケーションがアクセスしてそのジョブを実行できるようにするための最良の方法は何ですか。 SLESサーバーでは、異なるLDAPサーバーに接続する必要があることに注意してください。

今走れば

ldapsearch -H ldaps://localhost:9215 -W

我々が得る

Enter LDAP Password: 
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
additional info: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed (unable to get local issuer certificate)

私はここにたくさんの良い情報を見つけました http://www.php.net/manual/de/function.ldap-connect.php#36156 そして特にこの文章は私の目にとって重要ですOnce you've gotten the ldapsearch tool working correctly PHP should work also.


  • SUSE Linux Enterprise Server 11(x86_64)
  • ldapsearch:@(#)$ OpenLDAP:ldapsearch 2.4.26(Sep 26 2012 13:14:42)$ abuild @ baur:/usr/src/packages/BUILD/openldap-2.4.26/clients/tools(LDAP library: OpenLDAP 20426)
12
Radek

これは、サーバー上の証明書の有効期限が切れているか、または無効であることを意味します。

回避策については、LDAPTLS_REQCERT変数。証明書を無視します。例:

LDAPTLS_REQCERT=never ldapsearch -D "cn=drupal-test,ou=Services,dc=example,dc=com" -w my_pass -h ldap.example.com -b "ou=People,dc=example,dc=com" -s sub -x -ZZ "(uid=admin)"

それ以外の場合は、証明書をインポートして、信頼できるものとしてマークできます。

25
kenorb

Pemからcerへの変換についてはわかりませんが、ldapsearchでldap.confのない証明書またはグローバル証明書を変更する権限のない証明書を使用するには、次のようにする必要があります。

env LDAPTLS_CACERT=/path/to/cert ldapsearch
8
tink

使用する

LDAPTLS_REQCERT=never

lDAPサーバーの証明書検証を削除します。これはそもそもTLSによって提供されるセキュリティを無効にします。これを行わないでください。問題がある場合は証明書を修正してから、tinkの説明に従ってLDAPクライアントに認証局を提供する必要があります。

1