このトピックでは、Secure Sockets Layer(SSL)暗号化を構成することでデータ転送セキュリティを強化する方法について説明します。 SSL 暗号化を有効にし、認証局(CA)によって発行された SSL 証明書を必要なアプリケーションにインストールする必要があります。 SSL は、トランスポート層での接続を暗号化し、転送されるデータのセキュリティと整合性を強化するために使用されます。 ただし、SSL 暗号化は往復レイテンシを増加させます。
背景情報
SSL は、Web サーバーとブラウザ間の暗号化された通信をサポートするために Netscape によって開発されました。 SSL は、RC4、MD5、RSA など、さまざまな暗号化アルゴリズムをサポートしています。 インターネットエンジニアリングタスクフォース(IETF)は、SSL 3.0 を Transport Layer Security(TLS)にアップグレードしました。 ただし、「SSL 暗号化」という用語は、業界ではまだ使用されています。 このトピックでは、SSL 暗号化は TLS 暗号化を指します。
使用上の注意
SSL 証明書の有効期間は 1 年です。 SSL 証明書の有効期限が切れる前に、SSL 証明書を更新する必要があります。 また、SSL 証明書を更新した後、必要な SSL 証明書ファイルをダウンロードし、SSL 証明書を再度構成する必要があります。 そうしないと、暗号化された接続を介してクラスターに接続されているクライアントは切断されます。 SSL 証明書の更新方法の詳細については、「SSL 証明書の更新」をご参照ください。
SSL 暗号化は、CPU 使用率の大幅な増加を引き起こす可能性があります。 クラスターのパブリックエンドポイントへの接続を暗号化する必要がある場合にのみ、SSL 暗号化を有効にすることをお勧めします。 ほとんどの場合、クラスターの内部エンドポイントへの接続は安全であり、SSL 暗号化は必要ありません。
説明データ管理(DMS)を使用して PolarDB クラスターにログインして管理する場合、接続に SSL 暗号化は必要ありません。
SSL 暗号化が有効になっているエンドポイントを変更すると、SSL 証明書が自動的に更新され、クラスターが再起動されます。 注意して進めてください。
SSL 証明書を更新すると、クラスターは自動的に再起動されます。 注意して進めてください。
SSL 暗号化を有効にするには、PolarDB クラスターのエンドポイントの長さが 64 文字未満である必要があります。 エンドポイントの変更方法の詳細については、「PolarProxy の構成」をご参照ください。
SSL 暗号化の有効化と SSL 証明書のダウンロード
PolarDB コンソール にログインします。 左側のナビゲーションウィンドウで [クラスター] をクリックします。 左上隅でリージョンを選択し、リスト内のクラスターの ID をクリックして [概要] ページに移動します。
左側のナビゲーションウィンドウで、 を選択します。
[SSL の設定] タブで、[SSL] をオンにして SSL 暗号化を有効にします。
説明PolarDB for MySQL 8.0、5.7、および 5.6 クラスターのプライマリエンドポイント、クラスターエンドポイント、およびカスタムエンドポイントに対して SSL 暗号化を有効にできます。
[SSL の設定] ダイアログボックスで、SSL 暗号化を有効にするエンドポイントを選択し、[OK] をクリックします。
説明必要に応じて、パブリックエンドポイントまたは内部エンドポイントを選択できます。 ただし、選択できるエンドポイントは 1 つだけです。

SSL 暗号化の状態が [有効] に変わったら、[証明書のダウンロード] をクリックします。

ダウンロードしたファイルは、次のファイルを含むパッケージです。
P7B ファイル。 このファイルは、Windows システムに CA 証明書をインポートするために使用されます。
PEM ファイル。 このファイルは、Windows 以外のオペレーティングシステム、または Windows 上で実行されていないアプリケーションに CA 証明書をインポートするために使用されます。
JKS ファイル。 このファイルは、Java のトラストストアです。 パスワードは apsaradb です。 このファイルは、CA 証明書チェーンを Java プログラムにインポートするために使用されます。
説明Java で JKS 証明書ファイルを使用するには、JDK 7 および JDK 8 のデフォルトの JDK セキュリティ構成を変更する必要があります。
jre/lib/security/java.securityファイルで以下の構成を更新することで、PolarDB クラスターに接続するサーバーのこの変更を行うことができます。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
SSL 暗号化を有効にするエンドポイントを変更する場合は、[SSL の設定] をクリックします。
重要SSL 暗号化が有効になっているエンドポイントを変更すると、SSL 証明書が自動的に更新され、クラスターが再起動されます。 注意して進めてください。
SSL 証明書の構成
SSL 暗号化を有効にした後、SSL 証明書を構成する必要があります。 アプリケーションまたはクライアントが PolarDB クラスターに接続するには、SSL 証明書が必要です。 このセクションでは、MySQL Workbench と Navicat を例として使用して、SSL 証明書を構成する方法を説明します。 他のアプリケーションまたはクライアントを使用する場合は、関連する手順を参照してください。
MySQL Workbench で SSL 証明書を構成するには、次の手順を実行します。
MySQL Workbench を起動します。
を選択します。
[SSL の使用] を有効にし、SSL 証明書ファイルをインポートします。
Navicat で SSL 証明書を構成するには、次の手順を実行します。
Navicat を起動します。
データベースを右クリックし、[接続の編集] を選択します。

[SSL] タブをクリックし、次の図に示すように、PEM 証明書ファイルのパスを選択します。

[OK] をクリックします。
説明既存の接続を閉じないと、
Connection with same connection name already exists in the project.エラーが発生します。 この場合、Navicat を閉じてから再度開く必要があります。データベースをダブルクリックして、Navicat がデータベースに接続できるかどうかを確認します。

SSL 証明書の更新
このセクションでは、SSL 証明書を更新する方法について説明します。 SSL 暗号化が有効になっているエンドポイントを変更した後、または SSL 証明書の有効期限が切れそうな場合は、SSL 証明書を更新する必要があります。
SSL 証明書を更新すると、クラスターは自動的に再起動されます。 注意して進めてください。
PolarDB コンソール にログインします。左側のナビゲーションペインで [クラスター] をクリックします。左上隅でリージョンを選択し、リスト内のクラスターの ID をクリックして [概要] ページに移動します。
左側のナビゲーションウィンドウで、 を選択します。
[SSL の設定] タブで、[有効期間の更新] をクリックします。

表示されるメッセージで、[OK] をクリックします。
SSL 証明書が更新されたら、SSL 証明書を再度ダウンロードして構成します。
説明SSL 証明書のダウンロード方法の詳細については、「SSL 暗号化の有効化と SSL 証明書のダウンロード」の手順 7 を参照してください。
SSL 証明書の構成方法の詳細については、「SSL 証明書の構成」をご参照ください。
証明書の自動ローテーションを有効にする
証明書の自動ローテーションを有効にすると、PolarDB は、証明書の有効期限の 10 日前に、クラスターのメンテナンスウィンドウ中に SSL 証明書を自動的に更新します。
証明書の自動ローテーションを有効にすると、SSL 証明書の更新後にクラスターが自動的に再起動されます。 注意して進めてください。
[SSL の設定] タブで、[詳細設定] をクリックします。

[詳細設定] ダイアログボックスで、[証明書の自動ローテーション] を [オン] に選択し、[確定] をクリックします。

SSL 暗号化の無効化
SSL 暗号化を無効にすると、クラスターが再起動されます。 この操作は、オフピーク時に実行することをお勧めします。
SSL 暗号化を無効にすると、クラスターのパフォーマンスは向上しますが、データセキュリティが損なわれます。 安全な環境でのみ SSL 暗号化を無効にすることをお勧めします。
PolarDB コンソール にログインします。左側のナビゲーションウィンドウで [クラスター] をクリックします。左上隅でリージョンを選択し、リスト内のクラスターの ID をクリックして [概要] ページに移動します。
左側のナビゲーションウィンドウで、 を選択します。
[SSL の設定] タブで、[SSL] をオフにして SSL 暗号化を無効にします。
表示されるメッセージで、[OK] をクリックします。
SSL 暗号スイートの表示
SSL プロトコルには多くのバージョンがあります。 PolarDB は TLS V1.2 以降のみをサポートしています。 SSL ハンドシェイク中に、クライアントは PolarDB クラスターと TLS バージョン、暗号スイート、セッションキーなどのネゴシエーション情報を交換します。 サポートされているすべての暗号スイートの詳細については、OpenSSL 公式 Web サイト をご覧ください。
SSL 接続が確立された後、次のステートメントを実行して、接続に使用されている SSL 暗号スイートを表示できます。
SHOW STATUS LIKE 'ssl_cipher';
+---------------+-------------------+
| Variable_name | Value |
+---------------+-------------------+
| Ssl_cipher | AES128-GCM-SHA256 |
+---------------+-------------------+接続が暗号化されていない場合、ステートメントは空の変数を返します。
関連 API 操作
操作 | 説明 |
PolarDB クラスターの SSL 暗号化設定を照会します。 | |
PolarDB クラスターの SSL 暗号化を有効または無効にするか、SSL 証明書を更新します。 |