23

私は GSSAPI を使用して開発を行っており、バニラの MIT Kerberos 5 サーバーと連携してクライアント/サーバーの作業を行うコードを持っています。現在、Active Directory に対してその機能を検証していますが、問題が発生しました。

サーバーを認証してリッスンしています。クライアントにログインさせることができます。記録として、これはhttp://thejavamonkey.blogspot.com/2008/04/clientserver-hello-world-in-kerberos.htmlに基づいたコードです。ただし、クライアントが AD からチケットを取得して、サーバーとの間のセッションを取得することはできません。KrbException: Server not found in Kerberos database (7) が発生し、それを追加する適切な場所がわかりません。ホストファイルにIPを含むサーバー名を入れたり、DNSを更新したり、サーバーレコードを入れたりしようとしましたが、うまくいきませんでした。

AD を更新して Kerberos データベースにサーバーを設定する適切な場所を誰かが知っていれば、それは素晴らしいことです。

4

10 に答える 10

12

私の場合、要求されたサーバーのアドレスの構成が間違っていることが原因です。

サーバー アドレスは FQDN (完全修飾ドメイン名) である必要があります。

Kerberos では常に FQDN が必要です。

于 2015-07-01T11:25:21.403 に答える
4

これは、SPN の欠落の問題のようです。あなたが指摘したウェブサイトには

principal="webserver/bully@EXAMPLE.COM" 

これは、チケットが取得されるプリンシパルです。これを AD ドメインに相対的な値に変更しましたか?

コマンド ライン kerberos ツールを使用して、SPN が定義されているかどうかをテストできます。

[root@gen-cs218 bin]# kinit Administrator
Administrator@SIGNING.TEST's Password:
[root@gen-cs218 bin]# kgetcred host/tcfe102@SIGNING.TEST
[root@gen-cs218 bin]# klist
Credentials cache: FILE:/tmp/krb5cc_0
        Principal: Administrator@SIGNING.TEST

  Issued                Expires               Principal <br>
Dec 15 11:42:34 2012  Dec 15 21:42:34 2012  krbtgt/SIGNING.TEST@SIGNING.TEST
Dec 15 11:42:48 2012  Dec 15 21:42:34 2012  host/tcfe102@SIGNING.TEST

ホスト名ベースの SPN は事前定義されています。事前定義されていない SPN を使用する場合は、setspn.exe ツールを使用して AD で SPN を明示的に定義し、コンピューターまたはユーザー アカウントに関連付ける必要があります。次に例を示します。

c:\> setspn.exe -A "webserver/bully@MYDOMAIN" myuser

以下のコマンドを使用して、SPN が関連付けられているアカウントを確認できます。これには、定義済みの SPN は表示されません。

c:\> setspn.exe -L "webserver/bully@MYDOMAIN"
于 2012-12-15T19:56:01.623 に答える
-5

追加することを検討してください

[appdefaults]
validate=false

/etc/krb5.conf に。これにより、DNS の不一致を回避できます。

于 2014-03-19T13:56:17.167 に答える