証明書とキーに関するテクニカルノート

Azure Key Vault

Multicloud Defense は、パブリック クラウド プロバイダーが提供する多くの秘密管理システムと統合して、TLS 復号で使用される証明書に対応する秘密キーを保存します。このセクションでは、証明書の Azure Key Vault に保存されている秘密キーを取得するために必要な手順について説明します。Multicloud Defense は、Azure Key Vault シークレットを使用した秘密キーの取得をサポートしています。

Azure Key Vault とユーザー割り当てマネージド ID の作成

Multicloud Defense は、ユーザー割り当てマネージド ID を使用して Azure Key Vault のシークレットにアクセスします。次の手順では、Key Vault を作成する方法と、シークレットにアクセスするために必要な権限をマネージド ID に付与する方法を示します。

手順


ステップ 1

新しいユーザー割り当てマネージド ID を作成します。

ステップ 2

新しい Key Vault を作成します(例 mcd-key-Vault)。

ステップ 3

新しく作成した Key Vault で、[アクセスポリシー(Access Policies)] に移動します。

ステップ 4

[Add Access Policy] を選択します。

ステップ 5

シークレット権限:Get を割り当てます。

ステップ 6

[プリンシパル(Principal)] を選択します。

ステップ 7

[マネージドID(Managed Identity)] を選択します。

ステップ 8

Key Vault の設定に留まったまま、[アクセス制御(IAM)(Access Control (IAM))] > [選択の追加(Select Add)] > [ロールの割り当て(Role Assignment)]に移動します。

ステップ 9

[Reader Role] を選択します。

ステップ 10

[Select] フィールドでマネージド ID を検索し、選択します。

ステップ 11

[保存(Save)] をクリックします。


Azure Key Vault シークレットへの秘密キーの保存

作成した Azure Key Vault のシークレットフォルダに、シークレットの秘密キーをインポートします。秘密キーは複数行の文字列であるため、Azure Cloud Shell を介してインポートできます。

Azure Cloud Shell を起動し、次のコマンドを実行します。


az keyvault secret set --file <privatekey file> --encoding ascii --vault-name <key vault name> --name <secret name>

キーファイルは、Azure Cloud Shell のテキストエディタ(vi)を使用して新しいファイルを作成し、秘密キーの内容を貼り付けて保存するだけで作成されます。

ユーザー割り当てマネージド ID を使用したゲートウェイの設定

始める前に

Azureに展開された Multicloud Defense GatewayAzure Key Vault およびユーザー管理対象 ID で指定されているユーザー管理対象アイデンティティで構成されていることを確認する必要があります。

手順


ステップ 1

作成したユーザー割り当て管理対象 ID のリソース ID をコピーします。

ステップ 2

[マネージドID(Managed Identities)] に移動します。

ステップ 3

Multicloud Defense Gateway 用に作成された [マネージドID(Managed Identities)] をクリックします。

ステップ 4

[プロパティ(Properties)] を選択します。

ステップ 5

[Resource ID] フィールドの右側にあるアイコンを選択して、ID をコピーします。

ステップ 6

このリソース ID を、Azure ゲートウェイの Multicloud Defense Gateway 設定の [User Assigned Identity ID] フィールドに貼り付けます。


Multicloud Defense を設定して秘密キーを取得

開始する前に、Azure に展開された Multicloud Defense Gateway が、Azure Key Vaultおよびユーザー管理対象アイデンティティで指定されているユーザー管理対象アイデンティティで構成されていることを確認します。

Azure Key Vault のシークレットの秘密キーに関連付けられているフィールドに、証明書の本文を貼り付けます。

Multicloud Defense 証明書を作成すると、Multicloud Defense Controller でサービスを定義するときに復号プロファイルと一緒に使用できます。

自己署名ルート CA の生成

自己署名ルート認証局(CA)を生成します。


openssl genrsa -out myca.key 2048
# password protect key: openssl genrsa -out myca.key -des3 2048
openssl req -x509 -new -key myca.key -sha384 -days 1825 -out myca.crt \
  -subj "/C=US/ST=CA/L=Santa Clara/O=MyOrg/OU=SecurityOU/CN=rootca.myorg.com/emailAddress=rootca@myorg.com"

このルートCAは、信頼できるルート CA としてユーザー(クライアント)マシンにインストールする必要があります。


(注)  


macOS を使用して自己署名証明書を生成しても、転送およびリバースプロキシシナリオに使用できる適切な証明書は生成されません。証明書では [Is CA] オプションが [True] に設定されている必要がありますが、macOS を使用して生成された証明書ではこのオプションがありません。自己署名証明書は、Multicloud Defense の UI([証明書(Certificates)] > [作成(Create)] > [生成(Generate)])から生成するか、または Linux を使用して生成することをお勧めします。


自己署名ルート CA によって署名された証明書の生成

上記のルート認証局(CA)によって署名された証明書を生成します。この証明書は、アプリケーションで使用できます。


openssl genrsa -out app1.key 2048
# password protect key: openssl genrsa -out -des3 app1.key 2048 
openssl req -new -key app1.key -out app1.csr \
  -subj "/C=US/ST=CA/L=Santa Clara/O=MyOrg/OU=AppOU/CN=app1.myorg.com/emailAddress=app1@myorg.com"
openssl x509 -req -in app1.csr -CA myca.crt -CAkey myca.key -out app1.crt -sha384\
  -days 365 -CAcreateserial -extensions SAN \
  -extfile <(printf " [SAN]\nbasicConstraints=CA:false\nsubjectAltName=DNS:app1.myorg.com,DNS:app1- 1.myorg.com,IP:192.168.10.21,IP:192.168.10.22")

ルート CA によって署名された中間 CA の生成

ルート認証局(CA)をアプリケーション証明書への署名に使用しない場合は、ルート CA によって署名された中間 CA を作成し、中間 CA を使用してアプリケーション証明書に署名します。アプリケーション証明書に中間証明書を追加します。この時点で、アプリケーション証明書には 2 つの証明書(チェーンとして)があります。


openssl genrsa -out interca.key 2048
# password protect key: openssl genrsa -out -des3 interca.key 2048
openssl req -new -key interca.key -out interca.csr \
  -subj "/C=US/ST=CA/L=Santa Clara/O=MyOrg/OU=InterSecurityOU/CN=interca1.myorg.com/emailAddress=interca1@myorg.com"
openssl x509 -req -in interca.csr -CA myca.crt -CAkey myca.key -out interca.crt - sha384 \
  -days 365 -CAcreateserial -extensions SAN \
  -extfile <(printf "[SAN]\nbasicConstraints=CA:true")

中間 CA を使用して署名されたアプリケーション証明書


openssl genrsa -out app1.key 2048
# password protect key: openssl genrsa -out -des3 app1.key 2048 
openssl req -new -key app1.key -out app1.csr \
  -subj "/C=US/ST=CA/L=Santa Clara/O=MyOrg/OU=AppOU/CN=app1.myorg.com/emailAddress=app1@myorg.com" 
openssl x509 -req -in app1.csr -CA interca.crt -CAkey interca.key -out app1.crt - sha384 \
  -days 365 -CAcreateserial -extensions SAN \
  -extfile <(printf " [SAN]\nbasicConstraints=CA:false\nsubjectAltName=DNS:app1.myorg.com,DNS:app1- 1.myorg.com,IP:192.168.10.21,IP:192.168.10.22")

app1.crt および interca.crt ファイルを追加して結合証明書を作成し、アプリケーションで使用します。ルート CAは、信頼できるルート CA としてクライアントマシンにインストールする必要があります。

ホストへの信頼できる CA としてのルート CA のインストール

OS

コマンド

Ubuntu

crt ファイルを /usr/local/share/ca-certificates にコピーします。コマンド sudo update-ca-certificates を実行します。

CentOS

crt ファイルを /etc/pki/ca-trust/source/anchors にコピーします。コマンド sudo update-ca-trust extract を実行します。

Windows

ファイルをダブルクリックして信頼されたルートに証明書を追加するか、コマンド certutil -addstore "Root" <crt-file> を実行します。