PolarDB for PostgreSQL を使用すると、SSL (Secure Sockets Layer) を設定して通信を暗号化し、データ伝送のセキュリティを確保できます。 このトピックでは、プライマリエンドポイントまたはクラスターエンドポイントでクラスターのSSLを有効にする方法について説明します。 クラスターの [セキュリティ> SSL設定] ページで、プライマリエンドポイントまたはクラスターエンドポイントのクラスターのSSLを有効または無効にできない場合は、[SSL暗号化の設定] を参照して、必要な操作を実行します。
背景情報
SSLは、通信を暗号化し、データセキュリティを確保するために開発されたプロトコルです。 SSL 3.0を開始すると、プロトコルの名前がTransport Layer Security (TLS) に変更されます。 このトピックでは、クラウド証明書を使用してクラスターのSSLを設定する方法について説明します。
PolarDB for PostgreSQLのPolarProxy クラスターは、TLS 1.0、TLS 1.1、TLS 1.2、およびTLS 1.3をサポートしています。
PolarDB for PostgreSQL クラスターでは、次の証明書を使用してSSLを設定できます。
項目 | クラウド証明書 | カスタム証明書 | クライアントCA証明書 |
URL の取得方法 | Alibaba Cloudによって発行されました。 | 認証局 (CA) または自己署名証明書から発行されます。 | 自己署名証明書から発行されます。 |
有効期間 | 365日。 | カスタム。 | カスタム。 |
保護されたエンドポイントの数 | 1以上。 | 1以上。 | 使用されるクラウドまたはカスタム証明書によって異なります。 |
目的 | SSLを有効にし、クライアントがクラスターを認証できるようにします。 | SSLを有効にし、クライアントがクラスターを認証できるようにします。 | クラスターがクライアントの認証に使用します。 |
クラウド証明書、カスタム証明書、またはクライアント証明書を使用してクラスターのSSLを構成するには、クラスターが要件を満たすバージョンを実行していることを確認します。 プライマリエンドポイントとクラスターエンドポイントの要件は異なります。 クラスターバージョンが要件を満たしていない場合は、クラウド証明書を使用してのみクラスターのSSLを設定できます。
SSLを有効にするには、クラウド証明書またはカスタム証明書を設定する必要があります。
クラスターは、クライアントの認証にクライアントCA証明書を使用します。 ビジネス要件に基づいてクライアントCA証明書を設定できます。
前提条件
クラスターは、PolarDB for PostgreSQL 14、15以降を実行します。 クラスターがPolarDB for PostgreSQL 14を実行している場合、リビジョンバージョンは14.10.21.0以降です。 これらのバージョンのクラスターでは、プライマリエンドポイントでカスタム証明書またはクライアントCA証明書を設定できます。 以前のバージョンのクラスターでは、クラウド証明書のみを設定できます。
PolarProxyのバージョンは2.3.51以降です。 PolarProxyのバージョンが2.3.51以降の場合にのみ、デフォルトのクラスターエンドポイントまたはカスタムエンドポイントでカスタム証明書またはクライアントCA証明書を設定できます。 PolarProxyバージョンが2.3.51より前の場合は、クラウド証明書のみを設定できます。
pgAdmin 4がダウンロードされます。
使用上の注意
SSLクラウド証明書の有効期間は1年です。 クラウド証明書の有効期限が近づいている場合は、できるだけ早く証明書を更新し、CA証明書をダウンロードして再設定します。 そうしないと、クライアントはSSL経由でクラスターに接続できない場合があります。
SSLは、CPU使用率の大幅な増加を引き起こす可能性があります。 クラスターのパブリックエンドポイントへの接続を暗号化する場合にのみ、SSLを有効にすることを推奨します。 ほとんどの場合、クラスターの内部エンドポイントへの接続は安全であり、SSL暗号化は必要ありません。
SSLを有効にした後、既存の接続を閉じ、SSLの新しい接続を確立して接続を有効にします。
クラウド証明書を有効にする、クラウド証明書を更新する、クラウド証明書で保護されているエンドポイントを変更する、またはSSLを無効にすると、一時的な接続が発生する場合があります。 オフピーク時に操作を実行することを推奨します。
手順1: クラウド証明書を使用したSSLの有効化
PolarDB コンソールにログインします。
[クラスター] ページの左上隅で、管理するクラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、クラスターIDをクリックします。
左側のナビゲーションウィンドウで、[設定と管理] > [セキュリティ] を選択します。
[SSL設定] タブで、プライマリエンドポイントまたはクラスターエンドポイントを選択し、[SSLステータス] をオンにするか、[データベース証明書の設定] をクリックしてSSLを有効にします。
[データベース証明書の設定] ダイアログボックスで、クラウド証明書とSSLを有効にするエンドポイントを選択します。
[OK] をクリックします。 クラスターのステータスが [実行中] に変わるまで待ちます。

ステップ2: CA証明書のダウンロード
PolarDB for PostgreSQL クラスターは、クラスターのクラウド証明書を有効にした後にダウンロードできるクラスターCA証明書を提供します。 リモートクライアントからPolarDB for PostgreSQL クラスターに接続する場合、クラスターCA証明書を使用してクラスターを認証できます。
[SSL設定] タブで、[クラウド証明書] の横にある [証明書のダウンロード] をクリックして証明書をダウンロードします。

ダウンロードしたCA証明書を解凍します。 ダウンロードしたファイルは、次のファイルを含むパッケージです。
P7Bファイル: WindowsオペレーティングシステムにインポートできるCA証明書が含まれています。
PEMファイル: Windows以外のオペレーティングシステムまたはWindowsで実行されていないアプリケーションにインポートできるCA証明書が含まれています。
JKSファイル: Javaトラストストアファイル。 パスワードは、「apsaradb」 です。 このファイルは、CA証明書チェーンをJavaプログラムにインポートするために使用されます。
説明JavaでJKS証明書ファイルを使用する場合は、JDK 7およびJDK 8のデフォルトのJDKセキュリティ構成を変更する必要があります。 PolarDBクラスターに接続するサーバーの
jre/lib/security/java.securityファイルで、次の2つの設定を変更します。jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 224 jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024設定を変更しない場合、次のエラーが返されます。 ほとんどの場合、他の同様のエラーも無効なJavaセキュリティ設定によって発生します。
javax.net.ssl.SSLHandshakeException: DHPublicKey does not comply to algorithm constraints
手順3: クライアントからクラスターに接続
この例では、pgAdminを使用して、SSL経由でPolarDB for PostgreSQL クラスターに接続します。
psqlやJava Database Connectivity (JDBC) などの複数の方法を使用して、PolarDB for PostgreSQL クラスターに接続できます。 詳細については、「SSL経由でPolarDB For PostgreSQLクラスターに接続する」「」をご参照ください。
PolarDB for PostgreSQL クラスターに接続する前に、クラスターのホワイトリストとユーザーが設定されていることを確認してください。 詳細については、クラスターのホワイトリストの設定およびデータベースアカウントの作成をご参照ください。
次の例では、pgAdmin 4 V6.2.0を使用してクラスターに接続します。 この例のスクリーンショットがクライアントのスクリーンショットと異なる場合は、公式ドキュメントの指示に基づいてSSL関連のパラメーターを設定できます。
pgAdmin 4を起動します。
説明新しいバージョンのpgAdminに初めてログオンするときは、マスターパスワードを指定して、保存したパスワードやその他の資格情報を保護する必要があります。
[サーバー] を右クリックし、[登録] > [サーバー...] を選択します。

[登録-サーバー] ダイアログボックスの [全般] タブで、pgAdminがインストールされているサーバーの名前を入力します。

[接続] タブをクリックし、クラスターへの接続に使用するパラメーターを設定します。 下表に、各パラメーターを説明します。

パラメーター
説明
ホスト名 /アドレス
SSLが有効になっているPolarDB for PostgreSQL クラスターのプライマリエンドポイントまたはクラスターエンドポイントとポート番号。
内部ネットワーク経由でクラスターに接続する場合は、クラスターの内部エンドポイントと内部ポートを入力します。
インターネット経由でクラスターに接続する場合は、クラスターのパブリックエンドポイントとパブリックポートを入力します。
ポート
ユーザー名
PolarDB for PostgreSQL クラスターのアカウントとパスワード。
パスワード
[パラメーター] タブで、SSLモードとルート証明書のパラメーターを設定します。 下表に、各パラメーターを説明します。
パラメーター
説明
SSL mode
セキュリティ上の理由から、このパラメーターをRequire、Verify-CA、またはVerify-Fullに設定することを推奨します。
Require: データ接続を暗号化し、クラスターを認証しません。
Verify-CA: データ接続を暗号化し、クラスターを認証します。
Verify-Full: データ接続を暗号化し、クラスターを認証し、証明書で指定されたCommon Name (CN) またはDomain Name System (DNS) がHost name/addressパラメーターの値と一致しているかどうかを確認します。
ルート証明書
クラスターCA証明書のパスを入力します。 SSL modeパラメーターをVerify-CAまたはVerify-Fullに設定した場合、このパラメーターを設定する必要があります。
説明この例では、クラスターCA証明書へのパスはD:\CA\aliyunCA \です。 ビジネス要件に基づいてパスを変更できます。
pgAdminはPEM形式のクラスターCA証明書を使用します。
[保存] をクリックします。
入力した情報が正しい場合は、次の図のようなページが表示され、クラスターへの接続が成功したことが示されます。
重要postgresデータベースは、PolarDB for PostgreSQL クラスターのデフォルトのシステムデータベースです。 データベースに対して操作を実行しないでください。
手順4: (オプション) クラウド証明書の更新
クラウド証明書を更新するには、次の手順を実行します。
PolarDB コンソールにログインします。
[クラスター] ページの左上隅で、管理するクラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、クラスターIDをクリックします。
左側のナビゲーションウィンドウで、[設定と管理] > [セキュリティ] を選択します。
[SSL設定] タブで、プライマリエンドポイントまたはクラスターエンドポイントを選択し、[有効期間の更新] をクリックします。
表示されたメッセージボックスで、[OK] をクリックします。
説明証明書を更新すると、クラスターが再起動されます。 作業は慎重に行ってください。
証明書を更新したら、証明書をダウンロードして再構成します。
ステップ5 :( オプション) SSLの無効化
SSLを無効にすると、クラスターが再起動し、一時的な接続が発生する可能性があります。 作業は慎重に行ってください。
SSLを無効にするには、次の手順を実行します。
PolarDB コンソールにログインします。
[クラスター] ページの左上隅で、管理するクラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、クラスターIDをクリックします。
左側のナビゲーションウィンドウで、[設定と管理] > [セキュリティ] を選択します。
[SSL設定] タブで、SSLを無効にするプライマリエンドポイントまたはクラスターエンドポイントを見つけ、SSLステータスをオフにします。
