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執行個體網域名稱)、有效期間,以及查看認證詳情和查看私密金鑰詳情按鈕。如需更新,可單擊右側修改。
步驟三:用戶端串連資料庫
RDS PostgreSQL資料庫支援通過SSL遠端連線,更多資訊,請參見使用SSL鏈路串連RDS PostgreSQL資料庫。
步驟四:(可選)更新認證
更新認證會重啟執行個體,請謹慎操作。
如果您需要更新認證,可以在SSL頁面單擊設定資料庫認證(防止偽裝資料庫)後的 修改 按鈕,填入新的伺服器憑證和私密金鑰。
步驟五:(可選)關閉SSL鏈路加密
關閉SSL加密會重啟執行個體,請謹慎操作。
如果您需要關閉SSL鏈路加密,可以在SSL頁面單擊關閉SSL按鈕。