付録A SSL/TLS 証明書の設定
「director の設定」または「オーバークラウドの SSL/TLS の有効化」で説明したプロセスのオプションとして、アンダークラウドまたはオーバークラウドのいずれかでの通信に SSL/TLS を使用するように設定できます。ただし、独自の認証局で発行した SSL 証明書を使用する場合には、その証明書には以下の項に記載する設定のステップが必要です。
A.1. 署名ホストの初期化
署名ホストとは、新規証明書を生成し、認証局を使用して署名するホストです。選択した署名ホスト上で SSL 証明書を作成したことがない場合には、ホストを初期化して新規証明書に署名できるようにする必要がある可能性があります。
/etc/pki/CA/index.txt ファイルは、すべての署名済み証明書の記録を保管します。このファイルが存在しているかどうかを確認してください。存在していない場合には、空のファイルを作成します。
$ sudo touch /etc/pki/CA/index.txt
/etc/pki/CA/serial ファイルは、次に署名する証明書に使用する次のシリアル番号を特定します。このファイルが存在するかどうかを確認し、存在しない場合には、新規ファイルを作成して新しい開始値を指定します。
$ sudo echo '1000' | sudo tee /etc/pki/CA/serial
A.2. 認証局の作成
通常、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 という名前の認証局ファイルが作成されます。
A.3. クライアントへの認証局の追加
SSL/TLS を使用して通信することを目的としている外部のクライアントの場合は、Red Hat OpenStack Platform 環境にアクセスする必要のある各クライアントに認証局ファイルをコピーします。クライアントへのコピーが完了したら、そのクライアントで以下のコマンドを実行して、認証局のトラストバンドルに追加します。
$ sudo cp ca.crt.pem /etc/pki/ca-trust/source/anchors/ $ sudo update-ca-trust extract
A.4. SSL/TLS キーの作成
以下のコマンドを実行して、SSL/TLS キー (server.key.pem) を生成します。このキーは、さまざまな段階で、アンダークラウドとオーバークラウドの証明書を生成するのに使用します。
$ openssl genrsa -out server.key.pem 2048
A.5. 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 = instack.localdomain DNS.2 = vip.localdomain DNS.3 = 192.168.0.1
commonName_default をパブリック API の IP アドレスに設定するか、完全修飾ドメイン名を使用している場合は完全修飾ドメイン名に設定します。
-
アンダークラウドでは、
undercloud.confでundercloud_public_vipパラメーターを使用します。この IP アドレスの完全修飾ドメイン名を使用する場合は、そのドメイン名を使用してください。 -
オーバークラウドでは、パブリック API の IP アドレスを使用します。これは、ネットワーク分離環境ファイルにある
ExternalAllocationPoolsパラメーターの最初のアドレスです。この IP アドレスに完全修飾ドメイン名を使用する場合には、そのドメイン名を使用します。
alt_names セクションを編集して、以下のエントリーを追加します。
-
IP: SSL 経由で director にアクセスするためのクライアントの IP アドレス一覧 -
DNS: SSL 経由で director にアクセスするためのクライアントのドメイン名一覧。alt_namesセクションの最後に DNS エントリーとしてパブリック API の IP アドレスも追加します。
openssl.cnf に関する詳しい情報については、man openssl.cnf を実行します。
次のコマンドを実行し、手順 1 で作成したキーストアより公開鍵を使用して証明書署名要求を生成します (server.csr.pem)。
$ openssl req -config openssl.cnf -key server.key.pem -new -out server.csr.pem
「SSL/TLS キーの作成」で作成した SSL/TLS キーを -key オプションで必ず指定してください。
openssl req コマンドは、Common Name を含む、証明書に関するいくつかの情報を尋ねます。Common Name は、(作成する証明書セットに応じて) アンダークラウドまたはオーバークラウドのパブリック API の IP アドレスに設定するようにしてください。openssl.cnf ファイルは、この IP アドレスをデフォルト値として使用する必要があります。
次の項では、この server.csr.pem ファイルを使用して SSL/TLS 証明書を作成します。
A.6. SSL/TLS 証明書の作成
以下のコマンドで、アンダークラウドまたはオーバークラウドの証明書を作成します。
$ sudo openssl ca -config openssl.cnf -extensions v3_req -days 3650 -in server.csr.pem -out server.crt.pem -cert ca.crt.pem -keyfile ca.key.pem
上記のコマンドでは、以下のオプションを使用しています。
-
v3 拡張機能を指定する設定ファイル。この値は、「
-config」オプションとして追加します。 -
認証局を介して証明書を生成し、署名するために、「SSL/TLS 証明書署名要求の作成」で設定した証明書署名要求。この値は、「
-in」オプションで設定します。 -
証明書への署名を行う、「認証局の作成」で作成した認証局。この値は
-certオプションとして追加します。 -
「認証局の作成」で作成した認証局の秘密鍵。この値は
-keyfileオプションとして追加します。
このコマンドを実行すると、server.crt.pem という名前の証明書が作成されます。この証明書は、「SSL/TLS キーの作成」で作成した SSL/TLS キーとともに使用して SSL/TLS を有効にします。
A.7. アンダークラウドで証明書を使用する場合
以下のコマンドを実行して、証明書とキーを統合します。
$ cat server.crt.pem server.key.pem > undercloud.pem
このコマンドにより、undercloud.pem が作成されます。undercloud.conf ファイルの undercloud_service_certificate オプションにこのファイルの場所を指定します。このファイルには、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
undercloud.conf ファイルの undercloud_service_certificate オプションに undercloud.pem の場所を追記します。以下に例を示します。
undercloud_service_certificate = /etc/pki/instack-certs/undercloud.pem
また、「認証局の作成」で作成した認証局をアンダークラウドの信頼済み認証局の一覧に認証局を追加して、アンダークラウド内の異なるサービスが認証局にアクセスできるようにします。
$ sudo cp ca.crt.pem /etc/pki/ca-trust/source/anchors/ $ sudo update-ca-trust extract
「director の設定」に記載の手順に従ってアンダークラウドのインストールを続行します。
A.8. オーバークラウドで証明書を使用する場合
「オーバークラウドの SSL/TLS の有効化」で設定した enable-tls.yaml 環境ファイルに証明書ファイルの内容を記載します。オーバークラウドのデプロイメントプロセスでは、enable-tls.yaml からパラメーターを取り、オーバークラウド内の各ノードでそれらのパラメーターを自動的に統合します。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.