PolarDB for PostgreSQLクラスターでは、カスタム証明書を使用して、プライマリエンドポイントまたはクラスターエンドポイントでSecure Sockets Layer (SSL) を設定できます。 このトピックでは、カスタム証明書を使用してSSLを設定する方法について説明します。
前提条件
クラスターは、PolarDB for PostgreSQL 14、15以降を実行します。 クラスターがPolarDB for PostgreSQL 14を実行している場合、リビジョンバージョンは14.10.21.0以降です。 クラスターがこれらのバージョンのいずれかを実行している場合にのみ、プライマリエンドポイントでカスタム証明書またはクライアントCA証明書を設定できます。
クラスターのPolarProxyバージョンは2.3.51以降です。 PolarProxyがこれらのバージョンのいずれかを実行する場合にのみ、デフォルトのクラスターエンドポイントまたはカスタムクラスターエンドポイントでカスタム証明書またはクライアントCA証明書を設定できます。
OpenSSLがインストールされています。
説明LinuxオペレーティングシステムにはOpenSSLが提供されます。 Linuxオペレーティングシステムを使用している場合は、OpenSSLをインストールする必要はありません。
Windowsオペレーティングシステムを使用している場合は、OpenSSLソフトウェアパッケージをダウンロードしてインストールする必要があります。
使用上の注意
SSLは、CPU使用率の増加と読み取り /書き込みレイテンシの増加を引き起こします。
SSLを有効にした後、SSLを有効にするために既存の接続を閉じて再確立する必要があります。
カスタム証明書を設定したり、設定したカスタム証明書の内容を変更したり、SSLを無効にしたりすると、一時的な接続が発生します。 オフピーク時に操作を実行することを推奨します。
手順1: カスタム証明書の作成
サーバー証明書または自己署名証明書の秘密鍵を作成する場合は、パスワード暗号化を有効にしないでください。 パスワード暗号化を有効にすると、SSLを有効にできません。
この例では、Community Enterprise Operating System (CentOS) が使用されています。 Windowsオペレーティングシステムを使用している場合は、CentOSでコマンドを設定するのと同じ方法でopensslコマンドを設定できます。 cpおよびvimコマンドを実行する代わりに、必要なファイルを手動でコピーして編集する必要があります。
自己署名証明書 (ca.crt) と自己署名証明書 (ca.key) の秘密鍵を作成します。
openssl req -new -x509 -days 3650 -nodes -out ca.crt -keyout ca.key -subj "/CN=root-ca"サーバー証明書署名要求ファイル (server.csr) と、サーバー証明書署名要求ファイル (server.key) の秘密鍵を作成します。 カスタム証明書は、プライマリエンドポイントまたは1つ以上のクラスターエンドポイントを保護できます。 次のいずれかの方法を使用して、サーバー証明書署名要求ファイルを生成できます。
単一のエンドポイントを保護する場合は、次のコマンドを実行します。
openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/C N=pe-xxx.rwlb.rds.aliyuncs.com"説明コマンドでは、pgm-bpxxxxx.pg.rds.aliyuncs.comは例としてのみ使用されます。 保護する実際のエンドポイントに置き換えます。
複数のエンドポイントを保護する場合は、次のコマンドを実行します。
一時的に使用するopenssl.cn fファイルをコピーします。
cp /etc/pki/tls/openssl.cn f /tmp/openssl.cn f説明Windowsオペレーティングシステムでは、openssl.cn fファイルはOpenSSLインストールディレクトリ \bin\cnfに保存されます。 openssl.cn fファイルをコンピュータの別のディレクトリにコピーできます。
次のコマンドを実行してopenssl.cn fファイルを開きます。
vim /tmp/openssl.cn fiキーを押して編集モードに入ります。 次に、次の内容をopenssl.cn fファイルに追加します。
# Add the following content at the end of the [ req ] element. req_extensions = v3_req # Add the [ v3_req ] element. [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names # Add the [ alt_names ] element. Enter the endpoint that you want to protect following each Domain Name System (DNS) record. [ alt_names ] DNS.1 = pc-bpxxxxx.pg.rds.aliyuncs.com DNS.2 = pc-bpxxxxx.pg.rds.aliyuncs.comEscキーを押して編集モードを終了します。 次に、:wqと入力してopenssl.cn fファイルを保存し、終了します。サーバー証明書署名要求ファイル (server.csr) と、サーバー証明書署名要求ファイル (server.key) の秘密鍵を作成します。
openssl req -new -nodes -text -out server.csr -keyout server.key -config /tmp/openssl.cn fサーバー証明書要求ファイルの作成後、ビジネス要件に基づいてパラメーターを設定するように求められます。 下表に、各パラメーターを説明します。
パラメーター
説明
例
国名
クラスターが存在する国のコード。
CN
州または省名
クラスターが存在する州。
浙江省
ローカリティ名
クラスターが存在する都市。
杭州
組織名
クラスターを購入する企業の名前。
Alibaba
組織単位名
クラスターを使用する部門の名前。
Aliyun
共通名
SSL証明書の要求元のドメイン名。 ドメイン名はopenssl.cn fファイルで指定します。 このパラメーターを設定する必要はありません。
-
電子メールアドレス
このパラメーターを設定する必要はありません。
-
チャレンジパスワード
このパラメーターを設定する必要はありません。
-
オプションの会社名
このパラメーターを設定する必要はありません。
-
サーバー証明書 (server.crt) を作成します。
単一のエンドポイントを保護する場合は、次のコマンドを実行します。
openssl x509 -req -in server.csr -text -days 365 -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt複数のエンドポイントを保護する場合は、次のコマンドを実行します。
openssl x509 -req -in server.csr -text -days 365 -CA ca.crt -CAkey ca.key-CAreateserial-out server.crt -extensions v3_req -extfile /tmp/openssl.cn f
上記の設定を完了したら、lsコマンドを実行して生成されたファイルを表示します。
# ls
ca.crt ca.key ca.srl server.crt server.csr server.key 4つのファイルが生成されます。
server.crt: サーバー証明書。
server.key: サーバー証明書の秘密鍵。
ca.crt: 自己署名証明書。
ca.key: 自己署名証明書の秘密鍵。
手順2: 作成したカスタム証明書を使用してSSLを有効にする
PolarDB コンソールにログインします。
[クラスター] ページの左上隅で、管理するクラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、クラスターIDをクリックします。
左側のナビゲーションウィンドウで、[設定と管理] > [セキュリティ] を選択します。
[SSL設定] タブで、カスタム証明書を保護するプライマリまたはクラスターエンドポイントを選択し、[SSLステータス] をオンにするか、[データベース証明書の設定] をクリックしてSSLを有効にします。
[データベース証明書の設定] ダイアログボックスで、[カスタム証明書] を選択し、サーバー証明書と秘密鍵のパラメーターを設定し、[OK] をクリックします。

下表に、各パラメーターを説明します。
パラメーター
説明
サーバー証明書
サーバー証明書の内容を入力します。 サーバー証明書の取得方法については、「手順1: カスタム証明書の作成」「」をご参照ください。 すべてのコンテンツを ----- BEGIN CERTIFICATE ----- から ---- END CERTIFICATE ----- にこのフィールドにコピーします。
サーバー証明書の秘密鍵
サーバー証明書の秘密鍵の内容を入力します。 サーバー証明書の秘密鍵を取得する方法については、「手順1: カスタム証明書の作成」をご参照ください。 すべてのコンテンツを ----- BEGIN PRIVATE KEY ----- から ---- END PRIVATE KEY ----- にこのフィールドにコピーします。
証明書の作成時に保護する複数のエンドポイントを指定した場合、SSL保護エンドポイントパラメーターで複数のレコードを見つけることができます。

ステップ3: クライアントからクラスターに接続する
SSL経由で PolarDB for PostgreSQLに接続できます。 詳細については、「SSL経由でPolarDB For PostgreSQLクラスターに接続する」「」をご参照ください。
ステップ4: (オプション) カスタム証明書の変更
カスタム証明書を変更すると、一時的な接続が発生する場合があります。 作業は慎重に行ってください。
カスタム証明書を変更する場合は、[SSL設定] ページに移動します。 プライマリエンドポイントまたはクラスターエンドポイントを見つけ、[データベース証明書の設定] をクリックします。 表示されるダイアログボックスで、新しい証明書のパスと新しい証明書の秘密鍵を入力し、[OK] をクリックします。

ステップ5: (オプション) SSLを無効にする
SSLを無効にすると、一時的な接続が発生する場合があります。 作業は慎重に行ってください。
SSLを無効にするには、SSL設定ページに移動します。 プライマリエンドポイントまたはクラスターエンドポイントを見つけ、SSLステータスをオフにします。 [SSLの無効化] メッセージで、[OK] をクリックします。
