こんにちは。
今回は Azure Stack version 1901 のインストールに必要な証明書を作成するために必要な証明書要求を作成します。前回の投稿 (Azure Stack の証明書要件 ) で、Azure Stack を利用する際には、最低11個の証明書が必要と記載しました。その作成する証明書の具体的な要件も多くあります。
証明書の要件
Azure Stack で利用する証明書の要件です。公開鍵と秘密鍵を持つ pfx 形式の証明書を準備する必要がありますが、認証機関から発行される証明書は cer ファイルが一般的かと思います。
認証局から発行される cer ファイルを発行する際に必要な要件です。
- 証明書は、内部の証明機関または公的証明機関のどちらかから発行されている必要があります。 公的証明機関が使用されている場合は、Microsoft の信頼されたルート機関プログラムの一部として基本オペレーティング システム イメージに含まれている必要があります。 詳細な一覧については、 https://gallery.technet.microsoft.com/Trusted-Root-Certificate-123665ca をご覧ください。
- お使いの Azure Stack インフラストラクチャは、証明書において公開されている証明機関の証明書失効リスト (CRL) の場所にネットワーク アクセスできる必要があります。 この CRL は、http エンドポイントである必要があります
- 証明書を交換する場合、証明書は、デプロイ時に指定された証明書の署名に使用したのと同じ内部の証明機関、または上記の公的パブリック証明機関のいずれかから発行されたものである必要があります。
- 自己署名証明書は使用できません。
- デプロイおよびローテーションの場合は、証明書のサブジェクト名フィールドとサブジェクトの別名 (SAN) フィールドのすべての名前空間をカバーする 1 つの証明書を使用するか、または、各名前空間で利用する予定の Azure Stack サービスが必要とする個別の証明書を使用することができます。 注: どちらの方法でも、それらが必要とされる場所のエンドポイントに対してワイルドカードを使用する必要があります (例: KeyVault、KeyVaultInternal)。
- 証明書の署名アルゴリズムを SHA1 にすることはできません。
- 証明書 pfx ファイルの “Key Usage” フィールドには、”Digital Signature” と “KeyEncipherment” の値が含まれている必要があります。
- 証明書の pfx ファイルの “Enhanced Key Usage” フィールドには、”Server Authentication (1.3.6.1.5.5.7.3.1)” と “Client Authentication (1.3.6.1.5.5.7.3.2)” の値が含まれている必要があります。
- 証明書の “Issued to:” フィールドは “Issued by:” フィールドと同じにしないでください。
- サブジェクト名と、サブジェクトの別名の拡張子 (x509v3_config) のサブジェクトの別名が一致するようにします。 サブジェクトの別名フィールドでは、単一の SSL 証明書によって保護される追加のホスト名 (Web サイト、IP アドレス、共通名) を指定できます。
cer ファイルから pfx に変更する必要があります。下記は pfx ファイルに変換する際の要件です。
- Azure Stack のインストールには公開キーと秘密キーの両方が必要なため、証明書の形式は PFX である必要があります。 秘密キーにはローカル コンピューターのキー属性が設定されている必要があります。
- PFX 暗号化は、3DES (これは、Windows 10 クライアントまたは Windows Server 2016 証明書ストアからエクスポートする場合の既定です) である必要があります。
- 証明書の PFX 暗号化は、3 DES になっている必要があります。
- デプロイの時点で、すべての証明書 pfx ファイルのパスワードが同じである必要があります。
- 証明書 pfx に対するパスワードは、複雑なパスワードである必要があります。次のパスワードの複雑さの要件を満たしているパスワードを作成します。 8 文字の最小長。 パスワードに、大文字、小文字、0 – 9 の数字、特殊文字、および大文字でも小文字でもない英字のうち 3 種類以上が含まれている。 このパスワードを書き留めておいてください。 デプロイ パラメーターとして使用します。
証明書要求の作成
この色々と書いてある要件を満たす証明書を作成するための、証明書要求は簡単に Powershell で作成することが可能です。Powershell で作成するには、専用のモジュールが必要です。インターネット経由でダウンロードし、Windows 10 や Windows Server から実行することが可能です。
1、下記コマンドを実行して AzsReadinessChecker のインストール
Install-Module Microsoft.AzureStack.ReadinessChecker
2、サブジェクトの指定 (会社名など必要に応じて修正してください)
$subjectHash = [ordered]@{“OU”=”AzureStack“;”O”=”Microsoft“;”L”=”Redmond“;”ST”=”Washington“;”C”=”US“}
3、CSR を出力するフォルダの指定
$outputDirectory = “$ENV:USERPROFILE\Documents\AzureStackCSR”
フォルダが存在しない場合は、作成してください
mkdir $outputDirectory
4、利用するID の指定 (AAD or ADFS)
$IdentitySystem = “AAD”
$IdentitySystem = “ADFS”
5、リージョン名と 外部ドメイン名の指定
$regionName = ‘tokyo’
$externalFQDN = ‘azurestack.contoso.com’
ここで設定した値 ( <regionName>.<externalFQDN> ) が、Azure Stack のエンドポイントに設定されます。
ポータル: portal.east.azurestack.contoso.com
6、CSR を作成します。1枚の証明書ですべてのドメイン名を含める シングルCSR でも、それぞれのドメイン名に1枚の証明書を発行する CSR のどちらのパターンも作成可能です。ただし、運用環境では、シングル CSR は推奨されないようです。また、この CSR 作成で、PaaS 用のドメインを含める CSR を作成することも可能です。 CSR 作成コマンドに “-InclusePaaS” オプションを追加するだけです。
- 必要なドメイン毎に証明書を発行する場合の CSR 作成
New-AzsCertificateSigningRequest -RegionName $regionName -FQDN $externalFQDN -subject $subjectHash -OutputRequestPath $OutputDirectory -IdentitySystem $IdentitySystem
- 1枚の証明書で複数のドメインをカバーする CSR 作成
New-AzsCertificateSigningRequest -RegionName $regionName -FQDN $externalFQDN -subject $subjectHash -RequestType SingleCSR -OutputRequestPath $OutputDirectory -IdentitySystem $IdentitySystem
7、出力先に指定したフォルダに CSR が作成されたことを確認します。
これで CSR の作成は完了です。証明書を作成する認証局に CSR を提出し、証明書を発行してもらってください。メモ帳で開けば内容をコピペすることができます!
これで、Azure Stack の要件を満たす証明書を作成することができます。証明書の要件は色々書いてありますが、簡単に CSR を作成できるので問題ありません。CSR を簡単に作成できるので、プライベート CA や、エンタープライズCA だけでなく 外部認証局への依頼も簡単にできるかと思います!