付録B SSL/TLS 証明書の設定

「director の設定」または「オーバークラウドの SSL/TLS の有効化」で説明したプロセスのオプションとして、アンダークラウドまたはオーバークラウドのいずれかでの通信に SSL/TLS を使用するように設定できます。ただし、独自の認証局で発行した SSL/TLS 証明書を使用する場合には、その証明書には特定の設定をして使用する必要があります。

認証局の作成

通常、SSL/TLS 証明書の署名には、外部の認証局を使用します。場合によっては、独自の認証局を使用する場合もあります。たとえば、内部のみの認証局を使用するように設定する場合などです。
たとえば、キーと証明書のペアを生成して、認証局として機能するようにします。
$ openssl genrsa -out ca.key.pem 4096
$ openssl req  -key ca.key.pem -new -x509 -days 7300 -extensions v3_ca -out ca.crt.pem
openssl req コマンドは、認証局に関する特定の情報を要求します。それらの情報を指定してください。
これにより、ca.crt.pem という名前の証明書ファイルが作成されます。Red Hat Openstack Platform 環境にアクセスする予定の各クライアントにこのファイルをコピーしてから、以下のコマンドを実行して、認証局のトラストバンドルに追加します。
$ sudo cp ca.crt.pem /etc/pki/ca-trust/source/anchors/
$ sudo update-ca-trust extract

SSL/TLS 証明書の作成

次の手順では、アンダークラウドおよびオーバークラウドのいずれか用の署名済み証明書を作成します。
カスタマイズするデフォルトの OpenSSL 設定ファイルをコピーします。
$ cp /etc/pki/tls/openssl.cnf .
カスタムの openssl.cnf ファイルを編集して、director に使用する SSL パラメーターを設定します。変更するパラメーターの種別には以下のような例が含まれます。
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = AU
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Queensland
localityName = Locality Name (eg, city)
localityName_default = Brisbane
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Red Hat
commonName = Common Name
commonName_default = 192.168.0.1
commonName_max = 64

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
IP.1 = 192.168.0.1
DNS.1 = 192.168.0.1
DNS.2 = instack.localdomain
DNS.3 = vip.localdomain

重要

commonName_default をパブリック API の IP アドレスに設定します。
  • アンダークラウドでは、undercloud.confundercloud_public_vip パラメーターを使用します。
  • オーバークラウドでは、パブリック API の IP アドレスを使用します。これは、ネットワーク分離環境ファイルにある ExternalAllocationPools パラメーターの最初のアドレスです。
alt_names セクションの IP エントリーおよび DNS エントリーとして、同じパブリック API の IP アドレスを追加します。DNS も使用する場合は、同じセクションに DNS エントリーとしてそのサーバーのホスト名を追加します。openssl.cnf の詳しい情報は man openssl.cnf を実行してください。
以下のコマンドを実行して、キー (server.key.pem)、証明書の署名要求 (server.csr.pem)、および署名済みの証明書 (server.crt.pem) を生成します。
$ openssl genrsa -out server.key.pem 2048
$ openssl req -config openssl.cnf -key server.key.pem -new -out server.csr.pem
$ sudo openssl ca -config openssl.cnf -extensions v3_req -days 3650 -in server.csr.pem -out server.crt.pem -cert ca.cert.pem

重要

openssl req コマンドは、Common Name を含む、証明書に関するいくつかの情報を尋ねます。Common Name は、(作成する証明書セットに応じて) アンダークラウドまたはオーバークラウドのパブリック API の IP アドレスに設定するようにしてください。openssl.cnf ファイルは、この IP アドレスをデフォルト値として使用する必要があります。
このキーペアを使用して、アンダークラウドまたはオーバークラウドのいずれかの SSL/TTL 証明書を作成します。

アンダークラウドで証明書を使用する場合

以下のコマンドを実行して証明書を作成します。
$ cat server.crt.pem server.key.pem > undercloud.pem
これにより、undercloud_service_certificate オプションに使用する undercloud.pem が作成されます。このファイルは、HAProxy ツールが読み取ることができるように、特別な SELinux コンテキストが必要です。以下の例をガイドとして利用してください。
$ sudo mkdir /etc/pki/instack-certs
$ sudo cp ~/undercloud.pem /etc/pki/instack-certs/.
$ sudo semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?"
$ sudo restorecon -R /etc/pki/instack-certs
アンダークラウドの信頼済みの認証局 (CA) 一覧に証明書を追加します。
$ sudo cp ca.crt.pem /etc/pki/ca-trust/source/anchors/
$ sudo update-ca-trust extract
undercloud.conf ファイルの undercloud_service_certificate オプションに undercloud.pem の場所を追記します。以下に例を示します。
undercloud_service_certificate = /etc/pki/instack-certs/undercloud.pem
「director の設定」に記載の手順に従ってアンダークラウドのインストールを続行します。

オーバークラウドで証明書を使用する場合

「オーバークラウドの SSL/TLS の有効化」enable-tls.yaml ファイルと合わせてこの証明書を使用します。