
RHEL6 マシンにデプロイされた PHP アプリケーションは、機能するためにいくつかの ldap 呼び出しに依存しています。特に、ldap_connect と ldap_bind は、ユーザーの検証と詳細の検索に使用されます。
このメカニズムは、Ubuntu サーバー上で稼働する開発サーバーでは問題なく動作します。RHEL6 上で稼働する本番マシンでは、プロセスが失敗します。どちらの場合も、同じ資格情報を使用して同じ LDAP サーバーに接続しているため、RHEL6 サーバーに何らかの問題があることは明らかです。SSL ではなく、基本的な LDAP を使用しています。
新しいサーバーにファイアウォールやネットワークの問題がないことが確認できます。LDAP サーバーへの ping は正常に機能します。また、ldap_connect 呼び出しも成功します。
アプリケーションから問題を切り分けるために、以下の簡単な PHP テスト スクリプトを使用しました。
<?php
// Set the ldap server
$ldapurl = "[snipped]";
$ldapuser = "[snipped]";
$ldappass = "[snipped]";
// Set the debug flag
$debug = true;
// Set debugging
if ($debug) {
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
}
// connect to ldap server
echo "Trying to connect<br/>";
echo "1: " . date('l jS \of F Y h:i:s A') . "<br/>";
$ldapconn = ldap_connect($ldapurl) or die ("Couldn't connect");
echo "2: " . date('l jS \of F Y h:i:s A') . "<br/>";
// binding to ldap server
echo "Trying to bind with $ldapuser - $ldappass<br/>";
echo "3: " . date('l jS \of F Y h:i:s A') . "<br/>";
$ldapbind = @ldap_bind($ldapconn, $ldapuser, $ldappass);
echo "4: " . date('l jS \of F Y h:i:s A') . "<br/>";
if (!$ldapbind) {
echo "Unable to bind to server $ldapurl\n";
echo "OpenLdap error message: " . ldap_error($ldapconn) . "\n";
exit;
}
// Rest of code goes here
?>
上記のスクリプトを両方のサーバーで実行しています。開発サーバーではすべて正常です。RHEL6 サーバーでは、接続は機能しますが、1 分以上の遅延後にバインドが失敗します。
OpenLdap エラー メッセージ: LDAP サーバーに接続できません
私はシステム管理者ではないので、このエラーに関してオンラインで見つかったほとんどの議論を完全に理解することはできません。ここで誰かがこの件について助けてくれることを願っています。よろしくお願いします。
答え1
RHEL5とは異なり、RHEL6必要SSL 証明書 (より具体的には TLS) を使用して openldap に接続します。回避策を見つけようと何度も試行錯誤しましたが、最終的には、SSL 証明書を使用する方が、使用しない方法を見つけるよりも簡単で安全であるという事実に落ち着きました。
このリンクが役に立つかもしれません: http://www.linuxquestions.org/questions/linux-enterprise-47/rhel-6-ldap-now-requires-tls-843917/
レガシー モードを強制的に実行してみることもできますが、うまくいく可能性もありますが、完全には機能せず、後々問題が発生する可能性があることがわかりました。
authconfig --enableldap --enableldapauth --forcelegacy=yes --ldapserver=myldapserver.com --ldapbasedn="dc=example,dc=com" --update
答え2
centos7/RHEL7 の場合は、値を変更します。
authconfig --enableforcelegacy --enableshadow --enablemd5 --enableldap --enableldapauth --disableldaptls --ldapserver=127.0.0.1 --ldapbasedn="dc=**ldap,dc=***.uk" --enablemkhomedir --disablesssd --disablesssdauth --update