このトピックでは、SSL (Secure Sockets Layer) 暗号化を設定してデータ伝送のセキュリティを強化する方法について説明します。 SSL暗号化を有効にし、認証局 (CA) によって発行されたSSL証明書を必要なアプリケーションにインストールする必要があります。 SSLは、トランスポート層で接続を暗号化し、送信データのセキュリティと整合性を強化するために使用されます。 しかし、SSL暗号化はラウンドトリップ時間を増加させる。
背景情報
SSLは、webサーバーとブラウザ間の暗号化通信をサポートするためにNetscapeによって開発されました。 SSLは、RC4、MD5、RSAなどのさまざまな暗号化アルゴリズムをサポートします。 インターネットエンジニアリングタスクフォース (IETF) は、SSL 3.0をトランスポート層セキュリティ (TLS) にアップグレードしました。 ただし、業界では「SSL暗号化」という用語がまだ使用されています。 このトピックでは、SSL暗号化はTLS暗号化を指します。
使用上の注意
SSL証明書の有効期間は1年です。 SSL証明書の有効期限が切れる前に、SSL証明書を更新する必要があります。 また、必要なSSL証明書ファイルをダウンロードし、SSL証明書を更新した後にSSL証明書を再設定する必要があります。 それ以外の場合、暗号化された接続を介してクラスターに接続されているクライアントは切断されます。 SSL証明書を更新する方法の詳細については、「SSL証明書の更新」をご参照ください。
SSL暗号化は、CPU利用率の大幅な増加を引き起こし得る。 クラスターのパブリックエンドポイントに対して確立されている接続を暗号化する場合にのみ、SSL暗号化を有効にすることを推奨します。 ほとんどの場合、クラスターの内部エンドポイントへの接続は安全であり、SSL暗号化は必要ありません。
SSL暗号化が有効になっているエンドポイントを変更すると、SSL証明書が自動的に更新され、クラスターが再起動されます。 作業は慎重に行ってください。
SSL証明書を更新すると、クラスターは自動的に再起動されます。 作業は慎重に行ってください。
SSL暗号化を有効にするには、PolarDBクラスターのエンドポイントの長さが64文字未満である必要があります。 エンドポイントを変更する方法の詳細については、「PolarProxyの設定」をご参照ください。
SSL暗号化の有効化とSSL証明書のダウンロード
にログインします。PolarDBコンソール.
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
左側のナビゲーションウィンドウで、 .
On theSSL設定タブ、オンにするSSLSSL暗号化を有効にします。
説明PolarDB for MySQL 8.0、5.7、および5.6クラスターのプライマリエンドポイント、クラスターエンドポイント、およびカスタムエンドポイントに対してSSL暗号化を有効にできます。
では、SSLの設定ダイアログボックスで、SSL暗号化を有効にするエンドポイントを選択し、OK.
説明必要に応じて、パブリックエンドポイントまたは内部エンドポイントを選択できます。 ただし、選択できるエンドポイントは1つだけです。
SSL暗号化の状態が有効をクリックします。証明書のダウンロード.
ダウンロードしたファイルは、次のファイルを含むパッケージです。
P7Bファイル。 このファイルは、CA証明書をWindowsシステムにインポートするために使用されます。
PEMファイル。 このファイルは、CA証明書をWindows以外のオペレーティングシステムまたはWindowsで実行されていないアプリケーションにインポートするために使用されます。
JKSファイル。 このファイルはJavaのトラストストアです。 パスワードは、「apsaradb」 です。 このファイルは、CA証明書チェーンをJavaプログラムにインポートするために使用されます。
説明JavaでJKS証明書ファイルを使用するには、JDK 7およびJDK 8のデフォルトのJDKセキュリティ構成を変更する必要があります。 これは、PolarDBクラスターに接続するサーバーの
jre/lib/security/java.security
ファイルの次の設定を更新することで実行できます。jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 224 jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
これらの設定を変更しない場合、次のエラーが返されます。 ほとんどの場合、他の同様のエラーも無効なJavaセキュリティ設定によって発生します。
javax.net.ssl.SSLHandshakeException: DHPublicKeyはアルゴリズム制約に準拠していません
SSL暗号化が有効になっているエンドポイントを変更する場合は、[SSLの設定] をクリックします。
重要SSL暗号化が有効になっているエンドポイントを変更すると、SSL証明書が自動的に更新され、クラスターが再起動されます。 作業は慎重に行ってください。
SSL証明書の設定
SSL暗号化を有効にした後、SSL証明書を設定する必要があります。 SSL証明書は、アプリケーションまたはクライアントがPolarDBクラスターに接続するために必要です。 このセクションでは、MySQL WorkbenchとNavicatを例として使用して、SSL証明書を設定する方法を説明します。 他のアプリケーションやクライアントを使用する場合は、関連する手順を参照してください。
MySQL WorkbenchでSSL証明書を設定するには、次の手順を実行します。
MySQL Workbenchを起動します。
選択 .
有効化SSLの使用SSL証明書ファイルをインポートします。
NavicatでSSL証明書を設定するには、次の手順を実行します。
Navicatを開始します。
データベースを右クリックし、接続の編集.
をクリックし、SSLタブをクリックし、次の図に示すようにPEM証明書ファイルのパスを選択します。
[OK] をクリックします。
説明既存の接続を閉じない場合は、
同じ接続名の接続が既にプロジェクトに存在します。
エラーになります。 この場合、Navicatを閉じてからもう一度開く必要があります。データベースをダブルクリックして、Navicatがデータベースに接続できるかどうかを確認します。
SSL証明書の更新
このセクションでは、SSL証明書を更新する方法について説明します。 SSL暗号化が有効になっているエンドポイントを変更した後、またはSSL証明書の有効期限が近づいたときに、SSL証明書を更新する必要があります。
SSL証明書を更新すると、クラスターは自動的に再起動されます。 作業は慎重に行ってください。
にログインします。PolarDBコンソール.
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
左側のナビゲーションウィンドウで、 .
On theSSL設定タブをクリックします。有効期間の更新.
表示されるメッセージで、OK.
SSL証明書を更新したら、SSL証明書をダウンロードして再度設定します。
説明SSL証明書をダウンロードする方法の詳細については、「SSL暗号化の有効化とSSL証明書のダウンロード」の手順7をご参照ください。
SSL証明書の設定方法の詳細については、「SSL証明書の設定」をご参照ください。
自動証明書ローテーションの有効化
自動証明書ローテーションが有効になった後、PolarDBは、証明書の有効期限前の10日以内に、クラスターのメンテナンス期間中にSSL証明書を自動的に更新します。
自動証明書ローテーションを有効にすると、SSL証明書の更新後にクラスターが自動的に再起動されます。 作業は慎重に行ってください。
[SSL設定] タブで、[詳細設定] をクリックします。
[詳細設定] ダイアログボックスで [自動証明書ローテーション] を選択し、[確認] をクリックします。
SSL 暗号化の無効化
SSL暗号化を無効にすると、クラスターが再起動されます。 そのため、ピーク時間外に操作を実行することを推奨します。
SSL暗号化を無効にすると、クラスターのパフォーマンスは向上しますが、データのセキュリティは低下します。 安全な環境でのみSSL暗号化を無効にすることを推奨します。
にログインします。PolarDBコンソール.
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
左側のナビゲーションウィンドウで、 .
On theSSL設定タブ、オフにするSSLSSL暗号化を無効にします。
表示されるメッセージで、OK.
SSL暗号化スイートの表示
SSLプロトコルには多くのバージョンがあります。 PolarDBはTLS V1.2以降のみをサポートします。 SSLハンドシェイク中に、クライアントはTLSバージョン、暗号化スイート、セッションキーなどのネゴシエーション情報をPolarDBクラスターと交換します。 サポートされているすべての暗号化スイートの詳細については、OpenSSL公式Webサイトをご覧ください。
SSL接続が確立されたら、次のステートメントを実行して、接続に使用されるSSL暗号化スイートを表示できます。
「ssl_cipher」のようなステータスを表示します。+ --------------- + ------------------- +
| Variable_name | 値 |
+ --------------- + ------------------- +
| Ssl_cipher | AES128-GCM-SHA256 |
+ ---------------
接続が暗号化されていない場合、ステートメントは空の変数を返します。
関連する API 操作
API 操作 | 説明 |
PolarDBクラスターのSSL暗号化設定を照会します。 | |
SSL暗号化を有効または無効にするか、PolarDBクラスターのSSL証明書を更新します。 |