2

私はこの Microsoft の記事のガイドラインに従って、Kerberos と AD を使用して Apache に対して認証しようとしています。kinit を使用して、Apache サーバーと AD サーバー間の通信を正常にテストしました。しかし、IE でサーバー上の制限されたページにアクセスしようとすると、内部サーバー エラーが発生し、Apache エラー ログに次のように表示されます。

[Wed Sep 24 14:18:15 2008] [debug] src/mod_auth_kerb.c(1483): [client 172.31.37.38] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
[Wed Sep 24 14:18:15 2008] [debug] src/mod_auth_kerb.c(1174): [client 172.31.37.38] Acquiring creds for HTTP/srvnfssol1.dev.local@DEV.LOCAL
[Wed Sep 24 14:18:15 2008] [error] [client 172.31.37.38] gss_acquire_cred() failed: Miscellaneous failure (see text) (Key table entry not found)

apache プロセスで truss を実行し、実際にキータブ ファイルを正常にロードしていることを確認しました。キータブファイルのフォーマットに何か問題があるのだろうか...

HTTP/srvnfssol1.dev.local@DEV.LOCAL

私は何が欠けているのか分かりません。または、他に確認することは何ですか。

助言がありますか?

ありがとう

ピーター

4

1 に答える 1

5

Ok。キータブには、サービスプリンシパル名(この場合は「HTTP / srvnfssol1.dev.local @ DEV.LOCAL」)と暗号化キーが含まれている必要があります。MSのドキュメントがそれをファイルにエコーするだけだと言っているところはわかりますが、それは正しくないと思います。

キータブを作成するには、ktpassユーティリティを使用する必要があります。MSのドキュメントはこちらです。

特に、を指定する必要がありKRB5_NT_SRV_HST、残りのオプションのほとんどはデフォルトにすることができます。

私のマシンでのサンプル:

C:\>ktpass /out test.keytab /princ HTTP/srvnfssol1.dev.local@DEV.LOCAL 
           /ptype KRB5_NT_SRV_HST /pass *
Type the password for HTTP/srvnfssol1.dev.local:
Key created.

Output keytab to test.keytab:

Keytab version: 0x502
keysize 62 HTTP/srvnfssol1.dev.local@DEV.LOCAL 
ptype 3 (KRB5_NT_SRV_HST) vno 1 etype 0x1 (DES-CBC-CRC) 
keylength 8 (0xa7f1fb38041c199e)

Active DirectoryサーバーがKDCの場合は、/map <name>引数を使用する必要があります。ここ<name>で、はサーバーを表すActiveDirectory内のコンピューターアカウントです。

これらすべてがどのように機能するかについての詳細。Webサイトを参照すると、WWW-Authenticate:Negotiateヘッダーで応答する必要があります。ブラウザーは、サービスのKerberosチケットを取得するための要求をKDC(Active Directoryサーバー)に送信します。ADサーバーは、サービスプリンシパル名を使用してチケットの暗号化キーを検索し、暗号化されたサービスチケットをブラウザーに送り返します。ブラウザがサービスチケットを取得すると、チケットを含む認証ヘッダーを使用してHTTPリクエストを再発行します。Apacheサーバーは、キータブでそのキーを検索し、チケットを復号化して、アクセスを許可します。

「キーテーブルエントリが見つかりません」エラーは、apacheがキータブで自分自身を見つけられないために発生します。名前解決/レルムが正しく設定されていない場合にも発生する可能性があります。

クライアント、tcpまたはudpポート88でwiresharkを使用して、すべてのKerberos要求AP-REQ / AP-REP / TGS-REQ/TGS-REPを確認できるはずです。

于 2009-06-11T03:41:21.807 に答える