本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
RDS PostgreSQL在配置SSL鏈路加密時,不僅支持使用阿里云提供的云端證書,還支持使用自定義證書。本文介紹如何通過自定義證書開啟SSL鏈路加密功能的具體操作。
前提條件
實例版本為RDS PostgreSQL 10或以上的云盤版本。
說明暫不支持計費方式為Serverless的實例。
已安裝OpenSSL工具。
說明如果您使用Linux系統,系統會自帶OpenSSL工具,無需安裝。如果您使用Windows系統,請獲取OpenSSL軟件包并安裝。
注意事項
開啟SSL鏈路加密后,會造成CPU使用率上升、讀寫時延增長。
開啟SSL鏈路加密后,已有連接需要斷開重連,加密才會生效。
配置自定義證書、更改自定義證書內容或關閉SSL鏈路加密,將會重啟您的數據庫實例,用時3分鐘左右,請在業務低峰期操作。
步驟一:獲取自定義證書
生成服務器證書私鑰或自簽名證書私鑰時,請勿使用密碼加密,否則將無法啟用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"
生成服務器證書請求文件(server.csr)和服務器證書私鑰(server.key)。
自定義證書支持對一個連接地址或多個連接地址進行保護。您可以根據需要選擇以下兩種配置生成服務器證書請求文件。
如果您需要保護一個連接地址,請配置如下命令。
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后配置需要保護的數據庫連接地址 [ alt_names ] DNS.1 = pgm-bpxxxxx.pg.rds.aliyuncs.com DNS.2 = pgm-bpxxxxx.pg.rds.aliyuncs.com
使用
Esc
退出編輯模式,輸入:wq
保存并退出。生成服務器證書請求文件(server.csr)和服務器證書私鑰(server.key)。
openssl req -new -nodes -text -out server.csr -keyout server.key -config /tmp/openssl.cnf
生成證書請求文件(server.csr)的過程中,會提示配置以下參數,請根據實際情況配置。
參數
說明
示例
Country Name
ISO國家代碼(兩位字符)
CN
State or Province Name
所在省份
ZheJiang
Locality Name
所在城市
HangZhou
Organization Name
公司名稱
Alibaba
Organizational Unit Name
部門名稱
Aliyun
Common Name
申請SSL證書的域名,在openssl.cnf文件中已配置,不需要輸入
-
Email Address
不需要輸入
-
A challenge password
不需要輸入
-
An optional company name
不需要輸入
-
生成服務器證書(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:自簽名證書私鑰。
步驟二:使用自定義證書開啟SSL鏈路加密
配置自定義證書后,實例的運行狀態將會變更為修改SSL中,該狀態將持續三分鐘左右,請耐心等待運行狀態變更為運行中后再進行后續操作。
訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。
進入 >SSL頁面。
切換證書來源為使用自定義證書,單擊配置數據庫證書(防止偽裝數據庫)后的配置按鈕,填寫服務器證書及私鑰,然后單擊確定,完成配置。
參數
取值
服務器證書
此參數填寫步驟一:獲取自定義證書步驟中獲取的server.crt文件內容。請填寫-----BEGIN CERTIFICATE-----至-----END CERTIFICATE-----間的內容,包括BEGIN和END部分。
服務器證書私鑰
此參數填寫步驟一:獲取自定義證書步驟中獲取的server.key文件內容。請填寫-----BEGIN PRIVATE KEY-----至-----END PRIVATE KEY-----間的內容,包括BEGIN和END部分。
如果申請證書時配置了多個連接地址,則配置完成后,在保護主機參數中,將顯示對應多條記錄。
步驟三:客戶端連接數據庫
RDS PostgreSQL數據庫支持通過SSL遠程連接,更多信息,請參見使用SSL鏈路連接RDS PostgreSQL數據庫。
步驟四:(可選)更新證書
更新證書會重啟實例,請謹慎操作。
如果您需要更新證書,可以在SSL頁面單擊配置數據庫證書(防止偽裝數據庫)后的修改按鈕,填入新的服務器證書和私鑰。
步驟五:(可選)關閉SSL鏈路加密
關閉SSL加密會重啟實例,請謹慎操作。
如果您需要關閉SSL鏈路加密,可以在SSL頁面單擊關閉SSL按鈕。