ApsaraDB RDS for PostgreSQL インスタンスに SSL 暗号化を設定する際、Alibaba Cloud が管理する証明書またはカスタム証明書のいずれかを使用できます。本トピックでは、カスタム証明書の使用方法について説明します。
前提条件
-
ApsaraDB RDS for PostgreSQL インスタンスが PostgreSQL 10 以降を実行し、クラウドディスクバージョンを使用していること。
説明サーバーレス課金方法を使用しているインスタンスはサポートされていません。
-
OpenSSL がインストールされていること。
説明Linux では、OpenSSL はデフォルトでインストールされています。Windows では、OpenSSL パッケージ をダウンロードしてインストールする必要があります。
使用上の注意
-
SSL 暗号化を有効にすると、CPU 使用率と読み取り/書き込みレイテンシーが増加します。
-
SSL 暗号化を有効にした後、暗号化を適用するために既存の接続を切断して再接続してください。
-
カスタム証明書の設定、更新、または SSL 暗号化の無効化を行うと、データベースインスタンスが再起動されます。この処理には約 3 分かかります。オフピーク時間帯にこれらの操作を実行することを推奨します。
ステップ 1: カスタム証明書の取得
サーバー証明書または自己署名証明書の秘密鍵を生成する際、パスワードで秘密鍵を暗호화しないでください。暗号化すると、SSL 暗号化を有効にできなくなります。
本トピックでは、CentOS システムを例として使用します。Windows オペレーティングシステムを使用する場合、openssl コマンドは 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) ファイル (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はエンドポイントの一例です。保護するエンドポイントに置き換えてください。エンドポイントを確認するには、エンドポイントとポートの表示または変更をご参照ください。 -
複数のエンドポイントを保護する場合は、次の手順を実行します。
-
OpenSSL 設定ファイルを一時使用のためにコピーします。
cp /etc/pki/tls/openssl.cnf /tmp/openssl.cnf説明Windows を使用する場合、openssl.cnf ファイルは OpenSSL インストールディレクトリの \bin\cnf サブディレクトリにあります。ファイルを任意の場所にコピーできます。
-
次のコマンドを実行して、一時的な openssl.cnf ファイルを編集します。
vim /tmp/openssl.cnf -
iを押して編集モードに入り、次の内容を設定します。# [ req ] セクションの末尾に次の行を追加します。 req_extensions = v3_req # 新しい [ v3_req ] セクションを追加します。 [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names # 新しい [ alt_names ] セクションを追加し、保護対象のデータベースエンドポイントを DNS.1、DNS.2 のように指定します。 [ alt_names ] DNS.1 = pgm-bpxxxxx.pg.rds.aliyuncs.com DNS.2 = pgm-bpxxxxx.pg.rds.aliyuncs.com -
Escキーを押して編集モードを終了します。次に、:wqと入力して変更を保存し、終了します。 -
サーバー CSR ファイル (server.csr) とサーバー秘密鍵ファイル (server.key) を生成します。
openssl req -new -nodes -text -out server.csr -keyout server.key -config /tmp/openssl.cnfCSR ファイル (server.csr) を生成する際、OpenSSL は次のパラメータの入力を求めます。
パラメータ
説明
例
国名
2 文字の ISO 国コード。
CN
都道府県名
都道府県または州。
Zhejiang
市区町村名
市区町村。
Hangzhou
組織名
会社名。
Alibaba
組織単位名
部署名。
Aliyun
コモンネーム
SSL 証明書を要求するドメイン名。これは openssl.cnf ファイルで事前設定されており、スキップできます。
-
メールアドレス
不要です。
-
チャレンジパスワード
不要です。
-
オプションの会社名
不要です。
-
-
-
-
サーバー証明書 (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 の有効化
カスタム証明書を設定すると、[インスタンスステータス:] が約 3 分間 [SSL を変更しています] に変わります。ステータスが [実行中] に変わるまで待ってから次に進んでください。
- RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
-
左側のナビゲーションウィンドウで、 > SSL を選択します。
-
証明書タイプとして [カスタム証明書] を選択します。[データベース証明書の設定 (データベースの偽装防止) ] の横にある [設定] をクリックします。サーバー証明書とその秘密鍵を入力し、[OK] をクリックします。
注記:サーバー証明書を変更すると、システムは自動的に証明書を更新し、データベースインスタンスを再起動します。
パラメータ
値
サーバー証明書
ステップ 1: カスタム証明書の取得で取得した server.crt ファイルの全内容を貼り付けます。-----BEGIN CERTIFICATE----- から -----END CERTIFICATE----- までのすべてを含めます。
サーバー証明書秘密鍵
ステップ 1: カスタム証明書の取得で取得した server.key ファイルの全内容を貼り付けます。-----BEGIN PRIVATE KEY----- から -----END PRIVATE KEY----- までのすべてを含めます。
証明書に複数のエンドポイントを指定した場合、[保護されたホスト] 欄に複数のレコードが表示されます。ページには、有効期間 などの詳細も表示され、証明書の詳細を表示 および 秘密鍵の詳細を表示 のオプションを利用できます。証明書を更新するには、変更 をクリックします。
ステップ 3: データベースへの接続
ApsaraDB RDS for PostgreSQL は、リモートクライアントからの SSL 接続をサポートしています。接続手順については、SSL 経由での ApsaraDB RDS for PostgreSQL インスタンスへの接続をご参照ください。
ステップ 4: (オプション) 証明書の更新
証明書を更新すると、インスタンスが再起動されます。注意して実行してください。
SSL ページの [データベース証明書の設定 (データベースの偽装防止) ] セクションで、[変更] をクリックします。次に、新しいサーバー証明書と秘密鍵を入力します。
ステップ 5: (オプション) SSL 暗号化の無効化
SSL 暗号化を無効にすると、インスタンスが再起動されます。注意して実行してください。
SSL 暗号化を無効にするには、[SSL] ページで [SSL の無効化] をクリックします。