証明書を使用してTLSを介してPHPスクリプトをLDAPに接続する必要があります。 LDAP接続はTLSなしで機能します。詳細については、ここをクリックしてください。https://stackoverflow.com/questions/15260252/how-to-use-multiple-tls-certificates-for-ldap-from-php-zend
Softerra LDAPブラウザを使用してtlsを介してWindowsから接続しました。証明書をインストールし、それを信頼するかどうかを尋ねます。
私の最終結果は、PHPでTLSを使用してLDAPを介して認証できることです。 .cer型証明書を取得しました。 Windows Exchange コンピュータで提供されます。私が知っている限り、SLESは.pem証明書をサポートしています。だから私の質問は...
Q1:.cerから.pemに変換する必要があります。まず、クライアント(SLESサーバーなど)に証明書をインストールし、最後に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エンタープライズサーバー11(x86_64)
- ldapsearch: @(#) $OpenLDAP: ldapsearch 2.4.26 (2012年9月26日 13:14:42) $ abuild@baur:/usr/src/packages/BUILD/openldap-2.4.26/clients/tools ( LDAPライブラリ:オープンLDAP 20426)
答え1
これは、サーバーの証明書が期限切れになっているか無効であることを意味します。
回避策は、次のように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)"
それ以外の場合は、証明書をインポートして信頼できるとマークすることができます。
答え2
pemからcerへの変換についてはわかりませんが、ldapsearchがldap.confまたはグローバル証明書を変更する権限なしで証明書を使用できるようにするには、次のことができる必要があります。
env LDAPTLS_CACERT=/path/to/cert ldapsearch
答え3
使用
LDAPTLS_REQCERT=never
LDAP サーバーの証明書検証を削除します。これはまずTLSが提供するセキュリティを崩します。これをしないでください。問題がある場合は、Tinkの説明に従って証明書を回復してから、LDAPクライアントに認証局を提供する必要があります。