Azure Stack Hub PKI 証明書の検証
この記事で説明されている Azure Stack Hub 適合性チェッカー ツールは、PowerShell ギャラリーから入手可能です。 デプロイ前にこのツールを使用して、生成されたパブリック キー インフラストラクチャ (PKI) 証明書が適切であるかどうかを検証します。 十分な時間をかけて証明書を検証し、必要であれば証明書をテストして再発行します。
適合性チェッカー ツールでは、次の証明書の検証を実行します。
-
PFX の解析
有効な PFX ファイル、正しいパスワード、およびパブリック情報がパスワードによって保護されているかどうかを確認します。 -
有効期限
7 日間の最小限の有効期間があるかどうかを確認します。 -
署名アルゴリズム
署名アルゴリズムが SHA1 ではないことを確認します。 -
秘密キー
秘密キーが存在し、ローカル コンピューター属性でエクスポートされることを確認します。 -
証明書チェーン
自己署名証明書の場合も含めて証明書チェーンが損なわれていないことを確認します。 -
DNS 名
SAN に各エンドポイントの関連する DNS 名が含まれていること、またはサポートするワイルドカードが存在するかどうかを確認します。 -
キー使用法
キー使用法にデジタル署名とキーの暗号化が含まれていること、および拡張キー使用法にサーバー認証とクライアント認証が含まれていることを確認します。 -
キーサイズ
キー サイズが 2048 以上であることを確認します。 -
チェーンの順序
他の証明書の順序を確認して、順序が正しいことを検証します。 -
他の証明書
関連するリーフ証明書とそのチェーン以外の他の証明書が PFX にパッケージ化されていないことを確認します。
重要
PKI 証明書が PFX ファイルです。パスワードは機密情報として扱われる必要があります。
前提条件
Azure Stack Hub のデプロイに対して PKI 証明書を検証する前に、システムは次の前提条件を満たしている必要があります。
- Microsoft Azure Stack Hub 適合性チェッカー。
- 準備手順に従ってエクスポートされた SSL 証明書。
- DeploymentData.json。
- Windows 10 または Windows Server 2016。
コア サービス証明書の検証を実行する
次の手順を使って、デプロイとシークレット ローテーションに使用する Azure Stack Hub PKI 証明書を検証します。
次のコマンドレットを実行して、PowerShell プロンプト (5.1 以降) から AzsReadinessChecker をインストールします。
Install-Module Microsoft.AzureStack.ReadinessChecker -Force -AllowPrerelease
証明書ディレクトリ構造を作成します。 次の例では、
<C:\Certificates\Deployment>
を、選択した新規ディレクトリ パスに変更できます。New-Item C:\Certificates\Deployment -ItemType Directory $directories = 'ACSBlob', 'ACSQueue', 'ACSTable', 'Admin Extension Host', 'Admin Portal', 'ARM Admin', 'ARM Public', 'KeyVault', 'KeyVaultInternal', 'Public Extension Host', 'Public Portal' $destination = 'C:\Certificates\Deployment' $directories | % { New-Item -Path (Join-Path $destination $PSITEM) -ItemType Directory -Force}
Note
AD FS を ID システムとして使用する場合は、AD FS と Graph が必要です。 次に例を示します。
$directories = 'ACSBlob', 'ACSQueue', 'ACSTable', 'ADFS', 'Admin Extension Host', 'Admin Portal', 'ARM Admin', 'ARM Public', 'Graph', 'KeyVault', 'KeyVaultInternal', 'Public Extension Host', 'Public Portal'
- 前の手順で作成された適切なディレクトリに証明書を配置します。 次に例を示します。
C:\Certificates\Deployment\ACSBlob\CustomerCertificate.pfx
C:\Certificates\Deployment\Admin Portal\CustomerCertificate.pfx
C:\Certificates\Deployment\ARM Admin\CustomerCertificate.pfx
- 前の手順で作成された適切なディレクトリに証明書を配置します。 次に例を示します。
PowerShell ウィンドウで、Azure Stack Hub 環境に合わせて
RegionName
、FQDN
、およびIdentitySystem
の値を変更し、次のコマンドレットを実行します。$pfxPassword = Read-Host -Prompt "Enter PFX Password" -AsSecureString Invoke-AzsHubDeploymentCertificateValidation -CertificatePath C:\Certificates\Deployment -pfxPassword $pfxPassword -RegionName east -FQDN azurestack.contoso.com -IdentitySystem AAD
出力を確認し、すべての証明書がすべてのテストに合格していることを確認します。 次に例を示します。
Invoke-AzsHubDeploymentCertificateValidation v1.2005.1286.272 started. Testing: KeyVaultInternal\KeyVaultInternal.pfx Thumbprint: E86699****************************4617D6 PFX Encryption: OK Expiry Date: OK Signature Algorithm: OK DNS Names: OK Key Usage: OK Key Length: OK Parse PFX: OK Private Key: OK Cert Chain: OK Chain Order: OK Other Certificates: OK Testing: ARM Public\ARMPublic.pfx Thumbprint: 8DC4D9****************************69DBAA PFX Encryption: OK Expiry Date: OK Signature Algorithm: OK DNS Names: OK Key Usage: OK Key Length: OK Parse PFX: OK Private Key: OK Cert Chain: OK Chain Order: OK Other Certificates: OK Testing: Admin Portal\AdminPortal.pfx Thumbprint: 6F9055****************************4AC0EA PFX Encryption: OK Expiry Date: OK Signature Algorithm: OK DNS Names: OK Key Usage: OK Key Length: OK Parse PFX: OK Private Key: OK Cert Chain: OK Chain Order: OK Other Certificates: OK Testing: Public Portal\PublicPortal.pfx Log location (contains PII): C:\Users\[*redacted*]\AppData\Local\Temp\AzsReadinessChecker\AzsReadinessChecker.log Report location (contains PII): C:\Users\[*redacted*]\AppData\Local\Temp\AzsReadinessChecker\AzsReadinessCheckerReport.json Invoke-AzsHubDeploymentCertificateValidation Completed
他の Azure Stack Hub サービスの証明書を検証するには、
-CertificatePath
の値を変更します。 次に例を示します。# App Services Invoke-AzsHubAppServicesCertificateValidation -CertificatePath C:\Certificates\AppServices -pfxPassword $pfxPassword -RegionName east -FQDN azurestack.contoso.com # DBAdapter Invoke-AzsHubDBAdapterCertificateValidation -CertificatePath C:\Certificates\DBAdapter -pfxPassword $pfxPassword -RegionName east -FQDN azurestack.contoso.com # EventHubs Invoke-AzsHubEventHubsCertificateValidation -CertificatePath C:\Certificates\EventHubs -pfxPassword $pfxPassword -RegionName east -FQDN azurestack.contoso.com
各フォルダーには、証明書の種類に対応する単一の PFX ファイルが含まれている必要があります。 ある証明書の種類で複数の証明書が必要な場合は、個々の証明書ごとに入れ子になったフォルダーが必要で、名前で区別されます。 次のコードは、すべての証明書の種類のフォルダー/証明書構造の例と、 の適切な値を
-CertificatePath
示しています。C:\>tree c:\SecretStore /A /F Folder PATH listing Volume serial number is 85AE-DF2E C:\SECRETSTORE \---AzureStack +---CertificateRequests \---Certificates +---AppServices # Invoke-AzsCertificateValidation ` | +---API # -CertificatePath C:\Certificates\AppServices | | api.pfx | | | +---DefaultDomain | | wappsvc.pfx | | | +---Identity | | sso.pfx | | | \---Publishing | ftp.pfx | +---DBAdapter # Invoke-AzsCertificateValidation ` | dbadapter.pfx # -CertificatePath C:\Certificates\DBAdapter | | +---Deployment # Invoke-AzsCertificateValidation ` | +---ACSBlob # -CertificatePath C:\Certificates\Deployment | | acsblob.pfx | | | +---ACSQueue | | acsqueue.pfx ./. ./. ./. ./. ./. ./. ./. <- Deployment certificate tree trimmed. | \---Public Portal | portal.pfx | \---EventHubs # Invoke-AzsCertificateValidation ` eventhubs.pfx # -CertificatePath C:\Certificates\EventHubs
既知の問題
現象:テストがスキップされる
原因:AzsReadinessChecker は、依存関係が満たされていない場合、特定のテストをスキップします。
証明書チェーンに問題がある場合、他の証明書はスキップされます。
Testing: ACSBlob\singlewildcard.pfx Read PFX: OK Signature Algorithm: OK Private Key: OK Cert Chain: OK DNS Names: Fail Key Usage: OK Key Size: OK Chain Order: OK Other Certificates: Skipped Details: The certificate records '*.east.azurestack.contoso.com' do not contain a record that is valid for '*.blob.east.azurestack.contoso.com'. Please refer to the documentation for how to create the required certificate file. The other certificates check was skipped because cert chain and/or DNS names failed. Follow the guidance to remediate those issues and recheck. Log location (contains PII): C:\Users\username\AppData\Local\Temp\AzsReadinessChecker\AzsReadinessChecker.log Report location (contains PII): C:\Users\username\AppData\Local\Temp\AzsReadinessChecker\AzsReadinessCheckerReport.json Invoke-AzsCertificateValidation Completed
解決方法:ツール ガイダンスの詳細セクションにある各証明書テスト設定に従います。
現象: X509 拡張機能に書き込まれた HTTP CDP があるにもかかわらず、HTTP CRL チェックが失敗します。
原因: 現在、AzsReadinessChecker では、一部の言語で HTTP CDP をチェックできません。
解決方法:OS 言語を EN-US に設定して検証を実行します。
証明書
ディレクトリ | Certificate |
---|---|
ACSBlob | wildcard_blob_<region>_<externalFQDN> |
ACSQueue | wildcard_queue_<region>_<externalFQDN> |
ACSTable | wildcard_table_<region>_<externalFQDN> |
管理者拡張機能ホスト | wildcard_adminhosting_<region>_<externalFQDN> |
管理ポータル | adminportal_<region>_<externalFQDN> |
ARM 管理 | adminmanagement_<region>_<externalFQDN> |
ARM パブリック | management_<region>_<externalFQDN> |
KeyVault | wildcard_vault_<region>_<externalFQDN> |
KeyVaultInternal | wildcard_adminvault_<region>_<externalFQDN> |
パブリック拡張機能ホスト | wildcard_hosting_<region>_<externalFQDN> |
パブリック ポータル | portal_<region>_<externalFQDN> |
次のステップ
証明書が AzsReadinessChecker によって検証されたら、Azure Stack Hub のデプロイまたはデプロイ後のシークレットのローテーションにそれらを使用できます。
- デプロイの場合は、「 Azure Stack Hub PKI の要件 - 必須の証明書」で指定されているデプロイ仮想マシン ホストに証明書をコピーできるように、証明書をデプロイ エンジニアに安全に転送します。
- シークレットのローテーションについては、「 Azure Stack Hub でシークレットをローテーションする」を参照してください。 付加価値リソース プロバイダーの証明書のローテーションについては、「外部シークレットをローテーションする」セクションを参照してください。