はじめに

vRealize Automation (vRA) では、払い出しを行った Linux Guest に対し、プロビジョニング後に様々な操作を行うことができます。これを担当するのが Gugent (“ぐぅ〜じぇんと” と現地人は発音) になります。Gugent は IaaS Component があるサーバーの IIS と通信します。この際 IIS の証明書のチェックを行うのに cert.pem ファイルを確認するのですが、Gugent をインストールしただけでは作成されてないため、以下の KB にあるエラーが発生します。

KB2052085

Gugent logs report certificate errors after provisioning a virtual machine in vRealize Automation (2052085)

というタイトルで掲載されています。cert.pem がないので、echo, openssl, sed を使ってコマンドで生々しく生成することになります。

なお、vRealize Automation 6.2 からはマニュアルに手順が追加されました。

Install the Guest Agent on a Linux Machine

openssl コマンドのエラー

しかしながら、Windows 2012 R2 update などの IIS は、上記 KB の “openssl s_client -connect” の初期値の暗号化メソッドを受け付けないためエラーが発生することがあります。以下は CentOS 6.6 で実行した例です。iaas-w12-01a.corp.local は、IaaS Component をインストールしたラボ環境の Windows サーバーです。

CentOS 6.6 が サポート マトリックス (PDF) にないぞ!というツッコミはさておき。

[root@ctos gugent]# echo | openssl s_client -connect iaas-w12-01a.corp.local:443
CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 249 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
[root@ctos gugent]#

対応

上記エラーを回避するには、“openssl s_client -connect” にオプションで暗号化メソッドを追加します。ラボでは -ssl3 および -tls1 の動作を確認しました。以下 KB のコマンドの実行例です。

[root@ctos gugent]# echo | openssl s_client -connect iaas-w12-01a.corp.local:443 -tls1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > cert.pem
depth=0 CN = iaas-w12-01a.corp.local
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = iaas-w12-01a.corp.local
verify error:num=21:unable to verify the first certificate
verify return:1
DONE
[root@ctos gugent]#

チート

Linux Gugent で cert.pem 関連のエラーがでたら、Gugent logs report certificate errors after provisioning a virtual machine in vRealize Automation (2052085) のコマンド “openssl s_client -connect” に “-ssl3” または “-tls1” を付けて cert.pem を生成すること。