ktpass

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012

Active Directory Domain Services (AD DS) でのホストまたはサービスのサーバー プリンシパル名を構成し、サービスの共有の秘密キーを含む .keytab ファイルを生成します。 .keytab ファイルは、Kerberos 認証プロトコルのマサチューセッツ工科大学 (MIT) による実装に基づいています。 ktpass コマンドライン ツールによって、Kerberos 認証をサポートする Windows 以外のサービスでは、Kerberos キー配布センター (KDC) サービスにより提供される相互運用性機能を使用できます。

構文

ktpass
[/out <filename>]
[/princ <principalname>]
[/mapuser <useraccount>]
[/mapop {add|set}] [{-|+}desonly] [/in <filename>]
[/pass {password|*|{-|+}rndpass}]
[/minpass]
[/maxpass]
[/crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All}]
[/itercount]
[/ptype {KRB5_NT_PRINCIPAL|KRB5_NT_SRV_INST|KRB5_NT_SRV_HST}]
[/kvno <keyversionnum>]
[/answer {-|+}]
[/target]
[/rawsalt] [{-|+}dumpsalt] [{-|+}setupn] [{-|+}setpass <password>]  [/?|/h|/help]

パラメーター

パラメーター 説明
/out <filename> 生成する Kerberos バージョン 5 の .keytab ファイルの名前を指定します。 注: これは、Windows オペレーティング システムが動作していないコンピューターに転送し、既存の .keytab ファイル /Etc/Krb5.keytab と置き換えるか、マージする .keytab ファイルです。
/princ <principalname> host/computer.contoso.com@CONTOSO.COM の形式でプリンシパル名を指定します。 警告: このパラメーターでは、大文字と小文字が区別されます。
/mapuser <useraccount> princ パラメーターで指定した Kerberos プリンシパルの名前を、指定したドメイン アカウントにマップします。
/mapop {add|set} マッピング属性の設定方法を指定します。
  • Add - 指定したローカル ユーザー名の値を追加します。 これは既定値です。
  • Set - 指定したローカル ユーザー名にデータ暗号化標準 (DES) のみの暗号化の値を設定します。
{-|+}desonly DES のみの暗号化が既定で設定されます。
  • + DES のみの暗号化用のアカウントを設定します。
  • - DES のみの暗号化用のアカウントの制限を解除します。 重要: Windows は既定で DES をサポートしていません。
/in <filename> Windows オペレーティング システムを実行していないホスト コンピューターから読み取る .keytab ファイルを指定します。
/pass {password|*|{-|+}rndpass} princ パラメーターで指定したプリンシパル ユーザー名のパスワードを指定します。 パスワードの入力を求める場合は * を使います。
/minpass ランダム パスワードの最小長を 15 文字に設定します。
/maxpass ランダム パスワードの最大長を 256 文字に設定します。
/crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All} keytab ファイルで生成されるキーを指定します。
  • DES-CBC-CRC - 互換性のために使われます。
  • DES-CBC-MD5 - MIT 実装により厳密に準拠します。また、互換性のために使われます。
  • RC4-HMAC-NT - 128 ビット暗号化を採用します。
  • AES256-SHA1 - AES256-CTS-HMAC-SHA1-96 暗号化を採用します。
  • AES128-SHA1 - AES128-CTS-HMAC-SHA1-96 暗号化を採用します。
  • All - サポートされているすべての暗号の種類を使用できることを示します。

注: 既定の設定は古い MIT バージョンに基づいているため、常に /crypto パラメーターを使う必要があります。

/itercount AES 暗号化に使う反復回数を指定します。 既定では、非 AES 暗号化の場合は itercount は無視され、AES 暗号化は 4,096 に設定されます。
/ptype {KRB5_NT_PRINCIPAL|KRB5_NT_SRV_INST|KRB5_NT_SRV_HST} プリンシパルの種類を指定します。
  • KRB5_NT_PRINCIPAL - 一般的なプリンシパルの種類 (推奨)。
  • KRB5_NT_SRV_INST - ユーザー サービス インスタンス
  • KRB5_NT_SRV_HST - ホスト サービス インスタンス
/kvno <keyversionnum> キーのバージョン番号を指定します。 既定値は 1 です。
/answer {-|+} バックグラウンド応答モードを設定します。
  • - パスワードの再設定プロンプトに対して自動的に NO で応答します。
  • + パスワードの再設定プロンプトに対して自動的に YES で応答します。
/target 使うドメイン コントローラーを設定します。 既定では、プリンシパル名に基づいてドメイン コントローラーが検出されます。 ドメイン コントローラー名が解決しない場合は、有効なドメイン コントローラーの入力を求めるダイアログ ボックスが表示されます。
/rawsalt キーを生成するときに ktpass に rawsalt アルゴリズムを使うように強制します。 このパラメーターは省略可能です。
{-|+}dumpsalt このパラメーターの出力には、キーの生成に使われている MIT ソルト アルゴリズムが表示されます。
{-|+}setupn サービス プリンシパル名 (SPN) に加えて、ユーザー プリンシパル名 (UPN) を設定します。 既定では、.keytab ファイルに両方を設定します。
{-|+}setpass <password> ユーザーのパスワードが指定された場合は、それを設定します。 rndpass を使った場合は、代わりにランダムなパスワードが生成されます。
/? このコマンドのヘルプを表示します。

解説

  • Windows オペレーティング システムが動作していないシステム上で動作するサービスは、AD DS のサービス インスタンス アカウントで構成することができます。 これにより、任意の Kerberos クライアントで Windows KDC を使い、Windows オペレーティング システムが動作していないサービスを認証できるようになります。

  • /princ パラメーターは ktpass によって評価されず、指定したとおりに使われます。 Keytab ファイルを生成するときに、パラメーターが userPrincipalName 属性値の大文字と小文字に正確に一致するかどうかを確認するチェックはありません。 大文字と小文字を区別する Kerberos ディストリビューションにこの Keytab ファイルを使うと、大文字と小文字が正確に一致しない場合に問題が発生することがあり、事前認証中に失敗する可能性もあります。 LDifDE エクスポート ファイルから正しい userPrincipalName 属性値を確認して取得します。 次に例を示します。

    ldifde /f keytab_user.ldf /d CN=Keytab User,OU=UserAccounts,DC=contoso,DC=corp,DC=microsoft,DC=com /p base /l samaccountname,userprincipalname
    

Windows オペレーティング システムが動作していないホスト コンピューター用に Kerberos .keytab ファイルを作成するには、プリンシパルをアカウントにマップし、ホスト プリンシパルのパスワードを設定する必要があります。

  1. Active Directory ユーザーとコンピューター スナップインを使って、Windows オペレーティング システムが動作していないコンピューター上にサービスのユーザー アカウントを作成します。 たとえば、User1 というアカウントを作成します。

  2. 次のように入力して、ktpass コマンドを使ってユーザー アカウントの ID マッピングを設定します。

    ktpass /princ host/User1.contoso.com@CONTOSO.COM /mapuser User1 /pass MyPas$w0rd /out machine.keytab /crypto all /ptype KRB5_NT_PRINCIPAL /mapop set
    

    Note

    同じユーザー アカウントに複数のサービス インスタンスをマップすることはできません。

  3. Windows オペレーティング システムが動作していないホスト コンピューター上で、.keytab ファイルを /Etc/Krb5.keytab ファイルにマージします。