RDB:SSL接続の利用
SSL暗号化を利用することができます。SSL接続は、クライアントとDBサーバー間の通信を暗号化するためだけに利用してください。認証の仕組みは別途必要です。
SSL通信を経由してDBサーバーを利用するには、下記の手順を実施する必要があります。
MySQLエンジンのDBサーバーでSSL接続を利用する
DBサーバーを作成する際に、SSL証明書の作成と DBサーバーへのインストールが行われます。
証明書は認証局によって署名されています。公開鍵は下記よりダウンロードしてご利用ください。
標準のmysqlクライアントを利用して暗号化通信を行うには、mysqlコマンドを起動する際に–ssl_caパラメーターで公開鍵のパスを指定してください。下記は一例です。
mysql -h XXX.XXX.XXX.XXX(払い出されたIPアドレス) --ssl_ca=rdb-combined-ca-bundle.pem
GRANTステートメントを利用し、特定のユーザーに対してSSL接続を必須にすることができます。
下記は、encrypted_userというアカウントに対して、SSL接続を必須とする場合のSQL実行例です。
GRANT USAGE ON *.* TO `encrypted_user`@`%` REQUIRE SSL
PostgreSQLエンジンのDBサーバーでSSL接続を利用する
- 下記より公開鍵をダウンロードします。
- 公開鍵をクライアント側の~/.postgresql/root.crtに配置
SSL通信を経由してPostgreSQLエンジンのDBサーバーに接続するには接続文字列に”sslmode=verify-ca”を追加します。(※)
※ psqlでは、sslmodeのデフォルト値はpreferとなります。この場合、証明書の検証が行われません。そのため、SSL証明書の有効期限が切れた場合でも接続することは可能ですが、安全性確保の観点から、sslmode=verify-caに設定し、公開鍵を使用してSSL接続することが推奨されます。
下記は、psqlコマンドでSSL接続を行う場合の入力例です。
psql "sslmode=verify-ca host=XXX.XXX.XXX.XXX(DBサーバーのIPアドレス) user=(マスターユーザー名) dbname=(DB名)"
接続が暗号化されているかどうかは、接続時のログインバナーに表示されています。
psql (8.4.18, サーバ 13.8)
注意: psql バージョン 8.4, サーババージョン 13.8.
psql の機能の中で、動作しないものがあるかもしれません。
SSL 接続 (暗号化方式: DHE-RSA-AES256-SHA, ビット長: 256)
"help" でヘルプを表示します.
postgres=>
sslinfoエクステンションを読みこんで、ssl_is_used()関数を呼び出し、SSLが利用されているかどうかを確認することもできます。
接続にSSLが利用されている場合にはtrue(t)、そうでない場合にはfalse(f)を返却します。
postgres=> create extension sslinfo;
CREATE EXTENSION
postgres=> select ssl_is_used();
ssl_is_used
-------------
t
(1 行)
DBサーバーの属するDBパラメーターグループで、SSLパラメーターがtrueに設定されている場合(デフォルトはtrue)は、
下記のコマンドを利用してパラメーターの値を表示することができます。
postgres=> show ssl;
ssl
-----
on
(1 行)
公開鍵ダウンロード
・SSL通信に必要な公開鍵は下記よりダウンロードしてご利用ください。(rdb-ca-2023-root.pem)
MySQLエンジン/PostgreSQLエンジン公開鍵(2023)
・古い公開鍵と新しい公開鍵の両方を含む公開鍵は下記よりダウンロードしてご利用ください。(rdb-combined-ca-bundle-2023.pem)
MySQLエンジン/PostgreSQLエンジン公開鍵(2018,2023)