このトピックでは、ApsaraDB RDS for PostgreSQLインスタンスにクライアント認証局 (CA) 証明書を設定する方法について説明します。 クラウド証明書またはカスタム証明書を使用してRDSインスタンスのSSL暗号化を有効にする場合、クライアントはRDSインスタンスに接続する前にRDSインスタンスを検証します。 RDSインスタンスでクライアントを検証する場合は、クライアントCA証明書も設定する必要があります。
前提条件
クラウド証明書またはカスタム証明書は、SSL暗号化機能を有効にするように設定されています。 詳細については、「SSL暗号化機能を有効にするためのクラウド証明書の設定」または「SSL暗号化機能を有効にするためのカスタム証明書の設定」をご参照ください。
OpenSSLがインストールされています。
説明LinuxオペレーティングシステムにはOpenSSLが提供されます。 Linuxオペレーティングシステムを使用している場合は、OpenSSLをインストールする必要はありません。 Windowsオペレーティングシステムを使用する場合は、OpenSSLソフトウェアパッケージをダウンロードしてOpenSSLをインストールする必要があります。 詳細については、Win32/Win64 OpenSSLページをご覧ください。
使用上の注意
クライアントCA証明書を設定した後、SSL暗号化を有効にするには、既存の接続を閉じて新しい接続を確立する必要があります。
クライアントCA証明書を設定したり、設定したクライアントCA証明書の内容を変更したり、クライアント証明書失効リスト (CRL) を変更したりすると、RDSインスタンスが再起動します。 再起動プロセスには約3分かかります。 これらの操作は、オフピーク時に実行することを推奨します。
手順
手順1: クライアント証明書の作成
この例では、CentOSが使用されます。 Windowsオペレーティングシステムを使用している場合は、CentOSで使用しているのと同じopenssl
構成を使用して、openssl
コマンドを構成できます。
自己署名証明書と自己署名証明書の秘密鍵を作成します。 自己署名証明書は、client-ca.crtという名前のファイルに保存されます。 秘密鍵はclient-ca.keyという名前のファイルに保存されます。
openssl req -new -x509 -days 3650 -nodes -out client-ca.crt -keyout client-ca.key -subj "/CN=root-client-ca"
証明書署名要求 (CSR) とクライアント証明書の秘密鍵を作成します。 CSRはクライアント証明書を要求するために使用され、client.csrという名前のファイルに保存されます。 秘密鍵は、client.keyという名前のファイルに保存されます。
openssl req -new -nodes -text -out client.csr -keyout client.key -subj "/CN=<クライアントからのログオンに使用されるユーザー名>"
説明上記のコマンドでは、CNパラメーターは-subjパラメーターの後に続きます。 CNパラメーターは、クライアントからRDSインスタンスに接続するために使用されるアカウントのユーザー名に設定する必要があります。
クライアント証明書を作成します。 クライアント証明書はclient.crtという名前のファイルに保存されます。
openssl x509 -req -in client.csr -text -days 365 -CA client-ca.crt -CAkey client-ca.key -CAcreateserial -out client.crt
上記の設定が完了したら、ls
コマンドを実行して、作成されたファイルを表示します。
# ls
client.crt client.csr client.key
client-ca.srl client-ca.crt client-ca.key次のリストは、ファイルを示しています。
client.crt: クライアント証明書を含むファイル
client.key: クライアント証明書の秘密鍵を含むファイル
client-ca.crt: 自己署名証明書を含むファイル
client-ca.key: 自己署名証明書の秘密鍵を含むファイル
手順2: クライアントCA証明書の設定
クライアントCA証明書を設定すると、RDSインスタンスのステータスが [実行中] から [SSL設定の変更] に変わります。 約3分後、ステータスは [実行中] に戻ります。
- [インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
表示されるページの左側のナビゲーションウィンドウで、
をクリックします。 表示されるページで、[SSL] タブをクリックします。[クライアントCA証明書の有効化] をクリックします。
表示されるダイアログボックスで、client-ca.crtファイルの内容を [公開鍵] フィールドにコピーします。 次に、[OK] をクリックします。
説明client-ca.crtファイルの取得方法の詳細については、「手順1: クライアント証明書の作成」をご参照ください。 ----- BEGIN CERTIFICATE ----- から ----- END CERTIFICATE ----- までのすべてのコンテンツがこのフィールドにコピーされていることを確認します。
手順3: クライアントからRDSインスタンスに接続
SSL経由でクライアントからRDSインスタンスに接続できます。 詳細については、「SSL経由でApsaraDB RDS For PostgreSQLインスタンスに接続する」をご参照ください。
ステップ4: (オプション) CRLファイルの設定
クライアント証明書が不要になった場合は、クライアント証明書を取り消すことができます。 クライアント証明書が取り消された後、RDSインスタンスはクライアントからのアクセス要求を拒否します。
CRLファイルを設定すると、RDSインスタンスのステータスが [実行中] から [SSL設定の変更] に変わります。 約3分後、ステータスは [実行中] に戻ります。
構成ファイルを準備する
タッチ /etc/pki/CA/index.txt エコー1000 > /etc/pki/CA/crlnumber
説明Windowsオペレーティングシステムを使用する場合は、次の操作を実行する必要があります。
OpenSSL\binディレクトリにCAフォルダを作成します。
CAフォルダにindex.txtという名前のファイルを作成します。
PostgreSQL CLIを使用して次のコマンドを実行します。
echo 1000 > <OpenSSLのインストールディレクトリ>\bin\CA\crlnumber
C:\Program Files\Common Files\SSL\ でopenssl.cn fファイルを変更します。
# [CA_default] 設定項目を見つけます。 dir = "<OpenSSLのインストールディレクトリ >\\ bin\\CA"
client.crtファイルに含まれているクライアント証明書を取り消します。
openssl ca -revoke client.crt -cert client-ca.crt -keyfile client-ca.key
説明上記のコマンドには、自己署名証明書と自己署名証明書の秘密鍵が必要です。 自己署名証明書はclient-ca.crtファイルに含まれ、自己署名証明書の秘密鍵はclient-ca.keyファイルに含まれる。 詳細については、「手順1: クライアント証明書の作成」をご参照ください。
CRLを作成します。 CRLは、client.crlという名前のファイルに保存されます。
openssl ca -gencrl -out client.crl -cert ca.crt -keyfile ca.key
表示されるページの左側のナビゲーションウィンドウで、
をクリックします。 表示されるページで、[SSL] タブをクリックします。[証明書失効ファイルの有効化] をクリックします。
表示されるダイアログボックスで、client.crlファイルの内容を [Revocation file] フィールドにコピーします。
手順5: (オプション) クライアント証明書の更新
この操作により、RDSインスタンスの再起動がトリガーされます。 作業は慎重に行ってください。
[SSL] タブで、[クライアントCA証明書のクリア] をクリックします。 次に、[クライアントCA証明書の有効化] をクリックします。