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} |
マッピング属性の設定方法を指定します。
|
{-|+} desonly |
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 ファイルで生成されるキーを指定します。
注: 既定の設定は古い MIT バージョンに基づいているため、常に |
/itercount | AES 暗号化に使う反復回数を指定します。 既定では、非 AES 暗号化の場合は itercount は無視され、AES 暗号化は 4,096 に設定されます。 |
/ptype {KRB5_NT_PRINCIPAL|KRB5_NT_SRV_INST|KRB5_NT_SRV_HST} |
プリンシパルの種類を指定します。
|
/kvno <keyversionnum> |
キーのバージョン番号を指定します。 既定値は 1 です。 |
/answer {-|+} |
バックグラウンド応答モードを設定します。
|
/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 ファイルを作成するには、プリンシパルをアカウントにマップし、ホスト プリンシパルのパスワードを設定する必要があります。
Active Directory ユーザーとコンピューター スナップインを使って、Windows オペレーティング システムが動作していないコンピューター上にサービスのユーザー アカウントを作成します。 たとえば、User1 というアカウントを作成します。
次のように入力して、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
同じユーザー アカウントに複数のサービス インスタンスをマップすることはできません。
Windows オペレーティング システムが動作していないホスト コンピューター上で、.keytab ファイルを /Etc/Krb5.keytab ファイルにマージします。