ApsaraDB RDS for MySQLインスタンスにSSL暗号化機能を設定する場合、Alibaba Cloudによって管理されている証明書とカスタム証明書を使用できます。 このトピックでは、カスタム証明書を使用してRDSインスタンスのSSL暗号化を有効にする方法について説明します。
前提条件
OpenSSLがインストールされています。
RDSインスタンスは、次のMySQLバージョンとRDSエディションのいずれかを実行します。
RDS High-availability EditionのMySQL 8.0、MySQL 5.7、またはMySQL 5.6
RDS Cluster EditionのMySQL 8.0またはMySQL 5.7
RDS Basic EditionのMySQL 8.0またはMySQL 5.7
Linuxを使用する場合は、OpenSSLがプリインストールされます。 OpenSSLを再度インストールする必要はありません。
Windowsを使用する場合は、OpenSSLパッケージを入手してOpenSSLをインストールする必要があります。
使用上の注意
SSL暗号化を有効にすると、CPU使用率と読み取りおよび書き込みのレイテンシが増加します。
SSL暗号化を有効にした後、SSL暗号化を有効にするには、既存の接続を閉じて新しい接続を確立する必要があります。
カスタム証明書を設定または変更するか、SSL暗号化を無効にすると、RDSインスタンスが再起動されます。 再起動には約3分かかります。 オフピーク時に操作を実行することを推奨します。
設定プロセス
手順1: カスタム証明書の取得
サーバー証明書または自己署名証明書の秘密鍵を作成するときは、秘密鍵にパスワードを追加しないでください。 秘密鍵にパスワードを追加すると、SSL暗号化を有効にできません。
証明書の生成方法を説明する例としてCentOSを使用します。
Windowsオペレーティングシステムを使用している場合は、CentOSオペレーティングシステムで使用しているのと同じ方法で、次のopenssl
コマンドを実行できます。 さらに、cp
およびvim
コマンドを使用する代わりに、コマンドを手動でコピーまたは編集する必要があります。
自己署名証明書と自己署名証明書の秘密鍵を作成します。 自己署名証明書は、server-ca.crtという名前のファイルに保存されます。 秘密鍵はserver-ca.keyという名前のファイルに保存されます。
openssl req -new -x509 -days 365 -nodes -out server-ca.crt -keyout server-ca.key -subj "/CN=root-ca"
証明書署名要求 (CSR) ファイルとサーバー証明書の秘密鍵を作成します。 CSRファイルの名前はserver.csrです。 秘密鍵はserver.keyという名前のファイルに保存されます。
カスタム証明書を使用して、1つのエンドポイントのみを保護できます。 ビジネス要件に基づいてCSRファイルを生成するには、次のコマンドを実行します。
openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/CN=rm-bpxxxxx.mysql.rds.aliyuncs.com"
説明rm-bpxxxxx.mysql.rds.aliyuncs.com
を保護するエンドポイントに置き換えます。 エンドポイントの表示方法の詳細については、「インスタンスエンドポイントとポートの表示と管理」をご参照ください。server.csrファイルを作成すると、ビジネス要件に基づいてパラメーターを設定するように求められます。 下表に、各パラメーターを説明します。
パラメーター
説明
値の例
国名
国のコード。 国際標準化機構 (ISO) で定義されている2文字の国コードを指定します。
CN
州または省名
都道府県
浙江省
ローカリティ名
市町村
杭州
組織名
企業の名前。
Alibaba
組織単位名
部門の名前。
Aliyun
共通名
証明書を使用して保護するドメイン名。 ドメイン名はopenssl.cn fファイルで指定します。 このパラメーターを設定する必要はありません。
-
電子メールアドレス
このパラメーターを設定する必要はありません。
-
チャレンジパスワード
このパラメーターを設定する必要はありません。
-
オプションの会社名
このパラメーターを設定する必要はありません。
-
サーバー証明書を作成します。 サーバー証明書はserver.crtという名前のファイルに保存されます。
エンドポイントを保護する場合は、次のコマンドを実行します。
openssl x509 -req -in server.csr -text -days 365 -CA server-ca.crt -CAkey server-ca.key -CAcreateserial -out server.crt
設定が完了したら、ls
コマンドを実行して生成されたファイルを表示します。
# ls
server-ca.crt server-ca.key ca.srl server.crt server.csr server.key
次のリストは、ファイルを示しています。
server.crt: サーバー証明書を含むファイル
server.key: サーバー証明書の秘密鍵を含むファイル
server-ca.crt: 自己署名証明書を含むファイル
server-ca.key: 自己署名証明書の秘密鍵を含むファイル
手順2: SSL暗号化を有効にするカスタム証明書の設定
カスタム証明書を設定すると、RDSインスタンスのステータスが [SSL設定の変更] に変わります。 RDSインスタンスは3分間状態のままです。 RDSインスタンスが [実行中] 状態になるまで待ってから、以降の操作を続行します。
ApsaraDB RDSコンソールにログインし、[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDSインスタンスが存在するリージョンを選択し、RDSインスタンスを見つけて、インスタンスIDをクリックします。
表示されるページの左側のナビゲーションウィンドウで、[データセキュリティ] をクリックします。 表示されるページで、[SSL] タブをクリックします。
[カスタム証明書] をクリックします。 次に、[無効] の横にあるスイッチをクリックします。 表示されるダイアログボックスで、[サーバー証明書] および [サーバー証明書の秘密鍵] パラメーターを設定し、[OK] をクリックします。
パラメーター
説明
サーバー証明書
作成したserver.crtファイルの内容を入力します。 詳細については、「手順1: カスタム証明書の作成」をご参照ください。 ----- BEGIN CERTIFICATE ----- から ----- END CERTIFICATE ----- までのすべてのコンテンツがこのフィールドにコピーされていることを確認します。
サーバー証明書の秘密鍵
作成したserver.keyファイルの内容を入力します。 詳細については、「手順1: カスタム証明書の作成」をご参照ください。 ----- BEGIN PRIVATE KEY ----- から ----- END PRIVATE KEY ----- までのすべてのコンテンツがこのフィールドにコピーされていることを確認します。
設定が完了すると、次の図のような情報が表示されます。
ステップ3: クライアントからRDSインスタンスに接続する
SSL経由でRDSインスタンスに接続できます。 詳細については、「SSL経由でApsaraDB RDS For MySQLインスタンスに接続する」をご参照ください。
ステップ4: (オプション) 作成したカスタム証明書を更新する
カスタム証明書を更新すると、MySQL 8.0を使用しない限り、RDSインスタンスは再起動されます。 作業は慎重に行ってください。
カスタム証明書を更新する場合は、[SSL] タブの [SSLの更新] をクリックします。 表示されるダイアログボックスで、サーバー証明書とサーバー証明書の秘密鍵のパラメーターを設定します。
ステップ5: (オプション) SSL暗号化を無効にする
この操作により、RDSインスタンスの再起動がトリガーされます。 作業は慎重に行ってください。
SSL暗号化を無効にする場合は、SSLタブの [有効] の横にあるスイッチをクリックします。
よくある質問
カスタム証明書の有効期限が切れた場合はどうすればよいですか。
ApsaraDB RDS for MySQLのカスタム証明書の有効期間はユーザー定義です。 証明書の有効期限が切れる前にシステムが通知を送信します。 通知を受け取った後、ワークロードへの影響を防ぐために、証明書の有効期間をできるだけ早く更新することを推奨します。