Active Directory に対して動作するテスト Kerberos クライアント/サーバー ペアを取得しようとしています。企業ネットワークの予備ドメインに、「RichardC」、「Server1」、「Server2」という 3 人のユーザーを作成しました。私のサーバーのユーザーは、1 つは KRB5_NT_PRINCIPAL で、もう 1 つは KRB5_NT_SRV_HOST で、異なるサービス プリンシパル名にマップされています。
ktpass -out server2.keytab
-princ server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL
-mapuser ServerUser2@BENCHMARKING.RDDEV.LOCAL
-pass ThePassword
-crypto All
-pType KRB5_NT_SRV_HOST
-kvno 2
今日のシステムでは DES が必要ないことを期待して、今回は +DesOnly オプションを使用しませんでした。管理上の懸念を避けるため、この質問では実際のドメイン名を mydomain に置き換えました。
これにより、キータブが表示されます。私はそれをリストすることができます:
KVNO Principal
---- --------------------------------------------------------------------------
2 server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL (DES cbc mode with CRC-32)
2 server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL (DES cbc mode with RSA-MD5)
2 server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL (ArcFour with HMAC/md5)
2 server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL (AES-256 CTS mode with 96-bit SHA-1 HMAC)
2 server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL (AES-128 CTS mode with 96-bit SHA-1 HMAC)
キータブのキーを使用して kinit -k を使用してログインすることもできるので、うまくいくようです。
私は自分のテスト プログラムと、http://download.oracle.com/docs/cd/E19683-01/816-1331/sampleprogs-1/index.htmlからのテスト プログラムに失敗しました。そのプログラムでは、サーバー上で GSS_C_NT_HOSTBASED_SERVICE を GSS_C_NT_USER_NAME に変更し、両方のキータブで名前を認識できるようにしました。Oracle Demoサーバーを次のように実行しています
./gss-server -mech 1.2.840.113554.1.2.2 server2/serbia.mydomain.com
とクライアント
./gss-client -mech 1.2.840.113554.1.2.2 serbia.mydomain.com server2 "Hello"
結果:
GSS-API error accepting context: Invalid credential was supplied
GSS-API error accepting context: Service key not available
この場合と私自身のテスト コードの両方で、クライアントが最初のトークンを送信した後、サーバーがそれをデコードしようとしているときにエラーが発生します。
klist は、クライアントに付与されたキーを示します。キータブにあるArcFourを使用しています
Default principal: RichardC@BENCHMARKING.RDDEV.LOCAL
Valid starting Expires Service principal
07/25/11 17:36:49 07/26/11 03:35:18 krbtgt/BENCHMARKING.RDDEV.LOCAL@BENCHMARKING.RDDEV.LOCAL
renew until 08/01/11 17:36:49
07/25/11 17:36:03 07/26/11 03:35:18 server2/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL
renew until 08/01/11 17:36:03
UNIX マシン (セルビア) は別のレルム (ここでは mydomain.com と呼んでいます) に属している可能性がありますが、Kerberos がセットアップされていないようです。BENCHMARKING.RDDEV.LOCAL 領域を指すローカルの krb5.conf ファイルを使用していますが、マシンがホスト名で DNS を使用しようとすると、間違った応答が返される可能性があります。私のkrb5.confには
[libdefaults]
default_keytab_name = /users/dev/core/richardc/server1.keytab
default_realm = BENCHMARKING.RDDEV.LOCAL
dns_lookup_kdc = false
default_tkt_types = DES-CBC-MD5
[realms]
BENCHMARKING.RDDEV.LOCAL = {
kdc = gbha-dcbench01p.benchmarking.rddev.local
admin_server = gbha-dcbench01p.benchmarking.rddev.local
}
[domain_realm]
benchmarking.rddev.local = BENCHMARKING.RDDEV.LOCAL
.benchmarking.rddev.local = BENCHMARKING.RDDEV.LOCAL
mydomain.com = BENCHMARKING.RDDEV.LOCAL
.mydomain.com = BENCHMARKING.RDDEV.LOCAL
default_tkt_types などのオプションが無効になっているようです。
質問は - どうすればエラーを修正できますか?
ありがとう - リチャード