付録A 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.conf
でundercloud_public_vip
パラメーターを使用します。この IP アドレスの完全修飾ドメイン名を使用する場合は、そのドメイン名を使用してください。
- オーバークラウドでは、パブリック API の IP アドレスを使用します。これは、ネットワーク分離環境ファイルにある
ExternalAllocationPools
パラメーターの最初のアドレスです。この IP アドレスに完全修飾ドメイン名を使用する場合には、そのドメイン名を使用します。
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.conf
ファイルの 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
ファイルと合わせてこの証明書を使用します。