ApsaraDB RDS for PostgreSQLでは、SSL暗号化はクラウド証明書とカスタム証明書をサポートします。 このトピックでは、ApsaraDB RDS for PostgreSQLインスタンスでSSL暗号化に使用されるカスタム証明書を設定する方法について説明します。
前提条件
RDSインスタンスはPostgreSQL 10以降を実行し、クラウドディスクを使用します。
OpenSSLがインストールされています。
説明LinuxオペレーティングシステムにはOpenSSLが提供されます。 Linuxオペレーティングシステムを使用している場合は、OpenSSLをインストールする必要はありません。 Windowsオペレーティングシステムを使用する場合は、OpenSSLソフトウェアパッケージをダウンロードしてOpenSSLをインストールする必要があります。 詳細については、「Win32/Win64 OpenSSL」ページをご参照ください。
使用上の注意
SSL暗号化を有効にすると、CPU使用率と読み取りおよび書き込みのレイテンシが増加します。
SSL暗号化を有効にしたら、既存の接続を閉じて新しい接続を確立し、SSL暗号化を有効にする必要があります。
カスタム証明書を設定したり、設定したカスタム証明書の内容を変更したり、SSL暗号化を無効にしたりすると、RDSインスタンスが再起動します。 再起動プロセスには約3分かかります。 これらの操作は、オフピーク時に実行することを推奨します。
手順1: カスタム証明書の作成
サーバー証明書または自己署名証明書の秘密鍵を作成する場合は、パスワード暗号化を有効にしないでください。 パスワード暗号化を有効にすると、SSL暗号化を有効にできません。
この例では、CentOS (Community Enterprise Operating System) が使用されています。 Windowsオペレーティングシステムを使用している場合は、CentOSで使用しているのと同じ構成を使用してopenssl
コマンドを構成できます。 さらに、Windowsオペレーティングシステムを使用している場合は、cp
およびvim
コマンドを実行するのではなく、必要なファイルを直接コピーして編集する必要があります。
自己署名証明書と自己署名証明書の秘密鍵を作成します。 自己署名証明書はca.crtという名前のファイルに保存されます。 秘密鍵はca.keyという名前のファイルに保存されます。
openssl req -new -x509 -days 3650 -nodes -out ca.crt -keyout 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 "/C N=pgm-bpxxxxx.pg.rds.aliyuncs.com"
説明コマンドでは、
pgm-bpxxxxx.pg.rds.aliyuncs.com
は例としてのみ使用されます。 保護する実際のエンドポイントに置き換える必要があります。 エンドポイントの表示方法の詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのエンドポイントとポート番号の表示と変更」をご参照ください。複数のエンドポイントを保護する場合は、次のコマンドを実行します。
一時的に使用するopenssl.cn fファイルをコピーします。
cp /etc/pki/tls/openssl.cn f /tmp/openssl.cn f
説明Windowsオペレーティングシステムを使用している場合、openssl.cn fファイルはOpenSSL\bin\cnfのインストールディレクトリパスに格納されます。 openssl.cn fファイルは、コンピューター上の他のディレクトリにコピーできます。
次のコマンドを実行してopenssl.cn fファイルを開きます。
vim /tmp/openssl.cn f
i
を入力して編集モードを有効にします。 次に、次の内容をopenssl.cn fファイルに追加します。# [req] 要素の末尾に次の内容を追加します。 req_extensions = v3_req # [v3_req] 要素を追加します。 [v3_req] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @ alt_names # [alt_names] 要素を追加します。 次に、各ドメインネームシステム (DNS) レコードの後に保護するエンドポイントを入力します。 [alt_names] DNS.1 = pgm-bpxxxxx.pg.rds.aliyuncs.com DNS.2 = pgm-bpxxxxx.pg.rds.aliyuncs.com
[Esc]
を押して編集モードを終了します。 次に、:wq
と入力してファイルを保存し、終了します。CSRファイルを作成します。 CSRファイルの名前はserver.csrです。 また、サーバー証明書の秘密鍵を作成します。 秘密鍵はserver.keyという名前のファイルに保存されます。
openssl req -new -nodes -text -out server.csr -keyout server.key -config /tmp/openssl.cn f
server.csrファイルを作成すると、ビジネス要件に基づいて次のパラメーターを設定するように求められます。
パラメーター
説明
例
国名
RDSインスタンスが存在する国のコード。 国コードの長さは2文字でなければなりません。 ApsaraDB RDSは、国際標準化機構 (ISO) によって作成および管理されている国コードをサポートしています。
CN
州または省名
RDSインスタンスが存在する州。
浙江省
ローカリティ名
RDSインスタンスが存在する都市。
杭州
組織名
RDSインスタンスを購入する企業の名前。
Alibaba
組織単位名
RDSインスタンスを使用する部門の名前。
Aliyun
共通名
SSL証明書の要求元のドメイン名。 ドメイン名はopenssl.cn fファイルで指定します。 このパラメーターを設定する必要はありません。
-
電子メールアドレス
このパラメーターを設定する必要はありません。
-
チャレンジパスワード
このパラメーターを設定する必要はありません。
-
オプションの会社名
このパラメーターを設定する必要はありません。
-
サーバー証明書を作成します。 サーバー証明書はserver.crtという名前のファイルに保存されます。
単一のエンドポイントを保護する場合は、次のコマンドを実行します。
openssl x509 -req -in server.csr -text -days 365 -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
複数のエンドポイントを保護する場合は、次のコマンドを実行します。
openssl x509 -req -in server.csr -text -days 365 -CA ca.crt -CAkey ca.key-CAreateserial-out server.crt -extensions v3_req -extfile /tmp/openssl.cn f
上記の設定を完了したら、lsコマンドを実行して生成されたファイルを表示します。
# ls
ca.crt ca.key ca.srl server.crt server.csr server.key
次のリストは、ファイルを示しています。
server.crt: サーバー証明書を含むファイル
server.key: サーバー証明書の秘密鍵を含むファイル
ca.crt: 自己署名証明書を含むファイル
ca.key: 自己署名証明書の秘密鍵を含むファイル
ステップ2: 作成したカスタム証明書を使用してSSL暗号化を有効にする
カスタム証明書を設定すると、RDSインスタンスのステータスが [実行中] から [SSLの変更] に変わります。 約3分後、ステータスは [実行中] に戻ります。
- [インスタンス] ページに移動します。 上部のナビゲーションバーで、RDSインスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
ApsaraDB 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 PostgreSQLインスタンスへの接続」をご参照ください。
ステップ4: (オプション) 作成したカスタム証明書を更新する
この操作により、RDSインスタンスの再起動がトリガーされます。 注意して進めてください。
SSLタブで、[データベース証明書の設定 (データベースの偽装を防ぐため)] の横にある [変更] をクリックします。 表示されるダイアログボックスで、使用する新しいサーバー証明書と新しいサーバー証明書の秘密鍵を入力します。
ステップ5: (オプション) SSL暗号化を無効にする
この操作により、RDSインスタンスの再起動がトリガーされます。 注意して進めてください。
[SSL] タブで、[SSLの無効化] をクリックします。