てくてくてっく

おそらく技術ブログ

vCenterホストの証明書サムプリントをgovcコマンド1つで取得する

vCenter Server TLS 証明書のサムプリントを取得する必要がある際にコマンド1つで楽に実施する方法を紹介します。

もちろんブラウザがあれば vCenter Server の TLS 証明書サムプリントの検索 を参考に数手順でできるのですが、コマンドで取得できた方がメンテナンス手順書を書く際などに都合がよい場合もあるかと思います。

(前提)govcのインストール

https://github.com/vmware/govmomi/blob/master/govc/README.md を参考にインストールします。

証明書の取得

あとはコマンドをたたくだけです。下記のようにサムプリントが表示されます。
-json オプションをつければjsonに成形可能なのでjqコマンド等で必要な情報のみ抽出することも可能です。

$ govc about.cert -u localhost:8989 -k
Certificate Status:          ERROR x509: certificate is valid for example.com, not localhost
Issued To:                   
  Common Name (CN):          <Not Part Of Certificate>
  Organization (O):          Acme Co
  Organizational Unit (OU):  <Not Part Of Certificate>
Issued By:                   
  Common Name (CN):          <Not Part Of Certificate>
  Organization (O):          Acme Co
  Organizational Unit (OU):  <Not Part Of Certificate>
Validity Period:             
  Issued On:                 1970-01-01 00:00:00 +0000 UTC
  Expires On:                2084-01-29 16:00:00 +0000 UTC
Thumbprints:                 
  SHA-256 Thumbprint:        44:8F:62:8A:8A:65:AA:18:56:0E:53:A8:0C:53:AC:B3:8C:51:B4:27:DF:03:34:08:23:49:14:11:47:DC:9B:F6
  SHA-1 Thumbprint:          2C:11:ED:D7:13:87:7D:B5:74:18:B8:1C:42:C2:56:1F:0D:B9:5B:B9

(補足) どのように実装されているのか

govcの実装箇所は下記で、シンプルにcert情報をgolangの標準ライブラリのcrypto/sha256でパースしているようです。

https://github.com/vmware/govmomi/blob/63aa05d35301eb2318c725ee7ac4961d6b7475fd/object/host_certificate_info.go#L50