2013/03/03

VMWare ESXi 5.1のSSLキーを購入したものに入れ替えてみる

自宅で使用しているVMWare ESXi 5.1のアドレスにWebブラウザでアクセスすると、あたかも乗っ取られたサイトであるかのように表示されるので、以前購入したワイルドカードSSLサーバーキーなファイルに入れ替えてみました。

[2013/05/04 追記]
追加した鍵はnamecheapで購入したCOMODOのWildcardSSLなのですが、rootCAの証明書が入っていませんでした。 そのためFirefox (release 20.0.1)ではhttpsでESXiサーバにアクセスした時に警告画面が表示されてしまいます。
ESXiにsshでログインして、以下の手順(;は改行で読み替え)でrui.rootca.crtという名前のファイルにAddTrust External CA Rootの証明書を作成しています。
$ cd /etc/vmware/ssl; $ vi rui.rootca.crt
rui.crtファイルに複数の証明書を保存する事はできません。 ESXiサーバ上にはc_rehashコマンドがないので手動でopensslが証明書を探せるように、ハッシュ名のファイルにシンボリックリンクを張ります。
ln -s rui.rootca.crt $(openssl x509 -noout -hash -in rui.rootca.crt)
ちなみにcrtファイルはPEM形式なので、openssl x509 -in rui.rootca.crt -noout -textのようなコマンドで中身をチェックする事ができます。 rhttpproxyをリスタートして確認してください。

基本的な操作手順はVMWare公式サイトのthe configuration of Certificate Authority (CA) certificates for a ESXi 5.x host.にあります

手順はsshを有効にするところからあるので長いのですが、実際のステップは次のようなところだけです。

  • Log in to the host and then navigate to /etc/vmware/ssl.
  • Copy the files to a backup location, such as a VMFS volume.
  • Log in to the host with WinSCP and navigate to the /etc/vmware/ssl directory.
  • Delete the existing rui.crt and rui.key from the directory.
  • Copy the newly created rui.crt and rui.key to the directory using Text Mode or ASCII mode to avoid the issue of special characters ( ^M) appearing in the certificate file.
  • Type less rui.crt to validate that there are no extra characters.
  • Switch back to the DCUI of the host and select Troubleshooting Options > Restart Management Agents.

コマンドベースで書くと次のようになるんでしょうか

  • ESXiホストにsshでログイン
  • # cd /etc/vmware/ssl/
  • rui.crtとrui.keyを、入手した証明書とパスワードなし鍵ファイルに置き換える
    • scpやWinSCPを使う事もできるが、証明書はテキストファイルになっている。sshログインしているのであれば、catなどとCopy&Pasteの方がいいかもしれない
    • 例: # cat > rui.crt、コピーした後でControl+c(C-c)
    • # cat > rui.key、同様にコピーした後でC-c
  • # /etc/init.d/rhttpproxy restart

自前CA局が悪いかどうかは状況によるのですが、サイトのポリシーなどでWebサイトに導入するSSL証明書は正規に購入すること、などとなっている場合には必要な作業かと思います。

ただお金を出せば証明してあげる、という構造は理解しやすいのですが、一歩引いてみると、CA局はお金を集めるインセンティブを上から下まで持っているので、ルールが曲げられちゃう可能性もありそうで、それでちゃんとtrust-chainが構成できるのか、少し不安に感じる部分がないでもありません。

最上位CA局は技術・倫理ポリシーを持った非営利的機関にして、それは複数あっていいのだけれど、一般に販売されるブラウザにデフォルトで加えるCA局のスタンダードとかも必要な気がします。