この記事では、SSLリンク暗号化の操作手順について説明します。
背景
リンクのセキュリティを向上させるため、OceanBaseデータベース接続はSSL(Secure Sockets Layer)暗号化の有効化をサポートしています。これにより、伝送層でネットワーク接続を暗号化し、通信データのセキュリティを強化します。SSL接続を有効にした後、クライアントもSSL接続を使用してアクセスすることを要求する設定が可能です。
説明
- SSLリンク暗号化を有効にすると、インスタンスのパフォーマンスがわずかに低下します(証書の暗号化および復号化には一定の計算リソースが消費されるため)。外部ネットワークへの接続が必要な場合や、伝送暗号化が求められる場合にのみ、インスタンスのSSLリンク暗号化を有効にすることを推奨します。
- SSLリンク暗号化機能は、直接接続アドレスには適用されません。
TLSバージョンの説明
TLS(Transport Layer Security)は、インターネット通信のプライバシーとデータセキュリティを保護するために広く採用されている伝送層セキュリティプロトコルです。TLSプロトコルには多くのバージョンがあり、JDKとMySQL Connector/Jの組み合わせによって、TLSのサポート状況は異なります。
JDKバージョン |
MySQL Connector/Jバージョン |
TLSv1.0 |
TLSv1.1 |
TLSv1.2 |
TLSv1.3 |
|---|---|---|---|---|---|
| JDK 8< 8u291 | - | サポート | サポート | サポート | 非サポート |
| JDK 8:8u291 ~ 8u333 | - | 非サポート | 非サポート | サポート | 非サポート |
| JDK 8>= 8u341 | < 8.0.19 | 非サポート | 非サポート | サポート | 非サポート |
| JDK 8>= 8u341 | = 8.0.19 | 非サポート | 非サポート | サポート | サポート |
| JDK 9 | - | サポート | サポート | サポート | 非サポート |
| JDK 11 < 11.0.11 | < 8.0.19 | サポート | サポート | サポート | 非サポート |
| JDK 11 < 11.0.11 | >= 8.0.19 | サポート | サポート | サポート | サポート |
| JDK 11>= 11.0.11 | < 8.0.19 | 非サポート | 非サポート | サポート | 非サポート |
| JDK 11>= 11.0.11 | >= 8.0.19 | 非サポート | 非サポート | サポート | サポート |
説明
TLSv1.0とTLSv1.1は、2021年にIETFによって廃棄されました(RFC8996)。セキュリティ上の理由から、TLSv1.2以降のTLSプロトコルを使用した安全な通信を推奨します。
操作手順
OB Cloudデータベースコンソールにログインします。
左側のナビゲーションペインで**クラスターリストをクリックし、対象のクラスタを選択して、クラスターワークスペース**ページに移動します。
左側のナビゲーションペインで**セキュリティ**をクリックします。
セキュリティ設定画面では、デフォルトで**SSL暗号化**タブが表示されます。以下の操作を実行できます:

**SSL暗号化**スイッチをクリックしてSSLリンク暗号化を有効にします。有効化には約3〜5分かかります。
**SSL接続を強制する**スイッチをクリックします。有効にすると、非SSL接続がブロックされます。
**CA証明書をダウンロード**をクリックし、ダウンロードされるファイルは圧縮パッケージで、以下の3つのファイルが含まれています:
p7bファイル:WindowsシステムでCA証明書をインポートするために使用します。
PEMファイル:その他のシステムやアプリケーションでCA証明書をインポートするために使用します。
JKSファイル:Javaのtruststore証明書ストレージファイルで、パスワードはすべてOceanBaseとなります。JavaプログラムでCA証明書チェーンをインポートするために使用します。
JavaでJKS証明書ファイルを使用する場合、jdk7およびjdk8ではデフォルトのJDKセキュリティ設定を変更する必要があります。アプリケーションが配置されているホストの
jre/lib/security/java.securityファイルで、以下の2つの設定を変更します:jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 224 jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024JDKセキュリティ設定を変更しない場合、以下のエラーが発生します。その他の類似のエラーも、一般的にはJavaのセキュリティ設定が原因です。
javax.net.ssl.SSLHandshakeException: DHPublicKey does not comply to algorithm constraints
SSL証明書の有効期限の右側にある**アップデート**をクリックすると、SSL証明書の有効期限を更新できます。
**SSL証明書の有効期限を自動更新**スイッチをクリックします。有効にすると、証明書は満了日の7日前に自動的に更新され、更新ごとに有効期間は360日間となります。
**自動更新履歴を表示**をクリックすると、イベントセンターに移動し、証明書の自動更新に関する詳細情報を確認できます。
よくある質問
Javaプログラムの接続時にjavax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)というエラーが発生した場合、以下のいずれかの方法で解決できます:
- JDBC接続文字列のurlパラメータでTLSバージョンを指定します。例えば、enabledTLSProtocols=TLSv1.2を指定します。
- 使用しているJDKバージョンを1.8.0_291以下に下げます。