keytab ファイルの作成
2024年7月3日
ID 183739
シングルサインオン認証用の keytab ファイルを既に作成している場合は、このファイルを使用してプロキシサーバーで Kerberos 認証を設定できます。
すべてのノードの認証に同じユーザーアカウントを使用できます。各ノードの SPN(サービスプリンシパル名)を含む keytab ファイルを作成する必要があります。keytab ファイルの作成時には、ソルト(ハッシュ関数修飾子)を生成するための属性を使用する必要があります。
新しい SPN を keytab ファイルに順次追加するには、生成されたソルトを任意の方法で保存する必要があります。
Kerberos 認証を構成する各クラスターノードに、個別の Active Directory ユーザーアカウントを作成することもできます。
keytab ファイルを作成する前に
keytab ファイルを作成する前に、各 SPN が Active Directory に登録されていないことを確認してください。これを行うには、setspn -Q <SPN>
コマンドを実行します。ここで、<SPN>
は次のような構造になります:HTTP/<クラスターノードの全修飾ドメイン名(FQDN)>@<大文字の Active Directory レルムのドメイン名>
。
コマンドは「No such SPN found」
を返します。これは、当該 SPN が登録されていないことを意味します。この SPN がすでに登録されている場合は、keytab ファイルを作成する前に、アカウントから SPN の割り当てを解除するか、この SPN が割り当てられている Active Directory 内のアカウント自体を削除する必要があります。
1 つのコントロールノードとセカンダリノードの SPN を確認する例: setspn -Q HTTP/control-01.test.local@TEST.LOCAL setspn -Q HTTP/secondary-01.test.local@TEST.LOCAL setspn -Q HTTP/secondary-02.test.local@TEST.LOCAL |
keytab ファイルの作成
keytab ファイルは、ドメインコントローラーサーバー上で、またはドメインを構成する Windows Server コンピューター上で、ドメイン管理者アカウントのもとで作成されます。
1 つのユーザーアカウントを使用して keytab ファイルを作成するには:
- Active Directory ユーザーとコンピューター スナップインで、ユーザーアカウント(例:
control-user
)を作成します。 - AES256-SHA1 暗号化アルゴリズムを使用する場合は、Active Directory ユーザーとコンピュータースナップインで次の操作を実行します:
- 作成したアカウントのプロパティを開きます。
- [アカウント]タブで、[このアカウントで Kerberos AES 256 ビット暗号化をサポートする]をオンにします。
- ktpass ユーティリティを使用して、
control-user
用の keytab ファイルを作成します。この操作には、コマンドラインで以下のコマンドを実行します:C:\Windows\system32\ktpass.exe -princ HTTP/<コントロールノードの完全修飾ドメイン名(FQDN)>@<大文字の Active Directory レルムのドメイン名> -mapuser control-user@<大文字の Active Dirfectory レルムのドメイン名> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * +dumpsalt -out <ファイルのパス>\<ファイル名>.keytab
このユーティリティでは、コマンドの実行時に
control-user
パスワードの入力が要求されます。作成された keytab ファイルにコントロールロールのノードの SPN が追加されます。生成されたソルトが表示されます:「
ソルト「<ハッシュ値>」でハッシュ化されたパスワード
- クラスターのすべてのノードそれぞれについて、keytab ファイルに SPN エントリを追加します。この操作には、次のコマンドを実行します:
C:\Windows\system32\ktpass.exe -princ HTTP/<ノードの完全修飾ドメイン名(FQDN)>@<大文字の Active Directory レルムのドメイン名> -mapuser control-user@<大文字の Active Directory レルムのドメイン名> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <以前作成されたファイルのパスと名前>.keytab -out <パスと新しい名前>.keytab -setupn -setpass -rawsalt "<手順 3 で keytab ファイルを作成したときに取得したソルトのハッシュ値>"
このユーティリティでは、コマンドの実行時に
control-user
パスワードの入力が要求されます。
keytab ファイルが作成されます。このファイルには、クラスターノードの SPN として追加した SPN がすべて含まれています。
例: たとえば、 コントロールノードの SPN を含む
ソルト「 もう 1 つ SPN を追加するには、次のコマンドを実行します:
3 番目の SPN を追加するには、次のコマンドを実行します:
これにより、「 |
各ノードに個別のユーザーアカウントを使用して keytab ファイルを作成するには:
- Active Directory ユーザーとコンピューター スナップインで、各クラスターノードに個別のユーザーアカウントを作成します(例:
control-user
、secondary1-user
、secondary2-user
などの名前のユーザーアカウント)。 - AES256-SHA1 暗号化アルゴリズムを使用する場合は、Active Directory ユーザーとコンピュータースナップインで次の操作を実行します:
- 作成したアカウントのプロパティを開きます。
- [アカウント]タブで、[このアカウントで Kerberos AES 256 ビット暗号化をサポートする]をオンにします。
- ktpass ユーティリティを使用して、
control-user
用の keytab ファイルを作成します。この操作には、コマンドラインで以下のコマンドを実行します:C:\Windows\system32\ktpass.exe -princ HTTP/<コントロールノードの完全修飾ドメイン名(FQDN)>@<大文字の Active Directory レルムのドメイン名> -mapuser control-user@<大文字の Active Directory レルムのドメイン名> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out <ファイルのパス>\<ファイル名>.keytab
このユーティリティでは、コマンドの実行時に
control-user
パスワードの入力が要求されます。作成された keytab ファイルにコントロールロールのノードの SPN が追加されます。
- クラスターのすべてのノードそれぞれについて、keytab ファイルに SPN エントリを追加します。この操作には、次のコマンドを実行します:
C:\Windows\system32\ktpass.exe -princ HTTP/<ノードの完全修飾ドメイン名(FQDN)>@<大文字の Active Directory レルムのドメイン名> -mapuser secondary1-user@<大文字の Active Directory レルムのドメイン名> -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -in <以前作成されたファイルのパスと名前>.keytab -out <パスと新しい名前>.keytab
このユーティリティでは、コマンドの実行時に
secondary1-user
パスワードの入力が要求されます。
keytab ファイルが作成されます。このファイルには、クラスターノードの SPN として追加した SPN がすべて含まれています。
例: たとえば、 コントロールノードの SPN を含む
もう 1 つ SPN を追加するには、次のコマンドを実行します:
3 番目の SPN を追加するには、次のコマンドを実行します:
これにより、「 |
keytab ファイルを作成した後で
keytab ファイルを作成したら、各 SPN が登録され、関連するアカウントに割り当てられていることを確認します。これを行うには、setspn -Q <SPN>
コマンドを実行します。ここで、<SPN>
は次のような構造になります:HTTP/<クラスターノードの全修飾ドメイン名(FQDN)>@<大文字の Active Directory レルムのドメイン名>
。
コマンドは「Existing SPN found」
および SPN が割り当てられたアカウントを返します。
さらに、keytab ファイルを作成した後、関連するアカウントに割り当てられた SPN のリストを確認できます。これを行うには、setspn -L <アカウント>
コマンドを実行します。ここで、<アカウント>
は次のような構造になります:<ユーザー名>@<大文字の Active Directory レルムのドメイン名>
。
keytab ファイルが 1 つのアカウントで作成された場合、コマンドは keytab ファイルが作成されたすべての SPN のリストを返します。keytab ファイルがノードごとに個別のアカウントで作成された場合、コマンドは特定のアカウントに割り当てられた 1 つの SPN を返します。
1 つのアカウントの場合のコマンドの例: setspn -L control-user@TEST.LOCAL ノードごとに個別のアカウントの場合のコマンドの例: setspn -L control-user@TEST.LOCAL setspn -L secondary1-user@TEST.LOCAL setspn -L secondary2-user@TEST.LOCAL |