Nutanix CE の SSL(TLS)証明書を入れ替えていみます。証明書は、一般的には商用 CA や Let's Encrypt などから入手することが多いと思います。今回はとりあえずラボ環境で Web ブラウザの証明書エラーを回避したいので、Linux マシンにインストールされていた openssl で証明書を作成してみます。
今回の内容です。
今回の環境
下記のように構築した Nutanix CE 2.0 を利用しています。
openssl の実行環境です。今回は Oracle Linux 7 で作成しましたが、CVM でもこの手順で作成できます。
$ openssl version OpenSSL 1.0.2k-fips 26 Jan 2017 $ cat /etc/oracle-release Oracle Linux Server release 7.9
今回の証明書の発行 → 入れ替えのイメージです。
1. openssl での証明書作成
1-1. CA の構築
証明書関連ファイルをまとめるフォルダを作成しておきます。
$ mkdir ./lab-cert
CA 証明書の生成に使用する鍵ファイルを、ca.key という名前で作成します。
$ openssl genrsa -out ./lab-cert/ca.key 2048
CA 証明書を ca.crt というファイル名で作成します。
今回のサブジェクトは下記のように設定しています。
- C(Country): JP
- ST(State): Tokyo
- L(Location): HomeLab
- O(Organization): go-lab.jp
- OU(Organization Unit): Nutanix
- CN(Common Name): NutanixCE-CA
$ openssl req -x509 -new -sha512 -nodes \ -days 3650 \ -subj '/C=JP/ST=Tokyo/L=HomeLab/O=go-lab.jp/OU=Nutanix/CN=NutanixCE-CA' \ -key ./lab-cert/ca.key \ -out ./lab-cert/ca.crt
1-2. Prism Element むけ証明書の作成
プライベート鍵ファイルを prism.key という名前で作成します。今回は、Prism でインポートする際のデフォルト選択肢にあわせて、RSA 2048bit で作成しています。
$ openssl genrsa -out ./lab-cert/prism.key 2048
CSR(Certificate Signing Request)を、prism.csr というファイル名で作成します。
- C(Country): JP
- ST(State): Tokyo
- L(Location): HomeLab
- O(Organization): go-lab.jp
- OU(Organization Unit): Nutanix
- CN(Common Name): lab-nxce-02.go-lab.jp
$ openssl req -new -sha512 \ -subj "/C=JP/ST=Tokyo/L=HomeLab/O=go-lab.jp/OU=Nutanix/CN=lab-nxce-02.go-lab.jp" \ -key ./lab-cert/prism.key \ -out ./lab-cert/prism.csr
FQDN だけでなく、IP アドレスと、クラスタ VIP / FQDN にも対応させるために、証明書に設定する SAN(Subject Alternative Name)を記載したファイルを作成します。
SAN には、下記のアドレスを指定しています。
- IP.1: Nutanix クラスタ VIP アドレス
- IP.2: CVM の IP アドレス
- DNS.1: Nutanix クラスタ VIP アドレスの FQDN
- DNS.2: CVM の IP アドレスの FQDN
cat << EOF > ./lab-cert/san.txt subjectAltName = @alt_names [alt_names] IP.1=192.168.20.40 IP.2=192.168.20.42 DNS.1=lab-nxce-02.go-lab.jp DNS.2=lab-nxce-02-cvm.go-lab.jp EOF
ファイルが作成できたことを確認しておきます。
$ cat ./lab-cert/san.txt subjectAltName = @alt_names [alt_names] IP.1=192.168.20.40 IP.2=192.168.20.42 DNS.1=lab-nxce-02.go-lab.jp DNS.2=lab-nxce-02-cvm.go-lab.jp
CSR から、証明書を prism.crt というファイル名で作成します。
$ openssl x509 -req -sha512 -days 3650 \ -CA ./lab-cert/ca.crt \ -CAkey ./lab-cert/ca.key \ -CAserial ./lab-cert/ca.srl -CAcreateserial \ -in ./lab-cert/prism.csr \ -extfile ./lab-cert/san.txt \ -out ./lab-cert/prism.crt
証明書の CN を確認しておきます。
$ openssl x509 -in ./lab-cert/prism.crt -noout -subject subject= /C=JP/ST=Tokyo/L=HomeLab/O=go-lab.jp/OU=Nutanix/CN=lab-nxce-02.go-lab.jp
SAN にアドレスが設定されていることも確認しておきます。
$ openssl x509 -in ./lab-cert/prism.crt -noout -text | grep -A1 "Subject Alternative Name" X509v3 Subject Alternative Name: IP Address:192.168.20.40, IP Address:192.168.20.42, DNS:lab-nxce-02.go-lab.jp, DNS:lab-nxce-02-cvm.go-lab.jp
これで、下記のようにファイルが作成されます。
$ file ./lab-cert/* ./lab-cert/ca.crt: PEM certificate ./lab-cert/ca.key: PEM RSA private key ./lab-cert/ca.srl: ASCII text ./lab-cert/prism.crt: PEM certificate ./lab-cert/prism.csr: PEM certificate request ./lab-cert/prism.key: PEM RSA private key ./lab-cert/san.txt: ASCII text
生成したファイルのうち、下記の3つをダウンロードしておきます。
- CA 証明書: ca.crt
- Prism 証明書: prism.crt
- Prism 証明書のプライベート鍵: prism.key
2. Prism Element での証明書入れ替え
Prism Element で「設定」→「SSL 証明書」を開き、「Replace Certificate」をクリックします。
「Import Key and Certificate」を選択して「Next」をクリックします。
作成しておいた、プライベート鍵、証明書、CA 証明書のファイルを選択して「Import Files」をクリックします。
- Private Kay: prism.key
- Public Certificate: prism.crt
- CA Certificate/Chain: ca.crt
証明書を置き換えたことにより、Web ブラウザがリロードされます。
この時点では、まだアクセス元に CA 証明書をインストールしていないため、あらためて証明書エラーが表示されます。
証明書の情報を確認すると、生成したものに置き換えられたことが確認できます。
証明書に、SAN(サブジェクト代替名)も設定されていることが確認できます。
ログインして「SSL 証明書」画面にアクセスすると、置き換えた証明書の情報が表示されています。
3. クライアント側での CA 証明書インストール
今回は、Windows クライアントで CA 証明書(ca.crt)を右クリック →「証明書のインストール」をクリックします。
「現在のユーザー」が選択された状態で「次へ」をクリックします。
「信頼されたルート証明機関」を選択して「次へ」をクリックします。
「完了」をクリックします。
セキュリティ警告としてインストールの再確認が表示されるので「はい」をクリックします。
これで、Web ブラウザを再起動してから SAN に設定したアドレスで Prism Element にアクセスすると、証明書エラーが表示されなくなります。
以上。