# 中間 CA

{% hint style="warning" %}
SCEPman Enterprise Edition のみ
{% endhint %}

別のルートCAを一次認証局として使用したい場合、SCEPmanを下位認証局として動作させるための中間CA証明書を作成できます。Azure Key Vaultで正しい証明書を直接作成し、ルートCAで署名するためのCSRをダウンロードできます。署名された要求はアップロードしてAzure Key Vaultにマージできます。本記事では必要な手順を詳細に案内します。

## Key Vault のアクセス許可

CSR を作成し中間CA証明書をマージするには、ユーザーアカウントに Azure Key Vault へのアクセス権を付与する必要があります。アクセス権の割り当て方法は Key Vault のアクセス構成によって異なります。

{% tabs %}
{% tab title="Azure RBAC" %}

1. Azure ポータルでご自身の Azure Key Vault に移動します
2. をクリックします **アクセス制御 (IAM)** 左側のナビゲーション ペインにあります。
3. をクリックします **ロールの割り当て** を選択して新しいロール割り当てを追加します

<figure><img src="https://114237723-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FZUqsPTRdUk5IhmZZlBVD%2Fimage.png?alt=media&#x26;token=325c2296-4f6b-476d-b003-29cf3674556f" alt=""><figcaption><p>Key Vault に新しいロール割り当てを追加します</p></figcaption></figure>

4. 希望する更新間隔に基づいて **Key Vault Certificate Officer** ロールを選択してクリックします **）も表示します。**

<figure><img src="https://114237723-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FptcaAY0strUu3qIgkTdc%2Fimage.png?alt=media&#x26;token=6bf4adc2-da77-4ece-ba68-09c61fc6905e" alt=""><figcaption></figcaption></figure>

5. 次に、検索して AAD 管理者アカウントを **メンバー** セクションに追加し、ロールを割り当て続行します

ロール割り当てを追加すると、Azure AD アカウントは CSR を作成し証明書をアップロードすることが許可されます。
{% endtab %}

{% tab title="Vault アクセスポリシー" %}

1. Azure ポータルでご自身の Azure Key Vault に移動します
2. をクリックします **アクセス ポリシー** 左側のナビゲーション ペインにあります。
3. をクリックします **作成** を選択し、 **証明書管理** テンプレートを選んで、次へ

<figure><img src="https://114237723-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FD2mWeiZ7YnQuRN0rdypW%2F2023-06-14%2016_20_43-IntermediateCert.png?alt=media&#x26;token=da6b385e-8902-4b53-8a9f-25f3573d6532" alt=""><figcaption></figcaption></figure>

<figure><img src="https://114237723-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2F37QHfqcQRHNboM4yQkTb%2F2023-06-14%2016_23_37-IntermediateCert.png?alt=media&#x26;token=3cc22a95-8f13-4487-b270-083efa2779bd" alt=""><figcaption></figcaption></figure>

4. 次に、検索して AAD 管理者アカウントを **プリンシパル** セクションで次へ、次へ、作成の順に進みます

<figure><img src="https://114237723-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FIj3S2D7wkNquLnBJSUQe%2F2023-06-14%2017_06_33-.png?alt=media&#x26;token=195c03cb-a120-434b-8aa1-c44d4b2d26f6" alt=""><figcaption></figcaption></figure>

アクセス許可を追加すると、Azure AD アカウントは CSR を作成し証明書をアップロードすることが許可されます。
{% endtab %}
{% endtabs %}

## 管理システムから Key Vault のネットワークを開く

もしあなたが [プライベートエンドポイント](https://docs.scepman.com/ja/azure-gou-cheng/private-endpoints) Key Vault に対しては、クライアントがネットワークレベルで Key Vault にアクセスできるよう例外を追加する必要があります。プライベート エンドポイントを使用していない場合は、この部分はスキップできます。

* Azure ポータルで Azure Key Vault に移動します。
* 設定の下にあるネットワーキング ブレードに移動します。
* 現在「パブリックアクセスを無効にする」が選択されている場合は、「特定の仮想ネットワークおよび IP アドレスからのパブリックアクセスを許可」に切り替えます。
* 後で SCEPman PowerShell モジュールを実行したいクライアントの IP アドレスを追加します [。](#creating-intermediate-ca-certificate-with-the-scepman-powershell-module)Azure Cloud Shell を使用している場合や [それが VNET に接続されている場合は](https://learn.microsoft.com/en-us/azure/cloud-shell/vnet/overview)この VNET を追加できます。そうでない場合、最も簡単なのは Cloud Shell のパブリック IP アドレスを一時的に許可することです。強力な認証が Key Vault を保護しているためです。セッションのパブリック IP アドレスを見つけるために次のようなコマンドを使用できます `(Invoke-WebRequest -UseBasicParsing -uri "http://ifconfig.me/ip").Content` 。

## Azure App Service 設定の更新

次のステップは、次に作成する中間 CA のサブジェクト名に一致するように Azure App Service の構成を更新することです。

1. Azure App Service に移動します
2. をクリックします **環境変数** 左側のナビゲーション ペインで
3. において、 **アプリケーション設定、** 次の設定を編集する必要があります：
   1. `AppConfig:KeyVaultConfig:RootCertificateConfig:CertificateName`\
      中間 CA の希望する共通名 (CN) にこれを変更してください。
   2. `AppConfig:KeyVaultConfig:RootCertificateConfig:Subject`\
      上で使用した共通名に一致するように、サブジェクト名の CN 値のみを変更してください。
4. をクリックします **適用して確認します。**
5. Azure を再起動 **アプリサービス** 変更を適用するために再起動し、その後 SCEPman の URL に移動します。

{% hint style="warning" %}
CertificateName 変数は Azure Key Vault に作成される証明書オブジェクトに直接対応することに注意してください。したがって、英数字とダッシュのみを含む証明書名のみ使用できます&#x20;
{% endhint %}

<figure><img src="https://114237723-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FvO2YgKtltBesm2Eme7ix%2Fimage.png?alt=media&#x26;token=9ec3f21e-b6eb-47c5-8e10-3e2cbe519669" alt=""><figcaption></figcaption></figure>

## SCEPman PowerShell モジュールで中間 CA 証明書を作成する

{% hint style="warning" %}
このモジュールを正しく機能させるには、次を備えたワークステーションが必要です [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) （別名 `az`) がインストールされています。Azure CLI は [Azure Cloud Shell](https://docs.microsoft.com/en-us/azure/cloud-shell/overview)にプリインストールされており、このモジュールを実行する推奨環境です。
{% endhint %}

SCEPman PowerShell モジュール バージョン 1.9 以降を使用して、中間 CA 証明書の CSR を作成できます。次のコマンドで PowerShell Gallery から最新バージョンのモジュールをインストールできます：

```powershell
Install-Module -Name SCEPman -Scope CurrentUser -Force
```

次に、証明書に表示される組織名をモジュールに指定できます：

```powershell
Reset-IntermediateCaPolicy -Organization "My Organization"
```

中間 CA のサブジェクトを上記で使用したものと一致するように構成します（オプションで CSR の内容を制御するために追加設定を変更できます）： `AppConfig:KeyVaultConfig:RootCertificateConfig:Subject` $policy = Get-IntermediateCaPolicy

{% code lineNumbers="true" %}

```
$policy.policy.x509_props.subject = "CN=YOUR_CN_FROM_ABOVE,OU=YOUR_TENANT_ID,O=YOUR_ORGANIZATION"
# $policy のいくつかの追加設定を変更します
Set-IntermediateCaPolicy -Policy $policy
最後に、次のコマンド（または環境に応じた類似のコマンド）で CSR を作成できます：
```

{% endcode %}

New-IntermediateCA -SCEPmanAppServiceName "app-scepman-example" -SearchAllSubscriptions 6>&1

```powershell
このコマンドは、ルート CA に署名を依頼するために提出する CSR を出力します。
```

中間 CA 証明書の発行

## CSR をルート CA に提出して発行された中間 CA 証明書を取得します。証明書をディスクに保存してください（.cer）。次の手順で、秘密鍵と一緒に Azure Key Vault にアップロードしてマージできます。

ADCS エンタープライズ ルート CA の特別な手順

### Active Directory 統合型のルート CA として Active Directory Certificate Services を使用し、証明書テンプレートを選択する必要がある場合、そのテンプレートには次のキー使用法を含める必要があります："CRLSign"、"DigitalSignature"、"KeyEncipherment"、および "KeyCertSign"。デフォルトのテンプレート "Subordinate Certificate Authority" では KeyEncipherment が欠落しており、さらに新しいテンプレートでは選択できません。この問題に直面した場合の解決策は下記をご参照ください。

これはスタンドアローンのルート CA（いわゆるオフライン ルート CA）には適用されません。これらは CSR から正しくキー使用法を取得します。 **概要**SubCA テンプレートを複製するか必要に応じて使用できます。その後、CSR に基づいてテンプレートで証明書を発行します。この証明書は

#### 誤ったキー使用法

(0x86) を持ちます。その後、適切に変更したキー使用法拡張を使って証明書に再署名します（使用するコマンド： *certutil -sign* 手順 `SubCA 証明書を要求して発行します。`.

#### 新しい SubCA 証明書をルート CA 上のファイル（例: c:\temp\SubCA.cer）にエクスポートします。形式として

1. Base-64 エンコードされた X.509
2. 形式を選択します。 **ルート CA 上に次の内容で「extfile.txt」というファイルを作成します（例: c:\temp\extfile.txt）。** コマンドラインを起動して次を実行します：
3. certutil -sign "c:\temp\SubCA.cer" "c:\temp\SubCAwithKeyEncipher.cer" @c:\temp\extfile.txt
4. 証明書 SubCAwithKeyEncipher.cer は要求されたキー使用法 (0xA6) を含むようになります。サムプリント（署名）は変わりますが、シリアル番号は変わりません。 `ADCS の発行済み証明書の一覧には古い証明書が含まれます。シリアル番号が変わらないため、新しい証明書は古いハンドルで管理できます。例えば古い証明書を失効させると新しい証明書も失効扱いになります。これを好まない場合は、次のコマンドで古い証明書のエントリを削除してから新しい証明書をインポートできます`
5. certutil -deleterow
6. その後、新しい証明書をインポートします（コマンド： `certutil -importcert` extfile.txt `[Extensions]`.

#### 2.5.29.15=AwIBpg==

```
Critical=2.5.29.15
中間 CA 証明書をアップロード
Azure Key Vault で該当の証明書をクリックし、
```

## 証明書操作

1. を押します。 **オプションが表示されます：**
2. CSR のダウンロード **署名済み要求のマージ** および **そして中間 CA 証明書をアップロードします。署名済み要求をアップロードすると、Azure Key Vault の**

![](https://114237723-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-9b845d790796a34cb0e9296434373a502ddfee92%2Fscreenshot-2020-10-19-at-16.01.18.png?alt=media)

1. をクリックします **そして中間 CA 証明書をアップロードします。署名済み要求をアップロードすると、Azure Key Vault の** 完了 **領域で有効な証明書を見ることができます。**

{% hint style="warning" %}
中間 CA 証明書は PEM 形式（Base64 エンコード）である必要があります。バイナリ DER 形式を使用すると、詳細に「Property x5c has invalid value X5C must have at least one valid item」というエラーメッセージが表示されます。
{% endhint %}

## CA 適合性の確認

SCEPman のステータス ページで新しい構成を確認し、エンドポイント マネージャー経由で展開するための新しい中間 CA 証明書をダウンロードできます。

SCEPman ホームページを訪れて CA 証明書がすべての要件を満たしているか確認してください。ホームページの「CA Suitability」の横に何と表示されているかを確認します。例えば次のように表示されている場合は、 *CA 証明書にキー使用法「Key Encipherment」が欠落しています*、その場合は手順 [CSR をルート CA に提出して発行された中間 CA 証明書を取得します。証明書をディスクに保存してください（.cer）。次の手順で、秘密鍵と一緒に Azure Key Vault にアップロードしてマージできます。](#issue-the-intermediate-ca-certificate) に戻り、証明書の発行を修正する必要があります。

## 中間 CA と Intune の SCEP プロファイル

Android プラットフォームでは、Intune の SCEP 構成プロファイルは中間 CA ではなくルート CA を参照する必要があります。そうしないと構成プロファイルは失敗します。Windows ではその逆で、Intune の SCEP 構成プロファイルはルート CA ではなく中間 CA を参照する必要があります。iOS と macOS については、どちらがより良いかに関して決定的な情報はありません。
