VMware Cloud Foundation(VCF)5.2 で Aria Automation をデプロイする際に必要になる証明書を、Active Directory 証明書サービス(ADCS)で発行してみます。前提コンポーネントである Workspace ONE Access の証明書も発行しておきます。
今回は、さりげなく下記のページで登場している、CertGen-VVS.ps1 を利用してみます。(新しい方法もあるような気もしつつ・・・)
今回の内容です。
今回の環境
今回の証明書を発行する証明機関(CA)は、下記のように構築した ADCS サーバを利用します。
1. ADCS 証明書テンプレートの準備
CertGen-VVS.ps1 での証明書発行では、「VMware」という名前の ADCS 証明書テンプレートが利用されます。そこで、構築ずみの ADCS CA に、証明書テンプレートを作成しておきます。
VMware テンプレートは、ドキュメントの下記のあたりを参考に用意してみます。
1-1. 証明書テンプレート(VMware)の作成
この手順は、ADCS のサーバで実施します。
ファイル名を指定して実行や PowerShell のプロンプトから、「certtmpl.msc」を実行して、「証明書テンプレート コンソール」を開きます。
そして、「Web サーバー」テンプレートを右クリック →「テンプレートの複製」をクリックします。
「互換性」タブで、下記を入力します。
- 互換設定
- 証明機関: Windows Server 2008 R2
- 証明書の受信者: Windows 7 / Windows Server 2008 R2
「全般」タブで、下記を入力します。
- テンプレートの表示名: VMware
- テンプレート名: VMware
「拡張機能」タブを開いて、設定を編集します。
「アプリケーション ポリシー」を選択して「編集」をクリックし、デフォルトで設定されている「サーバー認証」を削除します。
結果として、「アプリケーション ポリシーの説明」が「なし」になっていることを確認します。
続けて「基本制限」を選択して、「編集」をクリックします。
「この機能拡張を有効にする」のチェックを ON にして、「OK」をクリックします。
「キー使用法」を選択して、「編集」をクリックします。
「署名は発行元の証明である (非否認)」のチェックを ON にして、「OK」をクリックします。
「キー使用法 の説明」に、「署名は発行元の証明です (非否認)」が追加されたことを確認して、「OK」をクリックします。
これで、「VMware」証明書テンプレートが作成されました。
1-2. 証明書テンプレートの有効化
ファイル名を指定して実行や PowerShell のプロンプトから、「certsrv.msc」を実行して、「証明機関」を開きます。
証明機関(ローカル)→ CA の名前(この環境では c-VCF-AD-01-CA)を開きます。そして、「証明書テンプレート」フォルダを右クリック →「新規作成」→「発行する証明書テンプレート」を開きます。
「証明書テンプレートの選択」画面で、「VMware」を選択して「OK」をクリックします。
これで、この CA で「VMware」テンプレートが有効になりました。
2. 前提ソフトウェアのインストール
CertGen-VVS.ps1 スクリプトを実行するには、OpenSSL と、Vicual C++ のランタイムが必要です。 ただ、どちらもやたら指定バージョンが古く、これらを AD/ADCS のマシンにインストールするのは微妙そうです。そこで、AD/ADCS のドメインに参加してある別の 作業用 Windows Server 2022 マシンにこれらをインストールして、CertGen-VVS.ps1 もそのマシンで実行します。
2-1. OpenSSL
OpenSSL は、新しめの 3.x バージョンだとスクリプトが対応していないので、1.x 系の最新のものをインストールします。OpenSSL 1.1.1 はすでにサポート期間が終了していますが、あえてインストールします。
今回は、下記のバイナリを利用します。
openssl-1.1.1w.zip ファイルは、C:\work フォルダに保存しておき、展開してインストールします。
PS> cd C:\work\ PS> Expand-Archive .\openssl-1.1.1w.zip
一時的に、実行ファイルのパスを PATH 環境変数に追加します。
PS> $Env:Path="C:\work\openssl-1.1.1w\openssl-1.1\x64\bin;$Env:Path" PS> openssl version OpenSSL 1.1.1w 11 Sep 2023
2-2. Visual C++ Redistributable Packages for Visual Studio 2013
Visual C++ のランタイムも、なぜか相当古いバージョンですが指定されているバージョンをインストールしておきます。
下記から、インストーラをダウンロードします。
- https://www.microsoft.com/en-GB/download/details.aspx?id=40784
- ダウンロードするファイル: vcredist_x64.exe
vcredist_x64.exe を実行すると下記の画面が起動できるので、ライセンス同意のチェックを ON にして、「Install」をクリックするとインストールできます。
3. 証明書生成スクリプト(CertGen-VVS.ps1)の実行
CertGen-VVS.ps1 スクリプトは Broadcom の KB ページからダウンロードして、コンフィグとなる CSV ファイルを読み込ませて実行することで、証明書を発行できます。
3-1. スクリプトの入手
CertGen-VVS.ps1 スクリプトは、下記の KB からダウンロードできます。
- Certificate Generation Utility for VMware Validated Solutions for VMware Cloud Foundation
https://knowledge.broadcom.com/external/article?legacyId=85527
上記の KB に添付されいている .zip ファイルをダウンロードしておきます。
- 0685G00001Gz46bQAB__certgen-vvs-release-1.2.002.zip
このファイを展開して、今回は下記フォルダとして配置しておきます。
- C:\work\certgen-vvs-release-1.2.002
このファイルを展開すると、下記のようなファイルが含まれています。
PS> cd C:\work\certgen-vvs-release-1.2.002\ PS> ls | select Name Name ---- CertGen-VVS.ps1 README.md VVS-Hosts-A.csv VVS-Hosts-B.csv
各ファイルの内容です。
- CertGen-VVS.ps1: 証明書を発行するスクリプト
- README.md: スクリプトの説明
- VVS-Hosts-A.csv と VVS-Hosts-B.csv: スクリプト実行時に読み込ませる、証明書の名前を記載する CSV ファイルのサンプル
CertGen-VVS.ps1 ファイルを右クリック →「プロパティ」を開き、アクセスがブロックされていたら解除します。「許可する」のチェックを ON にして「OK」をクリックします。
3-2. コンフィグ ファイル(CSV)の作成
下記のように、証明書に設定する名前を記載した CSV ファイルを用意します。編集には、テキスト エディタや Excel などを利用します。
CSV ファイル: VVS-Hosts_c.go-lab.jp.csv
- これから展開する予定の、Workspace ONE Access と Aria Automation のサーバの ノードと LB に設定する FQDN をすべて指定しておきます。
- Standalone Workspace One Access: 今回はクラスタ化せずにデプロイするつもりなので、1つだけ FQDN を登録します。
- Aria Automation: クラスタ構成でデプロイするつもりなので、3ノード + LB の FQDN(合計4つ)を登録します。
- 各行の最終フィールドの値は、出力されるファイル名に使用されます。今回は、vcf-m01-wsa と vcf-m01-auto を入力しています。
Name,CommonName,SAN01,SAN02,SAN03,SAN04,SAN05,SAN06,SAN07,SAN08,SAN09,SAN10,SAN11,SAN12,SAN13,SAN14,SAN15,FileName Standalone Workspace One Access,vcf-m01-wsa.c.go-lab.jp,,,,,,,,,,,,,,,,vcf-m01-wsa Aria Automation,vcf-m01-auto.c.go-lab.jp,vcf-m01-auto-01.c.go-lab.jp,vcf-m01-auto-02.c.go-lab.jp,vcf-m01-auto-03.c.go-lab.jp,,,,,,,,,,,,,vcf-m01-auto
3-3. 証明書の発行(CertGen-VVS.ps1 の実行)
CertGen-VVS.ps1 スクリプトは、ADCS のドメインに参加している Windows マシンに、AD アカウントでログインした状態で実行します。今回は、ドメイン管理者のアカウント(C:¥Administrator)で実行しています。
PowerShell を起動して、あらためて OpenSSL 1.x が実行できることを確認しておきます。
PS> $Env:Path="C:\work\openssl-1.1.1w\openssl-1.1\x64\bin;$Env:Path" PS> openssl version OpenSSL 1.1.1w 11 Sep 2023
スクリプトを実行すると、対話入力のメニューが表示されます。
PS> .\CertGen-VVS.ps1
「V」を入力して Enter キーを押すと、実行環境や ADCS への接続を確認できます。この画面は、Enter キーで抜けられます。
ここで、「Following CA Template Policy available:」に「VMware」テンプレートが表示されていることを確認しておきます。
************************************* CertGen VVS - Please choose an option ************************************* V. Validate Environment Before Running 1. Create & Submit CSRs, Download & Generate Certificate Files (For use with an online Microsoft Root CA) 2. Create & Submit CSRs, Download & Generate Certificate Files (For use with an online Microsoft Intermediate CA) 3. Create CSRs for manual certificate requests (For use with Offline or Non MS CA) 4. Process manually generated certificates into required formats (For use with the certs generated after step 3) H. Display Help Q. Quit (1-4, V, H or Q): V *****[INFO] Openssl 1.0 = checked. -CSR executable *****[INFO] Domain Name: c.go-lab.jp *****[WARN] Not found config parameter. Using dnsHostname\caName search. *****[INFO] CA HostName = vcf-ad-01.c.go-lab.jp *****[INFO] CA Name = c-VCF-AD-01-CA *****[INFO] Certificate Authority = checked. -MSCASigned executable *****[INFO] CA Config = vcf-ad-01.c.go-lab.jp\c-VCF-AD-01-CA *****[INFO] CA HostName = vcf-ad-01.c.go-lab.jp *****[INFO] CA Name = c-VCF-AD-01-CA c-VCF-AD-01-CA *****[INFO] Following CA Template Policy available: *****[INFO] 0: VMware *****[INFO] 1: DirectoryEmailReplication *****[INFO] 2: DomainControllerAuthentication *****[INFO] 3: KerberosAuthentication *****[INFO] 4: EFSRecovery *****[INFO] 5: EFS *****[INFO] 6: DomainController *****[INFO] 7: WebServer *****[INFO] 8: Machine *****[INFO] 9: User *****[INFO] 10: SubCA *****[INFO] 11: Administrator Press any key to return to the main menu...
証明書を発行するために、下記のように「1」を選択してパラメータを入力します。途中でファイル選択の画面が表示されるので、用意しておいた CSV ファイルを選択します。
(1-4, V, H or Q): 1 Ensure Your CSV has an entry in the CommonName column for certs you wish to generate. To ignore entries enter n/a Enter the Default Organisation Value [Rainpole Inc]: go-lab.jp Enter the Default OU Value [Rainpole]: Home Lab Enter the Default Location Value [SFO]: Home Enter the Default State Value [CA]: Tokyo Enter the Default Country Value [US]: JP Enter the Default key size [2048]: ※空欄のまま(デフォルト値)
処理開始の途中で、キーストアに設定するパスワードを入力します。そして、最後の表示で 2セットの証明書が発行されたことがわかります。
- vcf-m01-auto
- vcf-m01-wsa
================== Getting CA Config ============================= *****[WARN] Not found config parameter. Using dnsHostname\caName search. *****[INFO] CA HostName = vcf-ad-01.c.go-lab.jp *****[INFO] CA Name = c-VCF-AD-01-CA *****[INFO] Following CA Template Policy available: *****[INFO] 0: VMware *****[INFO] 1: DirectoryEmailReplication *****[INFO] 2: DomainControllerAuthentication *****[INFO] 3: KerberosAuthentication *****[INFO] 4: EFSRecovery *****[INFO] 5: EFS *****[INFO] 6: DomainController *****[INFO] 7: WebServer *****[INFO] 8: Machine *****[INFO] 9: User *****[INFO] 10: SubCA *****[INFO] 11: Administrator *****[INFO] Retrieving Microsoft Root CA Signing Certificate. *****[INFO] Retrieve Microsoft Certificate Root CA, Root64.cer, successful. *****[INFO] Enter keystore password for P12/PEM certificates. (Must be minimum 7 characters long.) Enter password: ******** Confirm password: ******** *****[INFO] P12 Password assigned ================== Starting vcf-m01-auto.txt ============================= *****[INFO] Creating 'vcf-m01-auto' config file *****[INFO] Creating 'vcf-m01-auto' private key and CSR files. *****[INFO] Creating new private-key, vcf-m01-auto.key, successful! *****[INFO] Creating new CSR file, vcf-m01-auto.csr, successful. *****[INFO] Requesting certificate, vcf-m01-auto.1.cer, successful. *****[INFO] Creating Additional Certificate Formats *****[INFO] Creating P12 file password. *****[INFO] Creating P12 without RootCA file password. *****[INFO] Creating PEM without private key. *****[INFO] Creating PEM , ROOT, and private key. *****[INFO] Creating Certificate Chain for Cloud Extensibility Appliance. **** [INFO] Creating .P7b *****[INFO] Creating .CRT . *****[INFO] Certificate Generation Complete ***** ================== Starting vcf-m01-wsa.txt ============================= *****[INFO] Creating 'vcf-m01-wsa' config file *****[INFO] Creating 'vcf-m01-wsa' private key and CSR files. *****[INFO] Creating new private-key, vcf-m01-wsa.key, successful! *****[INFO] Creating new CSR file, vcf-m01-wsa.csr, successful. *****[INFO] Requesting certificate, vcf-m01-wsa.1.cer, successful. *****[INFO] Creating Additional Certificate Formats *****[INFO] Creating P12 file password. *****[INFO] Creating P12 without RootCA file password. *****[INFO] Creating PEM without private key. *****[INFO] Creating PEM , ROOT, and private key. *****[INFO] Creating Certificate Chain for Cloud Extensibility Appliance. **** [INFO] Creating .P7b *****[INFO] Creating .CRT . *****[INFO] Certificate Generation Complete ***** *****[INFO] List of Certificates generated: *****[INFO] 1. vcf-m01-auto *****[INFO] 2. vcf-m01-wsa
証明書のファイルは、下記のように生成されます。
PS C:\work\certgen-vvs-release-1.2.002> ls -Recurse .\SignedByMSCACerts\ | ft -AutoSize ディレクトリ: C:\work\certgen-vvs-release-1.2.002\SignedByMSCACerts Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2024/08/26 8:50 RootCA d----- 2024/08/26 8:51 vcf-m01-auto d----- 2024/08/26 8:51 vcf-m01-wsa ディレクトリ: C:\work\certgen-vvs-release-1.2.002\SignedByMSCACerts\RootCA Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2024/08/26 8:50 911 Root64-der.der -a---- 2024/08/26 8:50 1310 Root64.cer -a---- 2024/08/26 8:50 1310 Root64.pem ディレクトリ: C:\work\certgen-vvs-release-1.2.002\SignedByMSCACerts\vcf-m01-auto Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2024/08/26 8:51 739 config.cfg -a---- 2024/08/26 8:51 784 readme.txt -a---- 2024/08/26 8:51 1732 vcf-m01-auto-orig.key -a---- 2024/08/26 8:51 2248 vcf-m01-auto.1.cer -a---- 2024/08/26 8:51 4438 vcf-m01-auto.1.rsp -a---- 2024/08/26 8:51 5260 vcf-m01-auto.2.chain.pem -a---- 2024/08/26 8:51 3999 vcf-m01-auto.3.pem -a---- 2024/08/26 8:51 4230 vcf-m01-auto.4.p12 -a---- 2024/08/26 8:51 3278 vcf-m01-auto.5.p12 -a---- 2024/08/26 8:51 3552 vcf-m01-auto.6.p7b -a---- 2024/08/26 8:51 2248 vcf-m01-auto.7.crt -a---- 2024/08/26 8:51 5260 vcf-m01-auto.8.chain.pem -a---- 2024/08/26 8:51 1314 vcf-m01-auto.csr -a---- 2024/08/26 8:51 1702 vcf-m01-auto.key -a---- 2024/08/26 8:51 106 vcf-m01-auto.log ディレクトリ: C:\work\certgen-vvs-release-1.2.002\SignedByMSCACerts\vcf-m01-wsa Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2024/08/26 8:51 625 config.cfg -a---- 2024/08/26 8:51 777 readme.txt -a---- 2024/08/26 8:51 1732 vcf-m01-wsa-orig.key -a---- 2024/08/26 8:51 2124 vcf-m01-wsa.1.cer -a---- 2024/08/26 8:51 4314 vcf-m01-wsa.1.rsp -a---- 2024/08/26 8:51 5140 vcf-m01-wsa.2.chain.pem -a---- 2024/08/26 8:51 3873 vcf-m01-wsa.3.pem -a---- 2024/08/26 8:51 4140 vcf-m01-wsa.4.p12 -a---- 2024/08/26 8:51 3180 vcf-m01-wsa.5.p12 -a---- 2024/08/26 8:51 3428 vcf-m01-wsa.6.p7b -a---- 2024/08/26 8:51 2124 vcf-m01-wsa.7.crt -a---- 2024/08/26 8:51 5140 vcf-m01-wsa.8.chain.pem -a---- 2024/08/26 8:51 1186 vcf-m01-wsa.csr -a---- 2024/08/26 8:51 1706 vcf-m01-wsa.key -a---- 2024/08/26 8:51 106 vcf-m01-wsa.log
このファイルのうち、Aria Suite Lifecycle での証明書インポートでは、~.2.chain.pem という名前のファイルを使用します。
- vcf-m01-wsa.2.chain.pem
- vcf-m01-auto.2.chain.pem
以上、CertGen-VVS.ps1 スクリプトで証明書を発行してみる話でした。