次の方法で共有


RSAT 証明書ベースの認証用の証明書を作成する

この記事では、Regression suite automation tool (RSAT) 2.8 の証明書ベースの認証に必要な証明書を設定する方法について説明します。

証明書について

デジタル証明書は、オンライン上で信頼を確立するのに役立つ、デジタル "IDカード" です。 エンティティのIDに公開キーをバインドします。 そのエンティティは、Webサイト、個人、または組織です。 暗号化を使用し、ネットワーク間のセキュリティで保護された通信を確保することで、証明書は、現代のセキュリティにおける基本的な構成要素として機能し、インターネット上の安全な通信を支える広範な公開鍵基盤 (PKI) の一部を形成します。 ID を確認し、暗号化されたチャネルを確立する方法を提供することで、悪意のある行為者から機密データを保護するのに役立ちます。

証明書は、信頼の連鎖 として知られるツリーとして配置されます。 次の図に示すように、信頼の連鎖には、ルート証明書 (または CA 証明書)、中間証明書、およびエンドエンティティ証明書 (またはユーザー証明書) が含まれます。

信頼の連鎖の図。下部にルート証明書、その上に中間証明書、上部にエンドエンティティ証明書を示します。この図は、参照、署名、および署名の検証による証明書階層間の相互関係も示しています。

中間証明書とユーザー証明書を安全に管理されたルート証明書にバインドすると、PKI の基本的な信頼を確保できます。 また、証明書の発行、管理、および最終的な失効をより効率的にし、潜在的なセキュリティ侵害に対して強靭にすることができます。 この層的なアプローチは、最新のデジタル セキュリティ対策のコアとなる手法です。 信頼を維持しながら、複雑な環境でのスケーラビリティと柔軟性を可能にします。

証明書の作成

通常、証明書は、申請者のIDに基づいて証明書を発行する証明機関 (CA) によって生成されます。 証明書署名要求を CA に送信すると、CA は CA のルート証明書とプライベート キーで署名された Secure Sockets Layer (SSL) 証明書を提供します。 証明書の使用期間は定義されています。 CA からの証明書がある場合は、自己署名証明書を作成する代わりにそれを使用できます。 Active Directory Certificate Services (AD CS) から証明書を生成することもできます。

このセクションでは、RSAT システムの設定に必要な自己署名証明書を生成する方法について説明します。 ルート証明書、中間証明書、およびユーザー証明書を作成した後、Microsoft Entra にアップロードし、RSAT 2.8 を実行しているローカル コンピューターにインストールします。

ルート証明書の作成

任意の数の中間証明書に署名するためにルート証明書 (CA証明書) が使用されます。

自己署名 CA 証明書を生成するには、次の PowerShell スクリプトを使用します。

\# Create a Root CA certificate (self-signed)\
\$rootCert = New-SelfSignedCertificate \`\
  -Subject \"CN=ContosoRootCA, O=Contoso, OU=IT, C=US\" \`\
  -KeyExportPolicy Exportable \`\
  -KeyUsage CertSign, CRLSign, DigitalSignature \`\
  -Type Custom \`\
  -KeyAlgorithm RSA \`\
  -KeyLength 2048 \`\
  -HashAlgorithm SHA256 \`\
  -NotAfter (Get-Date).AddYears(10) \`\
  -CertStoreLocation \"Cert:\\LocalMachine\\My\" \`\
  -TextExtension @(\"2.5.29.19={critical}{text}ca=true&pathlength=1\")

Export-Certificate -Cert \$rootCert -FilePath
\"C:\\Temp\\ContosoRootCA.cer\"

スクリプトの説明は以下の通りです。

  1. 証明書の作成

    \$rootCert = New-SelfSignedCertificate \`
    

    この行は、新しい自己署名証明書のコマンドレットを呼び出し、生成された証明書オブジェクトを \$rootCert 変数に割り当てます。

  2. 件名

    -Subject \"CN=ContosoRootCA, O=Contoso, OU=IT, C=US\" \`
    

    Subject パラメーターは、証明書の識別名 (DN) を設定します。 DN には次のコンポーネントがあります:

    • 共通名 (CN) – 証明書のラベル。 このラベルは通常、プライマリ識別子として使用されます。 この例では、一般的な名前はContosoRootCAです。
    • 組織 (O) – 組織。 この例では、組織は Contoso です。
    • 組織単位 (OU) – 組織内の特定の部署または部門。 この例では、組織単位は IT 部門です。
    • 国 (C): – 国/地域コード。 この例では、国/地域は米国です。
  3. キー エクスポート ポリシー

    -KeyExportPolicy Exportable \`
    

    KeyExportPolicy パラメーターは、プライベート キーをエクスポートできるかどうかを決定します。 Exportable の値は、必要に応じて証明書ストアからプライベート キーを抽出できることを指定します。

  4. キーの使用法

    -KeyUsage CertSign, CRLSign, DigitalSignature \`
    

    KeyUsage パラメーターは、証明書のキーが何に使用できるかを指定します。 通常、CA証明書には次の用途があります。

    • CertSign – キーを使用すると、証明書は他の証明書に署名できます。
    • CRLSign - キーを使用すると、証明書失効リスト (CRL) に署名できます。
    • DigitalSignature – キーにより、証明書を使用してデジタル署名を作成できます。
  5. タイプ

    -Type Custom \`
    

    Type カスタム設定は、証明書の作成に事前に定義されたテンプレートが使用されなかったことを示します。 その代わり、証明書はプロパティをカスタマイズして作成されています。

  6. キー アルゴリズム

    -KeyAlgorithm RSA \`
    

    KeyAlgorithm パラメーターは、キーのペアを作成するためのアルゴリズムを定義します。 RSA は最も広く使用されている公開キー暗号アルゴリズムの 1 つです。

  7. キーの長さ

    -KeyLength 2048 \`
    

    KeyLength パラメーターは、暗号化キーのサイズをビット数で設定します。 2048 ビット キーは、セキュリティとパフォーマンス間の強力なバランスを提供する一般的な標準です。

  8. ハッシュ アルゴリズム

    -HashAlgorithm SHA256 \`
    

    HashAlgorithm パラメーターは、証明書の作成時 (証明書の署名時) に使用されるアルゴリズムを指定します。 SHA256 は安全で広く採用されているハッシュ アルゴリズムです。

  9. 有効期間

    -NotAfter (Get-Date).AddYears(10) \`
    

    NotAfter パラメーターは証明書の有効期限を設定します。 (Get-Date).AddYears(10) の値は、証明書が現在の日付から 10 年間有効であることを指定します。 有効期間が長いルート証明書は一般的です。

  10. 証明書ストア場所

    -CertStoreLocation \"Cert:\\LocalMachine\\My\" \`
    

    CertStoreLocation パラメーターは、新しい証明書が証明書ストアに格納される場所を示します。 値 \"Cert:\\LocalMachine\\My\" は、ローカル コンピュータ アカウントの個人証明書ストアを参照します。

  11. テキスト拡張子

    -TextExtension @(\"2.5.29.19={critical}{text}ca=true&pathlength=1\")
    

    TextExtension パラメーターを使用して、カスタム証明書拡張子をテキスト ベースの形式で追加します。 この例では、値は次の部分で構成されています。

    • 2.5.29.19 – 基本制約拡張のオブジェクト識別子 (OID)。
    • {critical} – 拡張子は重要です。 クライアントが拡張子を理解できなければ、証明書を信用すべきではありません。
    • {text}ca=true&pathlength=1 – 証明書は、パスの長さ制約が 1 (pathlength=1) の CA 証明書 (ca=true) です。 パスの長さ制約は、チェーン内で従うことができる下位証明書発行者の数を制限します。
  12. 証明書のエクスポート

    Export-Certificate -Cert \$rootCert -FilePath
    \"C:\\Temp\\ContosoRootCA.cer\"
    

    このコマンドは、作成された証明書をファイルにエクスポートします。 ファイルには、証明書の公開部分が含まれ、プライベート キーは含まれません。 標準の証明書ファイル形式 (通常はBase-64エンコード) でC:\Temp\ContosoRootCA.cerに格納されます。

このスクリプトを実行すると、CAに対して適切な設定を持つ自己署名ルートCA証明書が作成されます。

  • 署名操作に使用できるエクスポート可能キー
  • 強力な暗号設定 (RSA 公開キー暗号アルゴリズム、2048 ビット キー、および SHA256 ハッシュ アルゴリズム)
  • 定義された有効期間

中間証明書の作成

ルート証明書を使用して署名された中間証明書を生成するには、次の PowerShell スクリプトを使用します。

\# Create an Intermediate CA certificate (self-signed)\
\$rootSubject = \"CN=ContosoRootCA, O=Contoso, OU=IT, C=US\"

\$rootCert = Get-ChildItem -Path Cert:\\LocalMachine\\My \|\
    Where-Object { \$\_.Subject -eq \$rootSubject -and
\$\_.HasPrivateKey }

if (-not \$rootCert) {\
    Write-Error \"Root CA certificate with subject \'\$rootSubject\' not
found in LocalMachine\\My.\"\
    return\
}

\$intermediateCert = New-SelfSignedCertificate \`\
  -Subject \"CN=ContosoIntermediateCA, O=Contoso, OU=IT - Americas,
C=US\" \`\
  -KeyExportPolicy Exportable \`\
  -KeyUsage CertSign, CRLSign, DigitalSignature \`\
  -Type Custom \`\
  -KeyAlgorithm RSA \`\
  -KeyLength 2048 \`\
  -HashAlgorithm SHA256 \`\
  -NotAfter (Get-Date).AddYears(5) \`\
  -CertStoreLocation \"Cert:\\LocalMachine\\My\" \`\
  -Signer \$rootCert \`\
  -TextExtension @(\"2.5.29.19={critical}{text}ca=true&pathlength=0\")\

Export-Certificate -Cert \$intermediateCert -FilePath \"C:\\Temp\\.cer\"

スクリプトの説明は以下の通りです。

  1. ルート サブジェクトの定義

    \$rootSubject = \"CN=ContosoRootCA, O=Contoso, OU=IT, C=US\"
    

    \$rootSubject には、以前に作成したルート CA 証明書の識別名 (DN) が格納されます。 DN には次のコンポーネントがあります:

    • 共通名 (CN) – 証明書のラベル。 この例では、一般的な名前はContosoRootCAです。
    • 組織 (O) – 組織。 この例では、組織は Contoso です。
    • 組織単位 (OU) – 組織内の特定の部署または部門。 この例では、組織単位は IT 部門です。
    • 国 (C): – 国/地域コード。 この例では、国/地域は米国です。
  2. 証明書ストアからのルート証明書の取得

    \$rootCert = Get-ChildItem -Path Cert:\\LocalMachine\\My \|\
    Where-Object { \$\_.Subject -eq \$rootSubject -and \$\_.HasPrivateKey }
    

    このコマンドは、ローカル コンピュータ アカウント (Cert:\LocalMachine\My) の個人証明書ストアを検索します。 \$rootSubject 変数で定義されているサブジェクトに一致し、関連するプライベート キーを持つ証明書を検索します。 プライベート キーは、中間の証明書に署名し、チェーンの信頼を確立する必要があるという理由から重要です。 スクリプトは、一致する証明書が見つかった場合にのみ署名を続行できます。

ユーザー証明書の作成

以前に作成した中間証明書によって検証されるユーザー証明書を作成するには、次の PowerShell スクリプトを使用します。

\# Edit the details as needed\
\$account = \"testuser\"\
\$tenant = \"Contoso\"\
\$userUPN = \"<$account@$tenant.onmicrosoft.com>\"\
\$subjectPrefix = \"\$account.\$tenant.\"\
\$subject = \"CN=\$subjectPrefix User Certificate, O=\$tenant, OU=Users,
C=US\"

\# Find the Intermediate CA in the cert store\
\$intermediateSubject = \"CN=ContosoIntermediateCA, O=Contoso, OU=IT -
Americas, C=US\"\
\$intermediateCert = Get-ChildItem -Path Cert:\\LocalMachine\\My \|\
    Where-Object { \$\_.Subject -eq \$intermediateSubject -and
\$\_.HasPrivateKey }

if (-not \$intermediateCert) {\
    Write-Error \"Intermediate CA cert not found in
Cert:\\LocalMachine\\My.\"\
    return\
}

\$userCert = New-SelfSignedCertificate \`\
  -Subject \$subject \`\
  -KeyAlgorithm RSA \`\
  -KeyLength 2048 \`\
  -HashAlgorithm SHA256 \`\
  -CertStoreLocation \"Cert:\\LocalMachine\\My\" \`\
  -Type Custom \`\
  -KeyExportPolicy Exportable \`\
  -TextExtension @(\
      \"2.5.29.19={critical}{text}ca=false\",  \# Basic Constraints (not
a CA)\
      \"2.5.29.37={text}1.3.6.1.5.5.7.3.2\",   \# EKU: Client
Authentication\
      \"2.5.29.17={text}email=\$userUPN\"       \# SAN: RFC822Name
(email)\
  ) \`\
  -Signer \$intermediateCert \`\
  -NotAfter (Get-Date).AddYears(1)\
 

Export-Certificate -Cert \$userCert -FilePath
\"C:\\Temp\\\$subjectPrefix-UserCert.cer\"

\$certpwd = ConvertTo-SecureString -String \'yourreqpwdhere\' -force
-AsPlainText

Export-PfxCertificate -Cert \$userCert -FilePath
\"C:\\Temp\\\$subjectPrefix-UserCert.pfx\" -password \$certpwd

スクリプトの説明は以下の通りです。

  1. ユーザー ID の構築

    スクリプトは、一貫した名前付けのために、ユーザー証明書に必要なIDの詳細を構築します。 これらの詳細は、識別名 (DN) とユーザー プリンシパル名 (UPN) です。 証明書は作成日から1年間有効です。

  2. 中間 CA 統合

    スクリプトは、ローカル コンピュータ ストア内の既存の中間 CA 証明書を検索します。 この手順は重要です。中間証明書を使用して、新しいユーザー証明書に署名し、信頼の連鎖を維持するためです。

  3. 証明書の作成

    ユーザーIDと署名者が設定された後、スクリプトはクライアント認証を目的とした新しい自己署名済だが下位の証明書を作成します。 カスタム テキスト拡張子は、使い方を明確にし、証明書が CA 証明書として機能しないことを保証します。

  4. 証明書のエクスポート

    スクリプトは、証明書を .cer ファイルと .pfx ファイルの両方でエクスポートします。 .cer ファイルには公開情報のみが含まれており、配布や検証の目的で使用されます。 .pfx ファイルにはプライベート キーが含まれ、パスワードで保護されています。 インポートやバックアップのために使用されます。

ルート証明書のインポート

証明書が生成された後に、ルート証明書をインポートして、PKI を構成します。

  1. Microsoft Entra 管理センター にサイン インします。

  2. 保護 タブで 詳細表示 を選択し、セキュリティ センター を選択します。

  3. PKI の作成 を選択します。

  4. セキュリティ センターで、管理>公開鍵基盤 (プレビュー) に移動します。

  5. 右上隅にある PKI の作成 を選択します。

  6. PKI の表示名を入力し、作成 を選択します。

    PKI の作成ダイアログで入力された PKI の表示名を示すスクリーンショット。

  7. 新しい PKI を選択します。 CA タブのグリッドに CA が一覧表示されていないことに注意してください。

    新しく作成された PKI の CA タブに空白のグリッドが表示されているスクリーンショット。

  8. 次の手順に従って、証明書機関を追加します。

    1. 証明書機関を追加 を選択します。

    2. 証明書 フィールドで、先ほど作成したルート CA を選択します。 次に、この証明機関はルートですか? で、はい オプションを選択します。

      ルート証明書の [証明機関の追加] ダイアログで前に説明した設定を示すスクリーンショット。

    3. 保存 を選択します。

    4. 証明書機関を追加 を再度選択します。

    5. 証明書 フィールドで、先ほど作成した中間証明書を選択します。 次に、この証明機関はルートですか? で、いいえ オプションを選択します。

      中間証明書の [証明機関の追加] ダイアログで前に説明した設定を示すスクリーン ショット。

    これで、両方の証明書が PKI にリストされます。

    新しく作成された PKI の CA タブにあるグリッドのルートと中間の証明書を示すスクリーン ショット。

  9. 認証方法は、次の手順に従って設定します。

    1. セキュリティ センター>管理>認証方法 に移動します。

    2. 左側のウィンドウで ポリシー を選択します。

      認証方法ポリシー ページのスクリーンショット。

    3. グリッドで 証明書ベースの認証 を選択します。

    4. 有効化とターゲット タブで、有効化 オプションをオンにします。

    5. グループの追加 を選択して、グループをグリッドに追加します。

      証明書ベースの認証設定ページの有効化とターゲット タブに追加されたグループを示すスクリーンショット。

    6. 構成 タブで ルールの追加 を選択します。

      [構成] タブの場所および [証明書ベースの認証設定] ページの [ルールの追加] ボタンを強調表示するスクリーンショット。

    7. 証明書の発行者 チェックボックスを選択します。

    8. オプション: 証明書が多くある場合は、PKI で CA をフィルター フィールドを使用して、PKI で CA をフィルターします。

    9. 証明書の発行者 フィールドで、中間証明書を選択します。

    10. 認証の強度 で、多要素認証 オプションを選択します。

    11. アフィニティ バインド で、 オプションを選択します。

      [認証バインド ポリシー ルールの追加] ダイアログで前述した設定を示すスクリーン ショット。

    12. 追加を選択します。

    13. 証明書ベースの認証 (CBA) に対して有効なユーザーが有効な証明書を持っていることを確認するメッセージが表示されます。 また、トランスポート層セキュリティ (TLS) 検査を無効にしたことを確認するメッセージが表示されます。 同意 を選択します。

      CBA 対応ユーザーおよび TLS 検査の証明書に関するメッセージのスクリーンショット。

    14. 保存 を選択します。 これで、証明書ベースの認証を多要素認証 (MFA) として分類できるようになりました。

    証明書ベースの認証設定ページの構成タブに追加されたルールを示すスクリーンショット。

RSAT を実行しているコンピューターに証明書をインストール

次に、RSAT を実行するコンピューターに証明書をインストールします。

メモ

ルートCA証明書は、自己署名の場合にのみインストールする必要があります。

  1. ルート CA (.cer ファイル) と中間 CA (.cer ファイル) を ローカル コンピューター>信頼されたルート証明機関 にインポートします。

  2. ユーザー証明書の .pfx ファイルを ローカル ユーザー>個人 にインポートします。

  3. テナントに対して証明書の自動サインインを有効にします。

  4. 次のPowerShellスクリプトで、テナントIDとユーザー証明書の件名の部分を編集し、スクリプトを実行してレジストリ エントリを作成します。

    New-Item -Path
    \"HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge\\AutoSelectCertificateForUrls\"
    -Force
    
    New-ItemProperty -Path
    \"HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge\\AutoSelectCertificateForUrls\"
    \`\
    -Name \"1\" \`\
    -Value
    \'{\"pattern\":\"\[\*.\]microsoftonline.com/f30eb649-d49c-41bc-91af-139e4fd1d9f6\",\"filter\":{\"SUBJECT\":{\"CN\":\"testuser.Contoso.
    User Certificate\"}}}\' \`\
    -PropertyType String -Force
    

RSAT のコンフィギュレーション

次の例では、手動での選択が認証方法として使用されます。 そのため、ユーザー証明書からサムプリントを指定することが重要です。

RSAT の全般タブにあるユーザー証明書のサムプリントを示すスクリーン ショット。

接続のテスト を選択すると、接続が正常に行われたことを示すメッセージが表示されます。

環境への正常な接続を確認するメッセージ ボックスのスクリーンショット。

RSAT 証明書モード

  • 自動 – RSAT は、手順を実行する前に各テスト ケースでポリシー選択のレジストリ エントリを構成して、certauth から CBA 認証フロー コールバックにより、一致するユーザー ポリシーが自動的に選択されるようにします。 ローカルのコンピューター エントリに必要なアクセス許可のために、ポリシーは現在のユーザー エントリとしてのみ格納されます。 このモードを使用する場合、ローカル コンピューター エントリが存在しないことを推奨します。たとえば、事前定義された単一のローカル コンピューター ポリシーを使用していて、RSAT を 自動 モードで実行する前に手動で削除した場合などです。
  • 事前定義済み – ユーザーは 自動 モードを使用することはできませんが、ポリシーを自分でコントロールする必要があります。 RSAT のルールからのサブジェクトによるフィルターが機能しない場合は、このフィルターを構成することが可能です。 すべてのアカウントで一般的なポリシーを機能させることは困難な場合があります。 事前定義済み モードでは、RSAT はレジストリ内のポリシー エントリに全く触れません。 現在のユーザーでポリシーを構成する代わりに、ローカル コンピューターの下で構成できます。 この方法で、ポリシーをユーザー間で共有できます。
  • 手動 – RSAT がテストを再生する際に、既に存在するポリシー エントリは削除されますが、現在のユーザーからのみです。 そのため、現在のユーザーがローカルコンピューターのポリシーを持つ場合、実行はこのポリシーに戻されます。 したがって、そのポリシーは混在させることはできません。 手動 モードでは、このポリシーを選択するために certauth がコール バックするときに、ポリシーを手動で選択するための 10秒のウィンドウが表示されます。