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按鈕。