証明書を使用して、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.
これは、サーバー上の証明書の有効期限が切れているか、または無効であることを意味します。
回避策については、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)"
それ以外の場合は、証明書をインポートして、信頼できるものとしてマークできます。
Pemからcerへの変換についてはわかりませんが、ldapsearchでldap.confのない証明書またはグローバル証明書を変更する権限のない証明書を使用するには、次のようにする必要があります。
env LDAPTLS_CACERT=/path/to/cert ldapsearch
使用する
LDAPTLS_REQCERT=never
lDAPサーバーの証明書検証を削除します。これはそもそもTLSによって提供されるセキュリティを無効にします。これを行わないでください。問題がある場合は証明書を修正してから、tinkの説明に従ってLDAPクライアントに認証局を提供する必要があります。