vm.gowatana.jp

NEOにほんごVMware(仮)

Aria Automation デプロイむけの証明書を発行してみる。(ADCS / CertGen-VVS.ps1)

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++ のランタイムも、なぜか相当古いバージョンですが指定されているバージョンをインストールしておきます。

下記から、インストーラをダウンロードします。

 

vcredist_x64.exe を実行すると下記の画面が起動できるので、ライセンス同意のチェックを ON にして、「Install」をクリックするとインストールできます。

 

3. 証明書生成スクリプト(CertGen-VVS.ps1)の実行

CertGen-VVS.ps1 スクリプトは Broadcom の KB ページからダウンロードして、コンフィグとなる CSV ファイルを読み込ませて実行することで、証明書を発行できます。

 

3-1. スクリプトの入手

CertGen-VVS.ps1 スクリプトは、下記の KB からダウンロードできます。

 

上記の 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セットの証明書が発行されたことがわかります。

  1. vcf-m01-auto
  2. 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 スクリプトで証明書を発行してみる話でした。