すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:SSL 暗号化の設定

最終更新日:Mar 01, 2026

デフォルトでは、クライアントアプリケーションと AnalyticDB for PostgreSQL インスタンス間で送信されるデータは、ネットワーク上をプレーンテキストで転送されます。SSL 暗号化は、これらの接続をトランスポート層で保護し、データ整合性を確保し、不正な傍受を防ぎます。

前提条件

開始する前に、以下をご確認ください。

注意事項

  • SSL 証明書の有効期間は 1 年間です。有効期限が切れる前に証明書を更新してください。証明書の有効期限が切れると、暗号化された接続を使用するアプリケーションはインスタンスに接続できなくなります。

  • SSL 暗号化により、CPU 使用率が大幅に増加し、ネットワークの往復レイテンシが増加する可能性があります。インスタンスへのパブリック接続を暗号化する必要がある場合にのみ、SSL を有効にしてください。

SSL 暗号化の有効化

警告

この操作によりインスタンスが再起動します。この操作はオフピーク時間帯に実行してください。

  1. AnalyticDB for PostgreSQL コンソールにログインします。

  2. コンソールの左上隅で、インスタンスが存在するリージョンを選択します。

  3. 対象のインスタンスを見つけ、その ID をクリックします。

  4. 左側のナビゲーションウィンドウで、[セキュリティコントロール] をクリックします。

  5. [SSL 暗号化] タブをクリックします。

  6. [SSL 暗号化] をオンにします。

  7. [SSL 暗号化の有効化] メッセージで、[OK] をクリックします。インスタンスが再起動します。再起動が完了し、SSL のステータスが [有効] と表示されたら、証明書のダウンロードに進みます。

  8. [証明書のダウンロード] をクリックします。

証明書ファイル

ダウンロードしたパッケージには、3 つの証明書ファイルが含まれています。

ファイルフォーマットユースケース
PEM ファイルPEMWindows 以外のアプリケーション:psql、Python、Go、Linux、または macOS クライアント
P7B ファイルPKCS#7Windows アプリケーション
JKS ファイルJava KeyStoreJava アプリケーション。デフォルトのトラストストアパスワード:apsaradb

JDK 7 と JDK 8 の設定

JDK 7 または JDK 8 で JKS ファイルを使用する場合は、アプリケーションホストの jre/lib/security/Java.security ファイルで次のプロパティを変更します。

jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 224
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024

この変更を行わないと、SSL ハンドシェイクは次のエラーで失敗します。

javax.net.ssl.SSLHandshakeException: DHPublicKey does not comply to algorithm constraints

SSL を使用した接続

SSL 暗号化を有効にして証明書をダウンロードした後、SSL を使用するようにクライアントを設定します。

psql

sslmode および sslrootcert パラメーターを使用して SSL で接続します。

psql "host=<your-instance-endpoint> port=<port> dbname=<database> user=<username> sslmode=verify-ca sslrootcert=<path-to-pem-file>"

次のプレースホルダーを置き換えます。

プレースホルダー説明
<your-instance-endpoint>インスタンスのエンドポイントgp-bp1xxxxx-master.gpdb.rds.aliyuncs.com
<port>サービスポート5432
<database>ターゲットデータベース名postgres
<username>データベースアカウントdbadmin
<path-to-pem-file>ダウンロードした PEM 証明書ファイルへのパス/home/user/certs/ca-cert.pem

JDBC

Java アプリケーションの場合、SSL パラメーターを JDBC 接続 URL に追加します。

jdbc:postgresql://<your-instance-endpoint>:<port>/<database>?sslmode=verify-ca&sslrootcert=<path-to-pem-file>

PEM ファイルの代わりに JKS ファイルを使用する場合は、トラストストアを JVM 引数として設定します。

java -Djavax.net.ssl.trustStore=<path-to-jks-file> \
     -Djavax.net.ssl.trustStorePassword=apsaradb \
     -jar your-application.jar

sslmode オプション

PostgreSQL クライアントは、次の sslmode 値をサポートしています。

sslmode暗号化証明書検証推奨
disableいいえいいえいいえ
allowサーバーが必要とする場合のみいいえいいえ
preferサーバーがサポートしている場合ははいいいえいいえ
requireはいいいえパブリック接続の最小要件
verify-caはいCA に対してサーバー証明書を検証はい
verify-fullはい証明書とホスト名を検証最も安全

パブリック接続の場合は、verify-ca または verify-full を使用してサーバー証明書を検証し、中間者攻撃を防ぎます。

SSL 接続の検証

SSL で接続した後、暗号化がアクティブであることを確認します。

psql ログインバナーの確認

psql で接続すると、ログインバナーに SSL 接続の詳細が表示されます。出力は次のようになります。

Password for user dbadmin:
psql (14.0)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.

SSL connection の行は、接続が暗号化されていることを示します。

接続ステータスのクエリ

すべてのアクティブな接続の SSL ステータスを表示するには、次を実行します。

SELECT datname, usename, ssl, client_addr
FROM pg_stat_ssl
JOIN pg_stat_activity ON pg_stat_ssl.pid = pg_stat_activity.pid
ORDER BY ssl;

ssl 列の値が t であることは、接続が SSL を使用していることを示します。

SSL 証明書の更新

SSL 証明書は 1 年後に有効期限が切れます。接続の失敗を避けるために、有効期限が切れる前に更新してください。

警告

この操作によりインスタンスが再起動します。この操作はオフピーク時間帯に実行してください。

  1. AnalyticDB for PostgreSQL コンソールにログインします。

  2. コンソールの左上隅で、インスタンスが存在するリージョンを選択します。

  3. 対象のインスタンスを見つけ、その ID をクリックします。

  4. 左側のナビゲーションウィンドウで、[セキュリティコントロール] をクリックします。

  5. [SSL 暗号化] タブをクリックします。

  6. [SSL 暗号化] の右側にある [有効期間の更新] をクリックします。

  7. [SSL 証明書の有効期間の更新] メッセージで、[OK] をクリックします。

インスタンスが再起動したら、新しい証明書をダウンロードし、すべてのクライアントアプリケーションで更新します。

SSL 暗号化の無効化

警告

この操作によりインスタンスが再起動します。この操作はオフピーク時間帯に実行してください。

  1. AnalyticDB for PostgreSQL コンソールにログインします。

  2. コンソールの左上隅で、インスタンスが存在するリージョンを選択します。

  3. 対象のインスタンスを見つけ、その ID をクリックします。

  4. 左側のナビゲーションウィンドウで、[セキュリティコントロール] をクリックします。

  5. [SSL 暗号化] タブをクリックします。

  6. [SSL 暗号化] をオフにします。

  7. [SSL 暗号化の無効化] メッセージで、[OK] をクリックします。

SSL を無効にした後、sslrootcert などの SSL 固有のパラメーターを削除するようにクライアント接続文字列を更新します。

トラブルシューティング

SSLHandshakeException: DHPublicKey does not comply to algorithm constraints

原因:デフォルトの JDK 7 または JDK 8 のセキュリティ設定が、サーバーで使用される DH キーサイズを拒否します。

解決策:jre/lib/security/Java.security ファイルを次のように変更します。

jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 224
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024

この変更を行った後、アプリケーションを再起動します。

SSL を有効にした後の接続拒否

原因:SSL が有効になった後、インスタンスがまだ再起動中です。

解決策:接続する前に、コンソールでインスタンスのステータスが [実行中] に戻るまで待ちます。

証明書の有効期限切れエラー

原因:SSL 証明書が 1 年間の有効期間を超えました。

解決策:コンソールで [有効期間の更新] をクリックして証明書を更新し、新しい証明書をダウンロードしてすべてのクライアントにデプロイします。

API リファレンス

操作説明
DescribeDBInstanceSSLインスタンスの SSL 暗号化設定を照会します
ModifyDBInstanceSSLSSL 暗号化の有効化、無効化、または SSL 証明書の更新を行います