GSS -APIエラーコンテキストの受け入れ:サービスキーは利用できません - ソラリスコード、Windows KDC

StackOverflow https://stackoverflow.com/questions/6819790

  •  26-10-2019
  •  | 
  •  

質問

Active Directoryに対してテストKerberosクライアント/サーバーペアを動作させようとしています。コーポレートネットワークのスペアドメインで3人のユーザーを作成しました。「Richardc」、「server1」、「server2」です。私のサーバーユーザーは、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

今回は +Desonlyオプションを使用していませんでした。今日のシステムでは、DESが必要ないことを期待しています。管理の懸念を避けるために、この質問では、実際のドメイン名を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を使用して、KeyTabのキーを使用してログインすることもできます。

私は自分のテストプログラムの両方を持っています。 http://download.oracle.com/docs/cd/e19683-01/816-1331/sampleprogs-1/index.html. 。そのプログラムでは、サーバーで、GSS_C_NT_HOSTBASET_SERVICEを両方のKeyTabsで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は、クライアントに付与されたキーを示しています。 keytabにある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のセットアップはありません。ベンチマークを指しているローカルkrb5.confファイルを使用しています。rddev.local領域を使用していますが、マシンがホスト名で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などのオプションは効果がないようです。

質問は - エラーを修正するにはどうすればよいですか?

ありがとう - リチャード

役に立ちましたか?

解決

問題はにありました

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

これにより、Windowsはキーバージョン数を増やします。結果のキーは、何らかの理由で「Kinit -K」ログインの問題ではありませんが、Solarisシステムでは役に立たない「サービスキーが利用できない」でGSS -APIサーバーコードが失敗します。

Windowsシステムは2008R2でした。このコマンドの動作は、Windowsの異なるバージョン間で変化していることを理解しています。

Desonlyで正常にテストしました。他のテストのために、貧しい貧しいIT部門に戻る必要があります:-)

解決策は、-kvno引数を見逃すことです。

 ktpass -out server4.keytab 
      -princ server4/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL
      -mapuser ServerUser4@BENCHMARKING.RDDEV.LOCAL
      -pass ThePassword
      -crypto DES-CBC-MD5
      -pType KRB5_NT_USER_PRINCIPAL

これにより、出力が得られます

Targeting domain controller: GBHA-DCBENCH01P.benchmarking.rddev.local
Using legacy password setting method
Successfully mapped server4/serbia.mydomain.com to Server4.
Key created.
Output keytab to server4.keytab:
Keytab version: 0x502
keysize 79 server4/serbia.mydomain.com@BENCHMARKING.RDDEV.LOCAL ptype 1
     (KRB5_NT_PRINCIPAL) vno 5 etype 0x3 (DES-CBC-MD5) keylength 8 (0xd1532a6d0f2a8631)
Account Server4 has been set for DES-only encryption.

出力の「VNO 5」に注意してください。

-Typeの両方の値でテストしました。どちらも機能します。

私のGSSコードはgss_c_nt_hostbased_serviceを使用していますが、これが変更されるように思われるのは、名前を入力するために必要な形式です。

(上記のキーを変更しました)

補遺

私の最終ソリューションでは、-ptype krb5_nt_user_principalを使用しています

私のGSSコードはGSS_C_NT_USER_NAMEを使用して名前を調べ、フルネームを指定します server4/serbia.mydomain.com@benchmarking.rddev.local. 。私が取り組んでいたすべてのプラットフォームがGSS_C_NT_HOSTBASET_SERVICEを受け入れたわけではないことがわかりましたが、それらはすべてGSS_C_NT_USER_NAMEを受け入れています。

サーバーアプリケーションをインストールした人は、サーバープリンシパル名を構成オプションとして設定します。これは最も信頼できる方法のようでした。キーを設定する人は、それが何であるかを知っているので、アプリケーションにどのキーを使用するかを直接伝えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top