6.11. オーバークラウドの SSL/TLS の有効化
デフォルトでは、オーバークラウドはサービスに対して暗号化されていないエンドポイントを使用します。これは、オーバークラウドの設定には、パブリック API エンドポイントの SSL/TLS を有効化するために追加の環境ファイルが必要という意味です。
注記
このプロセスでは、パブリック API のエンドポイントの SSL/TLS のみを有効化します。内部 API や管理 API は暗号化されません。
このプロセスには、パブリック API のエンドポイントを定義するネットワークの分離が必要です。ネットワークの分離に関する説明は 「ネットワークの分離」 を参照してください。
秘密鍵と認証局からの証明書が作成されていることを確認します。有効な SSL/TLS 鍵および認証局ファイルの作成に関する情報は、「付録A SSL/TLS 証明書の設定」を参照してください。
SSL/TLS の有効化
Heat テンプレートコレクションから
enable-tls.yaml
の環境ファイルをコピーします。
$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/enable-tls.yaml ~/templates/.
このファイルを編集して、下記のパラメーターに以下の変更を加えます。
parameter_defaults:
- SSLCertificate:
- 証明書ファイルのコンテンツを
SSLCertificate
パラメーターにコピーします。以下に例を示します。parameter_defaults: SSLCertificate: | -----BEGIN CERTIFICATE----- MIIDgzCCAmugAwIBAgIJAKk46qw6ncJaMA0GCSqGSIb3DQEBCwUAMFgxCzAJBgNV ... sFW3S2roS4X0Af/kSSD8mlBBTFTCMBAj6rtLBKLaQbIxEpIzrgvp -----END CERTIFICATE-----
重要
この認証局のコンテンツで、新しく追加する行は、すべて同じレベルにインデントする必要があります。 - SSLKey:
- 以下のように、秘密鍵の内容を
SSLKey
パラメーターにコピーします。parameter_defaults: ... SSLKey: | -----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAqVw8lnQ9RbeI1EdLN5PJP0lVO9hkJZnGP6qb6wtYUoy1bVP7 ... ctlKn3rAAdyumi4JDjESAXHIKFjJNOLrBmpQyES4XpZUC7yhqPaU -----END RSA PRIVATE KEY-----
重要
この秘密鍵のコンテンツにおいて、新しく追加する行はすべて同じ ID レベルに指定する必要があります。 - EndpointMap:
EndpointMap
には、HTTPS および HTTP 通信を使用したサービスのマッピングが含まれます。SSL 通信に DNS を使用する場合は、このセクションをデフォルト設定のままにしておいてください。ただし、SSL 証明書の共通名に IP アドレスを使用する場合は (「付録A SSL/TLS 証明書の設定」参照)、CLOUDNAME
のインスタンスをすべてIP_ADDRESS
に置き換えてください。これには以下のコマンドを使用してください。$ sed -i 's/CLOUDNAME/IP_ADDRESS/' ~/templates/enable-tls.yaml
重要
IP_ADDRESS
またはCLOUDNAME
は、実際の値に置き換えないでください。Heat により、オーバークラウドの作成時にこれらの変数が適切な値に置き換えられます。
resource_registry:
- OS::TripleO::NodeTLSData:
OS::TripleO::NodeTLSData:
のリソースのパスを絶対パスに変更します。resource_registry: OS::TripleO::NodeTLSData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/tls-cert-inject.yaml
ルート証明書の注入
証明書の署名者がオーバークラウドのイメージにあるデフォルトのトラストストアに含まれない場合には、オーバークラウドのイメージに認証局を注入する必要があります。Heat テンプレートコレクションから
inject-trust-anchor.yaml
環境ファイルをコピーします。
$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/inject-trust-anchor.yaml ~/templates/.
このファイルを編集して、下記のパラメーターに以下の変更を加えます。
parameter_defaults:
- SSLRootCertificate:
SSLRootCertificate
パラメーターにルート認証局ファイルの内容をコピーします。以下に例を示します。parameter_defaults: SSLRootCertificate: | -----BEGIN CERTIFICATE----- MIIDgzCCAmugAwIBAgIJAKk46qw6ncJaMA0GCSqGSIb3DQEBCwUAMFgxCzAJBgNV ... sFW3S2roS4X0Af/kSSD8mlBBTFTCMBAj6rtLBKLaQbIxEpIzrgvp -----END CERTIFICATE-----
重要
この認証局のコンテンツで、新しく追加する行は、すべて同じレベルにインデントする必要があります。
resource_registry:
- OS::TripleO::NodeTLSCAData:
OS::TripleO::NodeTLSCAData:
のリソースのパスを絶対パスに変更します。resource_registry: OS::TripleO::NodeTLSCAData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/ca-inject.yaml
DNS エンドポイントの設定
DNS ホスト名を使用して SSL/TLS でオーバークラウドにアクセスする場合は、新しい環境ファイル (
~/templates/cloudname.yaml
) を作成して、オーバークラウドのエンドポイントのホスト名を定義します。以下のパラメーターを使用してください。
parameter_defaults:
- CloudName:
- オーバークラウドエンドポイントの DNS ホスト名
- DnsServers:
- 使用する DNS サーバー一覧。設定済みの DNS サーバーには、パブリック API の IP アドレスに一致する設定済みの
CloudName
へのエントリーが含まれていなければなりません。
このファイルの内容の例は以下のとおりです。
parameter_defaults: CloudName: overcloud.example.com DnsServers: ["10.0.0.1"]
オーバークラウド作成時の環境ファイルの追加
「7章オーバークラウドの作成」に記載のデプロイメントのコマンド (
openstack overcloud deploy
) は、-e
オプションを使用して環境ファイルを追加します。以下の順番にこのセクションから環境ファイルを追加します。
- SSL/TLS を有効化する環境ファイル (
enable-tls.yaml
) - DNS ホスト名を設定する環境ファイル (
cloudname.yaml
) - ルート認証局を注入する環境ファイル (
inject-trust-anchor.yaml
)
例:
$ openstack overcloud deploy --templates [...] -e /home/stack/templates/enable-tls.yaml -e ~/templates/cloudname.yaml -e ~/templates/inject-trust-anchor.yaml