HGS の証明書を取得する
HGS を展開するときに、シールドされた VM の起動に必要な機密情報を保護するために使用される署名証明書と暗号化証明書の提供を求められます。 これらの証明書は HGS を離れることはなく、それらが実行されているホストが正常であることが証明された場合にのみ、シールドされた VM キーの暗号化を解除するために使用されます。 テナント (VM 所有者) は証明書の公開半分を使用して、シールドされた VM を実行するデータセンターを承認します。 このセクションでは、HGS の互換性のある署名証明書と暗号化証明書を取得するために必要な手順について説明します。
証明機関に証明書を要求する
必須ではありませんが、信頼できる証明機関から証明書を取得することを強くお勧めします。 取得することで、VM の所有者は、シールドされた VM を実行する正しい HGS サーバー (つまり、サービス プロバイダーまたはデータセンター) を承認していることを確認できます。 エンタープライズ シナリオでは、独自のエンタープライズ CA を使用してこれらの証明書を発行することができます。 ホスティング会社とサービス プロバイダーは、代わりによく知られているパブリック CA の使用を検討する必要があります。
署名証明書と暗号化証明書は、どちらも次の証明書プロパティを使用して発行する必要があります ("推奨" とマークされていない場合)。
証明書テンプレート プロパティ | 必須の値 |
---|---|
暗号化プロバイダー | 任意のキー格納プロバイダー (KSP)。 従来の暗号化サービス プロバイダー (CSP) はサポートされていません。 |
キー アルゴリズム | RSA |
最小キー サイズ | 2048 ビット |
署名アルゴリズム | 推奨: SHA256 |
キー使用法 | デジタル署名およびデータの 暗号化 |
拡張キー使用法 | サーバー認証 |
キー更新ポリシー | 同じキーで更新します。 異なるキーを使用して HGS 証明書を更新すると、シールドされた VM が起動しなくなります。 |
サブジェクト名 | 推奨: 会社の名前または Web アドレス。 この情報は、シールド データ ファイル ウィザードで VM の所有者に表示されます。 |
これらの要件は、ハードウェアまたはソフトウェアによってサポートされる証明書を使用するかどうかに関係なく適用されます。 セキュリティ上の理由から、ハードウェア セキュリティ モジュール (HSM) で HGS キーを作成して、秘密キーがシステムからコピーされないようにすることをお勧めします。 HSM ベンダーのガイダンスに従って上記の属性を持つ証明書を要求し、すべての HGS ノードに HSM KSP をインストールして承認します。
すべての HGS ノードは、同じ署名証明書と暗号化証明書にアクセスする必要があります。 ソフトウェアでサポートされている証明書を使用している場合は、パスワードを使用して証明書を PFX ファイルにエクスポートし、HGS で証明書を管理できるようにすることができます。 また、各 HGS ノードのローカルマシンの証明書ストアに証明書をインストールし、HGS にサムプリントを指定することもできます。 両方のオプションについては、「HGS クラスターの初期化 」のトピックを参照してください。
テスト シナリオ用の自己署名証明書を作成する
HGS ラボ環境を作成していて、証明機関を持っていないまたは使用したくない場合は、自己署名証明書を作成できます。 シールド データ ファイル ウィザードで証明書情報をインポートすると警告が表示されますが、すべての機能は同じままです。
自己署名証明書を作成して PFX ファイルにエクスポートするには、PowerShell で次のコマンドを実行します。
$certificatePassword = Read-Host -AsSecureString -Prompt 'Enter a password for the PFX file'
$signCert = New-SelfSignedCertificate -Subject 'CN=HGS Signing Certificate' -KeyUsage DataEncipherment, DigitalSignature
Export-PfxCertificate -FilePath '.\signCert.pfx' -Password $certificatePassword -Cert $signCert
# Remove the certificate from "Personal" container
Remove-Item $signCert.PSPath
# Remove the certificate from "Intermediate certification authorities" container
Remove-Item -Path "Cert:\LocalMachine\CA\$($signCert.Thumbprint)"
$encCert = New-SelfSignedCertificate -Subject 'CN=HGS Encryption Certificate' -KeyUsage DataEncipherment, DigitalSignature
Export-PfxCertificate -FilePath '.\encCert.pfx' -Password $certificatePassword -Cert $encCert
# Remove the certificate from "Personal" container
Remove-Item $encCert.PSPath
# Remove the certificate from "Intermediate certification authorities" container
Remove-Item -Path "Cert:\LocalMachine\CA\$($encCert.Thumbprint)"
SSL 証明書を要求する
Hyper-V ホストと HGS の間で送信されるすべてのキーと機密情報はメッセージ レベルで暗号化されます。つまり、この情報は、HGS または Hyper-V のいずれかで認識されているキーで暗号化され、だれかがネットワーク トラフィックをスニッフィングして VM へのキーを盗むのを防ぎます。 ただし、コンプライアンス要件がある場合、または Hyper-V と HGS 間のすべての通信を暗号化するだけの場合は、トランスポート レベルですべてのデータを暗号化する SSL 証明書を使用して HGS を構成できます。
Hyper-V ホストと HGS ノードはどちらも、指定した SSL 証明書を信頼する必要があるため、エンタープライズ証明機関に SSL 証明書を要求することをお勧めします。 証明書を要求するときは、必ず次のように指定してください。
SSL 証明書プロパティ | 必須の値 |
---|---|
サブジェクト名 | HGS クライアント (つまり、保護されたホスト) が HGS サーバーへのアクセスに使用するアドレス。 これは通常、分散ネットワーク名または仮想コンピューター オブジェクト (VCO) と呼ばれる HGS クラスターの DNS アドレスです。 これは、Initialize-HgsServer に指定した HGS サービス名と HGS ドメイン名を連結したものになります。 |
サブジェクト代替名 | 別の DNS 名を使用して HGS クラスターに接続する場合 (たとえば、ロード バランサーの背後にある場合、または複雑なトポロジ内のノードのサブセットに対して異なるアドレスを使用している場合)、証明書要求の SAN フィールドにこれらの DNS 名を必ず含めてください。 SAN 拡張機能が設定されている場合、サブジェクト名は無視されるため、SAN には、サブジェクト名に通常入力する値を含むすべての値を含める必要があることに注意してください。 |
HGS サーバーを初期化するときにこの証明書を指定するためのオプションについては、「最初の HGS ノードの構成」で説明しています。 また、 Set-HgsServer コマンドレットを使用して、後で SSL 証明書を追加または変更することもできます。