ApsaraDB RDS for PostgreSQLでは、SSL暗号化はAlibaba Cloudによって管理される証明書とカスタム証明書をサポートします。 このトピックでは、SSL暗号化を有効にするカスタム証明書の設定方法について説明します。
前提条件
RDSインスタンスはPostgreSQL 10以降を実行し、クラウドディスクを使用します。
説明サーバーレスRDSインスタンスはサポートされていません。
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
コマンドを実行できます。 さらに、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-server-ca"
証明書署名要求 (CSR) ファイルとサーバー証明書の秘密鍵を作成します。 CSRファイルの名前はserver.csrです。 秘密鍵はserver.keyという名前のファイルに保存されます。
各カスタム証明書は、1つ以上のエンドポイントを保護できます。 次のいずれかの方法を使用して、CSRファイルを生成できます。
単一のエンドポイントを保護する場合は、次のコマンドを実行します。
openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/CN=pgm-bpxxxxx.pg.rds.aliyuncs.com"
説明pgm-bpxxxxx.pg.rds.aliyuncs.com
を保護するエンドポイントに置き換えます。 エンドポイントの表示方法の詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのエンドポイントとポート番号の表示と変更」をご参照ください。複数のエンドポイントを保護する場合は、次のコマンドを実行します。
一時的に使用するopenssl.cn fファイルをコピーします。
cp /etc/pki/tls/openssl.cnf /tmp/openssl.cnf
説明Windowsオペレーティングシステムを使用している場合、openssl.cn fファイルはOpenSSL\bin\cnfディレクトリに格納されます。 openssl.cn fファイルは、コンピューター上の他のディレクトリにコピーできます。
次のコマンドを実行してopenssl.cn fファイルを開きます。
vim /tmp/openssl.cnf
i
を入力して編集モードを有効にします。 次に、次の内容をopenssl.cn fファイルに追加します。# Add the following content at the end of the [ req ] element. req_extensions = v3_req # Add the [ v3_req ] element. [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names # Add the [ alt_names ] element. Then, enter the endpoint that you want to protect following each Domain Name System (DNS) record. [ 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.cnf
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
複数のエンドポイントを保護する場合は、次のコマンドを実行します。
openssl x509 -req -in server.csr -text -days 365 -CA server-ca.crt -CAkey server-ca.key -CAcreateserial -out server.crt -extensions v3_req -extfile /tmp/openssl.cnf
上記の設定を完了したら、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の変更] に変わります。 約3分後、ステータスは [実行中] に戻ります。
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
ApsaraDB RDSコンソールにログインします。 RDSインスタンスを見つけ、インスタンスのIDをクリックします。 左側のナビゲーションウィンドウで、 をクリックします。 表示されるページで、[SSL] タブをクリックします。
Select Certificate SourceパラメーターをCustom Certificateに設定します。 [データベース証明書の設定] の横にある [設定] をクリックします。 表示されるダイアログボックスで、サーバー証明書とサーバー証明書の秘密鍵のパラメーターを設定し、[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の無効化] をクリックします。