0

Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/0.9.8w および PHP/5.3.13 を使用して、RHEL 5.6 (x86_64) で新しい LAMP サーバーをセットアップ中です。(PHP 5.3.11でも試しました。)

問題は、自己署名証明書を使用している SSL LDAP サーバーにバインドできないことです。

TLS certificate verification: Error, self signed certificate in certificate chain

私が読んだどこでも、ldap.confを「TLS_REQCERT never」に変更することに言及していますが、これは機能していません。(変更は一部の企業サブシステムによって上書きされるため、これも恒久的な解決策ではありません。)

これをPHPコードに入れてみました:

putenv('LDAPTLS_REQCERT=never');

これもうまくいきませんでした。

次の 3 つの点に注意してください。

1) この同じコードは、同様のサーバー設定で正常に動作しましたが、PHP 5.2.x を使用しており、ldap.conf ファイルに変更はありませんでした。

2) Apache ではなく CLI 経由で同じ PHP スクリプトを実行すると、正常に動作します。

3) ldaps:// 接続を削除して ldap:// のみを使用すると、問題なく動作します。

ldap.conf への変更が正しく機能しない理由と、ldap.conf が変更されていない場合でも CLI が機能する理由がわかりません。

編集:

証明書チェックが問題だとは思わなくなりましたが、Apache から実行したときに ldaps:// を機能させるのにまだ苦労しています。

CLI から実行した場合のデバッグは次のとおりです。

TLS certificate verification: Error, self signed certificate in certificate chain
TLS trace: SSL_connect:SSLv3 read server certificate A
TLS trace: SSL_connect:SSLv3 read server done A
TLS trace: SSL_connect:SSLv3 write client key exchange A
TLS trace: SSL_connect:SSLv3 write change cipher spec A
TLS trace: SSL_connect:SSLv3 write finished A
TLS trace: SSL_connect:SSLv3 flush data
TLS trace: SSL_connect:SSLv3 read finished A
ldap_open_defconn: successful
ldap_send_server_request

そして、これは Apache で実行した場合と同じです:

TLS certificate verification: Error, self signed certificate in certificate chain
TLS trace: SSL_connect:SSLv3 read server certificate A
TLS trace: SSL_connect:SSLv3 read server done A
TLS trace: SSL_connect:SSLv3 write client key exchange A
TLS trace: SSL_connect:error in SSLv3 write finished A
TLS trace: SSL_connect:error in SSLv3 write finished A
TLS: can't connect.

したがって、どちらのシナリオでも証明書エラーのように見えますが、これは問題ありませんが、Web モジュールとして実行すると、TLS: can't connect と成功した接続が表示されます。

phpinfo() と php -i はどちらも、OpenSSL と LDAP のオプションに関しては同じです。

4

1 に答える 1

0

私はついに問題を解決することができました。残念ながら、これは未知のバグというよりも、ユーザー エラーの奇妙なケースでした。

LAMP スタックのすべての部分をコンパイルしていたとき、最初に OpenSSL を -fPIC パラメータでコンパイルしたことを思い出しました。httpd はそれに対してリンクされていました。

私がphp 5.3.11をコンパイルしているときに、SSLライブラリは代わりに「共有」でコンパイルされるべきであると不平を言ったので、OpenSSL(同じインストールディレクトリ)を再コンパイルし、それに対してPHPをリンクしました。

これが原因で、httpd で OpenSSL ライブラリの使用に問題が発生していたようです。そのため、新しい OpenSSL ライブラリに対して httpd を再コンパイルし、それ自体を再インストールしました。

SSL over LDAP が動作するようになりました。

于 2012-05-17T17:32:40.667 に答える