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