Kerberos サービス・プリンシパル名とキータブ・ファイルの作成
WebSphere® Application Server に対して SPNEGO Web または Kerberos 認証の要求処理を行う場合に、このタスクが必要です。 Kerberos サービス・プリンシパル名とキータブ・ファイルは、Microsoft Windows、IBM i、Linux、Solaris、Massachusetts Institute of Technology (MIT) および z/OS® オペレーティング・システムの鍵配布センター (KDC) を使用して作成できます。
このタスクについて
Microsoft Windows KDC を使用した Kerberos サービス・プリンシパル名およびキータブ・ファイルの作成:
このタスクは、Active Directory ドメイン・コントローラー・マシンで実行されます。 以下のステップを実行して、Active Directory ドメイン・コントローラーを 実行している Windows 2003 Server が、関連する鍵配布センター (KDC) に対して 正しく構成されていることを確認してください。
- WebSphere Application Server の Microsoft Active Directory に、ユーザー・アカウントを作成します。
「スタート」->「プログラム」->「管理ツール」->「Active Directory ユーザーとコンピュータ」をクリックします。
WebSphere Application Server の名前を使用します。例えば、WebSphere Application Server マシンで実行しているアプリケーション・サーバーの名前が myappserver.austin.ibm.com だとすると、Active Directory に myappserver という名前の新規ユーザーを作成します。
「コンピューターとドメイン・コントローラー (Computers and Domain Controllers)」で、myappserver というコンピューター名が使われていないことを確認します。 myappserver というコンピューター名が既存の場合は、別のユーザー・アカウント名を作成する必要があります。- 「スタート」->「プログラム」->「管理ツール」->「アクティブ・ディレクトリーのユーザーおよびコンピューター」->「コンピューター」とクリックします。
- 「プログラム」->「管理ツール」->「アクティブ・ディレクトリーのユーザーおよびコンピューター」->「ドメイン・コントローラー」とクリックします。
- setspn コマンドを使用して、Kerberos サービス・プリンシパル名 <サービス名>/<完全修飾ホスト名> を、Microsoft ユーザー・アカウントにマップします。
SPNEGO Web 認証のサービス名は HTTP でなければなりませんが、KDC で許可されているストリングであれば任意のものでかまいません。
SPNEGO Web 認証の setspn コマンドの使用例は、以下のとおりです。
C:\Program Files\Support Tools> setspn -A HTTP/myappserver.austin.ibm.com myappserver
注: ホスト名は、完全修飾ホスト名でなければなりません。重要: 同じ SPN を、複数の Microsoft ユーザー・アカウントにマッピングしていないことを確認してください。 同じ SPN を複数のユーザー・アカウントにマップすると、 Web ブラウザーが、WebSphere Application Server に対して SPNEGO トークンではなく NT LAN マネージャー (NTLM) トークンを送信することがあります。 - Kerberos キータブ・ファイルを作成し、WebSphere Application Server で使用できるようにします。SPN 用に Kerberos キータブ・ファイル (krb5.keytab) を作成するには、Windows Server ツールキットの ktpass ツールを使用します。注: Kerberos キータブ・ファイルには、ユーザー・パスワードに類似した鍵のリストが含まれています。ホストでは、Kerberos キータブ・ファイルをローカル・ディスクに保管することにより保護することが重要です。
サーバー・プリンシパル名 (SPN) 用に Kerberos キータブ・ファイルを作成するには、Windows Server ツールキットの ktpass ツールを使用します。ktpass ツールは、使用している Windows Server のレベルにあった最新バージョンを使用します。 例えば、Windows 2003 Server の場合は、Windows 2003 バージョンのツールを使用します。
ktpass ツールに適切なパラメーター値を判断するには、コマンド行から ktpass -? コマンドを実行します。 このコマンドにより、特定のオペレーティング・システムに対応する ktpass ツールで、-crypto RC4-HMAC または -crypto RC4-HMAC-NT のどちらのパラメーター値を使用するかがリストされます。ツールキットから警告メッセージを受け取らないようにするには、-ptype KRB5_NT_PRINCIPAL パラメーター値を指定する必要があります。
Windows 2003 Server バージョンの ktpass ツールは、暗号化タイプ RC4-HMAC および シングル DES (データ暗号化規格) をサポートしています。 ktpass ツールについて詳しくは、Windows 2003 Technical Reference - Ktpass overview を参照してください。
以下のコードは、コマンド行で ktpass -? コマンドを入力したときに使用できる機能を示しています。 この情報は、使用しているツールキットのバージョンによって異なる場合があります。C:¥Program Files¥Support Tools>ktpass -? Command line options: ---------------------most useful args [- /] out : Keytab to produce [- /] princ : Principal name (user@REALM) [- /] pass : password to use use "*" to prompt for password. [- +] rndPass : ... or use +rndPass to generate a random password [- /] minPass : minimum length for random password (def:15) [- /] maxPass : maximum length for random password (def:256) ---------------------less useful stuff [- /] mapuser : map princ to this user account (default: don't) [- /] mapOp : how to set the mapping attribute (default: add it) [- /] mapOp : is one of: [- /] mapOp : add : add value (default) [- /] mapOp : set : set value [- +] DesOnly : Set account for des-only encryption (default:don't) [- /] in : Keytab to read/digest ---------------------options for key generation [- /] crypto : Cryptosystem to use [- /] crypto : is one of: [- /] crypto : DES-CBC-CRC : for compatibility [- /] crypto : DES-CBC-MD5 : for compatibliity [- /] crypto : RC4-HMAC-NT : default 128-bit encryption [- /] ptype : principal type in question [- /] ptype : is one of: [- /] ptype : KRB5_NT_PRINCIPAL : The general ptype-- recommended [- /] ptype : KRB5_NT_SRV_INST : user service instance [- /] ptype : KRB5_NT_SRV_HST : host service instance [- /] kvno : Override Key Version Number Default: query DC for kvno. Use /kvno 1 for Win2K compat. [- +] Answer : +Answer answers YES to prompts. -Answer answers NO. [- /] Target : Which DC to use. Default:detect ---------------------options for trust attributes (Windows Server 2003 Sp1 Only [- /] MitRealmName : MIT Realm which we want to enable RC4 trust on. [- /] TrustEncryp : Trust Encryption to use; DES is default [- /] TrustEncryp : is one of: [- /] TrustEncryp : RC4 : RC4 Realm Trusts (default) [- /] TrustEncryp : DES : go back to DES
重要: ktpass コマンドで -pass スイッチを使用して Microsoft Windows サーバー・アカウントのパスワードをリセットしないでください。詳しくは、Windows 2003 Technical Reference - Ktpass overview を参照してください。暗号化タイプにより異なりますが、以下の方法の 1 つで ktpass ツールを使用して Kerberos キータブ・ファイルを作成します。 以下のセクションは、ktpass ツールで使用するさまざまなタイプの暗号化を示しています。 ご使用の Microsoft Windows 環境で特定のツールキットに必要な -crypto パラメーター値を判断する場合、ktpass -? コマンドを実行することが重要です。- 単一 DES 暗号化タイプ:コマンド・プロンプトから ktpass コマンドを実行します。
ktpass -out c:¥temp¥myappserver.keytab -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM -mapUser myappserv -mapOp set -pass was1edu -crypto DES-CBC-MD5 -pType KRB5_NT_PRINCIPAL +DesOnly
表 1. 単一 DES 暗号化タイプの場合の ktpass の使い方. 以下の表は、単一 DES 暗号化タイプの場合の ktpass の使用法を説明します。
オプション 説明 -out c:¥temp¥myappserver.keytab この出力ファイルに鍵が書き込まれます。 -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM ユーザー・ログオン名とレルムは、大文字で連結する必要があります。 -mapUser キーがユーザー myappserver にマップされます。 -mapOp このオプションは、マッピングを設定します。 -pass was1edu このオプションは、ユーザー ID に対するパスワードです。 -crypto DES-CBC-MD5 このオプションはシングル DES の暗号化タイプを使用します。 -pType KRB5_NT_PRINCIPAL このオプションは、KRB5_NT_PRINCIPAL プリンシパル値を指定します。 ツールキットの警告メッセージが表示されないようにする場合は、このオプションを指定してください。 +DesOnly このオプションは DES 暗号化のみを生成します。 - RC4-HMAC 暗号化タイプ:重要: RC4-HMAC 暗号化は、Windows 2003 Server を KDC として使用している場合にのみサポートされます。コマンド・プロンプトから ktpass コマンドを実行します。
ktpass -out c:¥temp¥myappserver.keytab -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM -mapUser myappserver -mapOp set –pass was1edu -crypto RC4-HMAC -pType KRB5_NT_PRINCIPAL
表 2. RC4-HMAC 暗号化タイプの場合の ktpass の使い方 オプション 説明 -out c:¥temp¥myappserver.keytab この出力ファイルに鍵が書き込まれます。 -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM ユーザー・ログオン名とレルムは、大文字で連結する必要があります。 -mapUser キーがユーザー myappserver にマップされます。 -mapOp このオプションは、マッピングを設定します。 -pass was1edu このオプションは、ユーザー ID に対するパスワードです。 -crypto RC4-HMAC このオプションを指定すると、RC4-HMAC 暗号化タイプが選択されます。 -pType KRB5_NT_PRINCIPAL このオプションは、KRB5_NT_PRINCIPAL プリンシパル値を指定します。 ツールキットの警告メッセージが表示されないようにする場合は、このオプションを指定してください。 - RC4-HMAC-NT 暗号化タイプの場合コマンド・プロンプトから ktpass コマンドを実行します。
ktpass -out c:¥temp¥myappserver.keytab -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM -mapUser myappserver -mapOp set -pass was1edu -crypto RC4-HMAC-NT -pType KRB5_NT_PRINCIPAL
SPNEGO で使用する Kerberos キータブ・ファイルが作成されます。表 3. RC4-HMAC-NT 暗号化タイプの場合の ktpass の使い方 オプション 説明 -out c:¥temp¥myappserver.keytab この出力ファイルに鍵が書き込まれます。 -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM ユーザー・ログオン名とレルムは、大文字で連結する必要があります。 -mapUser キーがユーザー myappserver にマップされます。 -mapOp このオプションは、マッピングを設定します。 -pass was1edu このオプションは、ユーザー ID に対するパスワードです。 -crypto RC4-HMAC-NT このオプションを指定すると、RC4-HMAC-NT 暗号化タイプが選択されます。 -pType KRB5_NT_PRINCIPAL このオプションは、KRB5_NT_PRINCIPAL プリンシパル値を指定します。 ツールキットの警告メッセージが表示されないようにする場合は、このオプションを指定してください。
- 単一 DES 暗号化タイプ:
iSeries、 Linux、Solaris および MIT の KDC を使用した Kerberos サービス・プリンシパル名およびキータブ・ファイルの作成:
kadmin、kadmin.local addprinc、および ktadd コマンドについて詳しくは、Kerberos 実装文書を参照してください。
このタスクは、Linux、Solaris、または MIT の KDC マシン上で実行します。
- Kerberos 認証用の Kerberos サービス・プリンシパルを作成します。例えば、
WAS/testmach.austin.ibm.com kadmin.local: addprinc WAS/testmach.austin.ibm.com
- 新規に作成された Kerberos サービス・プリンシパル WAS/testmach.austin.ibm.com を、デフォルトの krb5.keytab ファイルに追加します。例えば、
kadmin.local: ktadd WAS/testmach.austin.ibm.com
z/OS KDC を使用した Kerberos サービス・プリンシパル名およびキータブ・ファイルの作成:
Simple and Protected GSS-API Negotiation (SPNEGO) Web 認証および Kerberos 認証が使用可能になる前に、WebSphere Application Server 管理者は、WebSphere Application Server を実行しているホスト上で Kerberos キータブ・ファイルを作成する必要があります。
SPN を作成するには、以下のようにします。
- Kerberos ID (KERBNAME) は、<サービス>/<完全修飾システム名> の書式でなければなりません。
- 以下の例は、SPNEGO Web (HTTP/host1.pok.ibm.com) 用の Kerberos SPN を作成します:
ALTUSER ASCR1 KERB(KERBNAME(HTTP/host1.pok.ibm.com))
トラブルの回避 (Avoid trouble): ALTUSER コマンドに指定する、サポートする暗号化タイプのリストが、krb5.conf Kerberos 構成ファイル内で指定されている暗号化タイプと整合していることを確認してください。例えば、krb5.conf 構成ファイルで aes256-cts-hmac-sha1-96 のみをサポートと指定している場合は、ENCRYPT オペランドで、AES256 を除く他のすべての暗号化タイプをサポート対象外に設定する必要があります。gotcha
- ユーザーの Kerberos 鍵を生成します。この鍵を生成するには、この ID にパスワードが関連付けられていなければなりません。
この ID をシステムへのログオンに使用しないでください。新規 Kerberos 鍵が必要な場合は、必ず以下の 2 行を入力してください。注: WebSphere または KDC の管理者は、キータブ・ファイル内にエントリーを作成するために、このパスワードを知っておく必要があります。
ALTUSER ASCR1 PASSWORD(was1krb) NOEXPIRED ALTUSER ASCR1 NOPASSWORD
- このユーザーに、有効な Kerberos セグメントと鍵があることを確認してください。以下に例を示します。
LISTUSER ASCR1 KERB NORACF USER=ASCR1 KERB INFORMATION ---------------- KERBNAME= HTTP/host1.pok.ibm.com KEY VERSION= 001 KEY ENCRYPTION TYPE= DES NODES3 NODESD
Kerberos キータブ (krb5.keytab) ファイルを 作成するには、以下のようにして、Java™ Kerberos の ktab コマンド (<$WAS_HOME>/java/bin/ktab) を 使用します。
- コマンド行から ktab -help コマンドを入力すると、このコマンドの正しい使用法が
表示されます。以下に例を示します。
(host1)CTC03:/PYRSA1/usr/lpp/zWebSphere/V7R1/java/J5.0/bin(189):>ktab -help Usage: java com.ibm.security.krb5.internal.tools.Ktab [options] Available options: -l list the keytab name and entries -a <principal_name> [password] add an entry to the keytab -d <principal_name> delete an entry from the keytab -k <keytab_name> specify keytab name and path with FILE: prefix -m <source_keytab_name> <destination_keytab_name> specify merging source keytab file name and destination keytab file name
- コマンド行から ktab コマンドを使用すると、デフォルトのキータブ・ファイルに SPN が追加されます。
(host1)CTC03:/PYRSA1/usr/lpp/zWebSphere/V7R1/java/J5.0/bin(201):>ktab -a HTTP/host1.pok.ibm.com@LSREALM.POK.IBM.COM ot56prod Done! Service key for principal HTTP/host1.pok.ibm.com@LSREALM.POK.IBM.COM saved
- デフォルトのキータブ・ファイルに、正しい SPN があることを確認します。以下に例を示します。
(host1)CTC03:/PYRSA1/usr/lpp/zWebSphere/V7R1/java/J5.0/bin(202):>ktab 1 entries in keytab, name: /etc/skrb/krb5.keytab KVNO Principal ---- --------- 1 HTTP/host1.pok.ibm.com@LSREALM.POK.IBM.COM
ftp> bin
ftp> put c:¥temp¥KRB5_NT_SEV_HST¥krb5.keytab
wsadmin>$AdminTask help validateKrbConfig
ただし、SR3 の JDK 1.6 をインストールしている場合は該当しません。
タスクの結果
SPNEGO および Kerberos またはそのいずれかの認証要求を処理する際に WebSphere Application Server が使用する KDC に、Kerberos サービス・プリンシパル名およびキータブ・ファイルが作成されました。