web-dev-qa-db-ja.com

setspnとktpassの使用に関するヘルプ

SPNを設定して、Tomcat kerberos spnegoシングルサインオン用のキータブファイルを作成しようとしています。

tomcat7を実行しているサーバーはubuntu-ad1.wad.eng.hytrst.com、KDCはkerberos.wad.eng.hytrust.com、ドメインはWAD.ENG.HYTRUST.COMです。広告ユーザー名は[email protected]です。 .HYTRUST.COM machieneのADアカウントは[email protected]です。

最初に、ユーザー名に関連付けるためのspnを作成します(これを行う必要がある理由についての説明が必要ですか?):

setspn HTTP/ubuntu-ad.wad.eng.hytrust.com [email protected]

次に、キータブを作成してWebサーバーにコピーします。

ktpass /out Tomcat.keytab /mapuser [email protected] /crypto ALL /pass * /ptype KRB5_NT_PRINCIPAL 

次に、それをWebサーバーにコピーし、ktutilを使用して/etc/krb5.keytabとマージします。

これをkinitでテストしようとすると、キーテーブルから正常に読み取ることができません。

hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo  kinit -k -t /home/hytrust/Tomcat.keytab http/[email protected]
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo  kinit -k -t /home/hytrust/Tomcat.keytab HTTP/[email protected]
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo  kinit -k -t /home/hytrust/Tomcat.keytab [email protected]
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo  kinit -k -t /home/hytrust/Tomcat.keytab ubuntu-ad1.wad.eng.hytrust.com
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo  kinit -k -t /home/hytrust/Tomcat.keytab [email protected]
kinit: Key table entry not found while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo  kinit -k -t /home/hytrust/Tomcat.keytab [email protected]
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo  kinit  [email protected] for [email protected]: 
kinit: Preauthentication failed while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo  kinit  [email protected]

[email protected]のパスワード:hytrust @ ubuntu-ad1:/ usr/share/Tomcat7/conf $

「Kerberosデータベースで見つからないクライアント」と「Kerberosデータベースで見つからないクライアント」との違いは何ですか?これらのエラーは実際にはどういう意味ですか?

5
Arthur Ulfeldt

(この質問は少し古いですが、私の分析は他の人を助けるかもしれません)

理解が不足しているため、コマンドを正しく実行していないようです。私はあなたのKDCが実際にはActive Directory KDCであると想定しています。これはあなたの説明から完全に明確ではありません。

まず、Active Directoryケルベロスでは(標準のMIT /ハイムダルケルベロスとは異なり)サービスプリンシパル名(SPN-マシンを実行するサービス)をユーザープリンシパル名(UPN、マシンの後ろに座っているユーザー)に接続する必要があります。したがって、マッピング。

setspnは、ユーザーのcnにldap属性を追加して、サービスプリンシパル名をユーザーに追加します。

ktpassはキータブを出力しますand UserPrincipalNameをusername/fully.qualified.domainname@REALMに書き換えます。

kinit -k -t key.tab principal両方のkey.tabファイルでルックアップが行われますandプリンシパルのActive Directory UPN。キータブでプリンシパルが見つからない場合、「初期認証情報の取得中にキーテーブルエントリが見つかりません」などのエラーが発生します。ディレクトリで見つからない場合は、「初期認証情報の取得中にKerberosデータベースでクライアントが見つかりません」と表示されます。

さて、あなたの問題を手元に。 ktpassの/ princパラメータがないようです。これは、実際にキータブファイルでプリンシパルを取得し、マッピングを正しく行うために必要です。 klist -k keytab与えます。

したがって、行は次のようになります(REALMを適切な場所に配置することを含む:

setspn HTTP/ubuntu-ad.wad.eng.hytrust.com aulfeldt

ktpass /princ HTTP/[email protected] /out Tomcat.keytab /mapuser aulfeldt /crypto ALL /pass * /ptype KRB5_NT_PRINCIPAL

Extra:samba-toolでSAMBA 4を使用してこれを行う場合は、userPrincipalNameを手動で(この場合は)HTTP/[email protected]に変更する必要があります。これは、sambaのキータブ生成ではUPNが更新されないため、ルックアップを実行するとエラーが発生するためです。

余談ですが、Active Directoryのマシン名はCOMPUTER $($をマーク)です。あなたのはオフのようです。

7
Bolke de Bruin

Windowsで「setspn -Q」を使用して、SPNが適切に作成されているかどうかを確認します。

C:\Windows\System32>setspn -Q HTTP/util01.example.com
CN=util01,OU=Servers,DC=example,DC=com
        HTTP/util01.example.com

Existing SPN found!

次に、keytabファイルをチェックして、それが一致するかどうかを確認します。

[Apache@util01 ~]$ klist -e -k /etc/httpd/conf/auth_httpd.keytab 
Keytab name: FILE:/etc/httpd/conf/auth_httpd.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   3 HTTP/[email protected] (DES cbc mode with RSA-MD5) 

(@ EXAMPLE.COMレルムビットを除いて)一致しない場合は、ktpassを使用してキータブを再エクスポートすることで一致するように修正します。

それらが一致する場合、keytabで指定されたSPNのチケットを取得できるはずです(レルムは含めないでください)。

$ Sudo kinit -k keytab.file HTTP/util01.example.com
3
Handyman5