使用云端證書快速配置SSL加密
PolarDB PostgreSQL版(兼容Oracle)支持設(shè)置SSL鏈路加密,對(duì)網(wǎng)絡(luò)連接進(jìn)行加密,保證傳輸鏈路的安全。本文介紹在新版管理頁(yè)面,針對(duì)主地址或集群地址開啟SSL鏈路加密功能的入門配置。如果您的實(shí)例在安全管理 > SSL配置頁(yè)面不支持單獨(dú)針對(duì)主地址或集群地址開啟或關(guān)閉SSL功能,請(qǐng)參考設(shè)置SSL加密進(jìn)行操作。
背景信息
SSL(Secure Sockets Layer)指安全套接字協(xié)議,是為了安全通信、數(shù)據(jù)安全性專門設(shè)計(jì)的安全協(xié)議,SSL 3.0之后更名為TLS(Transport Layer Security)。本文以配置云端證書為例,指導(dǎo)您快速配置SSL鏈路加密。
PolarDB PostgreSQL版(兼容Oracle)的數(shù)據(jù)庫(kù)代理支持的TLS版本為 1.0、1.1、1.2 和 1.3。
PolarDB PostgreSQL版(兼容Oracle)集群支持的SSL鏈路加密配置及功能對(duì)比如下:
對(duì)比項(xiàng) | 配置云端證書 | 配置自定義證書 | 配置客戶端CA證書 |
獲取方式 | 由阿里云頒發(fā)。 | 由證書認(rèn)證機(jī)構(gòu)頒發(fā)或自簽名證書頒發(fā)。 | 由自簽名證書頒發(fā)。 |
證書有效期 | 365天。 | 由您自定義。 | 由您自定義。 |
保護(hù)的連接地址數(shù) | 1個(gè)或多個(gè)。 | 1個(gè)或多個(gè)。 | 不影響保護(hù)的連接地址數(shù),取決于配合使用的云端證書或自定義證書。 |
證書作用 | 開啟SSL鏈路加密,客戶端驗(yàn)證服務(wù)端真?zhèn)巍?/p> | 開啟SSL鏈路加密,客戶端驗(yàn)證服務(wù)端真?zhèn)巍?/p> | 服務(wù)端驗(yàn)證客戶端真?zhèn)巍?/p> |
對(duì)于云端證書、自定義證書和客戶端CA證書的配置需要滿足版本約束才可以使用,主地址和集群地址遵循不同的約束條件。對(duì)于不滿足條件的版本,僅支持云端證書模式。
對(duì)于滿足條件的新版本:配置云端證書或自定義證書為必選配置,用于開啟SSL鏈路加密。
對(duì)于滿足條件的新版本:配置客戶端CA證書為可選配置,用于服務(wù)端驗(yàn)證客戶端真?zhèn)巍?/p>
前提條件
集群為PolarDB PostgreSQL版(兼容Oracle)2.0或以上版本,內(nèi)核版本大于等于2.0.14.21.0版本,主地址可允許配置自定義證書、客戶端CA證書等;低版本僅支持云端證書模式。
集群的數(shù)據(jù)庫(kù)代理版本要求至少為2.3.51版本,集群地址和自定義地址才允許配置自定義證書、客戶端CA證書等;低版本僅支持云端證書模式。
已下載pgAdmin 4 客戶端。
注意事項(xiàng)
SSL的云端證書有效期為1年,請(qǐng)及時(shí)更新證書有效期并重新下載和配置CA證書,否則使用加密連接的客戶端程序?qū)o(wú)法正常連接。
由于SSL加密的固有缺陷,啟用SSL加密會(huì)顯著增加CPU使用率,建議您僅在外網(wǎng)鏈路有加密需求的時(shí)候啟用SSL加密。內(nèi)網(wǎng)鏈路相對(duì)較安全,一般無(wú)需對(duì)鏈路加密。
開啟SSL鏈路加密后,已有連接需要斷開重連,加密才會(huì)生效。
開啟云端證書、更新證書有效期、更改云端證書保護(hù)的連接地址或關(guān)閉SSL鏈路加密,會(huì)存在連接閃斷,請(qǐng)?jiān)跇I(yè)務(wù)低峰期操作。
步驟一:使用云端證書開啟SSL鏈路加密
在頁(yè)面左上角,選擇集群所在地域。
找到目標(biāo)集群,單擊集群ID。
在左側(cè)菜單欄中單擊配置與管理 > 安全管理。
在SSL配置頁(yè)簽,選擇主地址或者任意集群地址,點(diǎn)擊SSL狀態(tài)右側(cè)滑塊或者點(diǎn)擊設(shè)置數(shù)據(jù)庫(kù)證書按鈕,開啟SSL加密。
在設(shè)置數(shù)據(jù)庫(kù)證書對(duì)話框,選擇云端證書,并選擇要保護(hù)的連接地址。
單擊確定,進(jìn)入開啟流程。開啟后,請(qǐng)耐心等待集群到運(yùn)行狀態(tài)進(jìn)行后續(xù)操作。
步驟二:下載CA證書
開啟云端證書后,PolarDB PostgreSQL版(兼容Oracle)數(shù)據(jù)庫(kù)提供數(shù)據(jù)庫(kù)CA證書供您下載。當(dāng)您通過客戶端遠(yuǎn)程連接PolarDB PostgreSQL版(兼容Oracle)數(shù)據(jù)庫(kù)時(shí),使用數(shù)據(jù)庫(kù)CA證書即可對(duì)數(shù)據(jù)庫(kù)真?zhèn)芜M(jìn)行校驗(yàn)。
在SSL 配置頁(yè)簽,單擊云端證書右側(cè)的下載證書,即可下載證書。
解壓下載的CA證書。下載的文件為壓縮包,包含如下三個(gè)文件:
p7b文件:用于Windows系統(tǒng)中導(dǎo)入CA證書。
pem文件:用于其他系統(tǒng)或應(yīng)用中導(dǎo)入CA證書。
jks文件:Java中的truststore證書存儲(chǔ)文件,密碼統(tǒng)一為apsaradb,用于Java程序中導(dǎo)入CA證書鏈。
說(shuō)明在 Java中使用JKS證書文件時(shí),jdk7和jdk8需要修改默認(rèn)的jdk安全配置,在連接PolarDB數(shù)據(jù)庫(kù)的服務(wù)器的
jre/lib/security/java.security
文件中,修改如下兩項(xiàng)配置:jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 224 jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
若不修改jdk安全配置,會(huì)報(bào)如下錯(cuò)誤。其它類似報(bào)錯(cuò),一般也都由Java安全配置導(dǎo)致。
javax.net.ssl.SSLHandshakeException: DHPublicKey does not comply to algorithm constraints
步驟三:客戶端連接數(shù)據(jù)庫(kù)
本示例中以pgAdmin客戶端通過SSL連接PolarDB PostgreSQL版(兼容Oracle)數(shù)據(jù)庫(kù)為例。
PolarDB PostgreSQL版(兼容Oracle)數(shù)據(jù)庫(kù)還支持通過psql命令行終端和JDBC等多種方式SSL遠(yuǎn)程連接,更多信息,請(qǐng)參見SSL連接PolarDB PostgreSQL版(兼容Oracle)數(shù)據(jù)庫(kù)。
連接數(shù)據(jù)庫(kù)前,請(qǐng)確保已在PolarDB PostgreSQL版(兼容Oracle)集群中配置白名單和用戶。具體操作,請(qǐng)參見設(shè)置集群白名單和創(chuàng)建數(shù)據(jù)庫(kù)賬號(hào)。
下文以pgAdmin 4 V6.2.0為例,如果文檔截圖與您的客戶端存在差異,請(qǐng)參見官方文檔里與示例中相同的SSL鏈路相關(guān)參數(shù)進(jìn)行配置。
啟動(dòng)pgAdmin 4客戶端。
說(shuō)明高版本客戶端首次登錄需要設(shè)置Master Password用于保護(hù)保存的密碼和其他憑據(jù)。
右鍵單擊Servers,選擇Register > Server...。
在General頁(yè)簽設(shè)置連接名稱。
選擇Connection標(biāo)簽頁(yè),輸入要連接的集群信息。
參數(shù)
說(shuō)明
Host name/address
PolarDB PostgreSQL版(兼容Oracle)集群已開啟SSL連接的主地址或集群地址及其對(duì)應(yīng)的端口:
若通過內(nèi)網(wǎng)連接,需輸入集群的內(nèi)網(wǎng)地址和內(nèi)網(wǎng)端口。
若使用外網(wǎng)連接,需輸入集群的外網(wǎng)地址和外網(wǎng)端口。
Port
Username
PolarDB PostgreSQL版(兼容Oracle)集群的賬號(hào)和密碼。
Password
選擇Parameters標(biāo)簽頁(yè),添加SSL認(rèn)證方式相關(guān)參數(shù)并配置證書。
參數(shù)
說(shuō)明
SSL mode
為了使用SSL安全連接,請(qǐng)配置Require、Verify-CA或Verify-Full連接方式,參數(shù)含義如下:
Require:只對(duì)數(shù)據(jù)鏈路加密,并不驗(yàn)證數(shù)據(jù)庫(kù)服務(wù)器的真實(shí)性。
Verify-CA:加密數(shù)據(jù)鏈路,同時(shí)驗(yàn)證數(shù)據(jù)庫(kù)的真實(shí)性。
Verify-Full:加密數(shù)據(jù)鏈路,驗(yàn)證數(shù)據(jù)庫(kù)的真實(shí)性,同時(shí)比對(duì)證書內(nèi)的CN或DNS與連接時(shí)配置的Host name/address的一致性。
Root certificate
當(dāng)SSL mode取值為Verify-CA或Verify-Full時(shí),需要配置此參數(shù),表示數(shù)據(jù)庫(kù)CA證書路徑。
說(shuō)明本示例中,從SSL頁(yè)面下載的CA證書解壓路徑為 D:\CA\aliyunCA\,您可以將證書解壓到您本地的任意位置。
pgAdmin客戶端中使用的數(shù)據(jù)庫(kù)CA證書為PEM文件。
單擊Save。
若連接信息無(wú)誤,會(huì)出現(xiàn)如下界面,則表示連接成功。
重要postgres是PolarDB PostgreSQL版(兼容Oracle)集群默認(rèn)的系統(tǒng)數(shù)據(jù)庫(kù),請(qǐng)勿在該數(shù)據(jù)庫(kù)中進(jìn)行任何操作。
步驟四:(可選)更新云端證書有效期
如果您的證書有效期即將到期,需要更新證書有效期,可按照以下步驟更新證書有效期。
在頁(yè)面左上角,選擇集群所在地域。
找到目標(biāo)集群,單擊集群ID。
在左側(cè)菜單欄中單擊配置與管理 > 安全管理。
在SSL配置頁(yè)簽,選擇需要更新的主地址或集群地址,單擊更新有效期按鈕。
在彈出的對(duì)話框中,單擊確定。
說(shuō)明更新有效期操作將會(huì)重啟集群,重啟前請(qǐng)做好業(yè)務(wù)安排,謹(jǐn)慎操作。
更新有效期后,請(qǐng)重新下載和配置證書。
步驟五:(可選)關(guān)閉SSL鏈路加密
關(guān)閉SSL加密可能會(huì)重啟集群,連接閃斷,請(qǐng)謹(jǐn)慎操作。
如果您需要關(guān)閉SSL鏈路加密,可以按照如下步驟進(jìn)行操作。
在頁(yè)面左上角,選擇集群所在地域。
找到目標(biāo)集群,單擊集群ID。
在左側(cè)菜單欄中單擊配置與管理 > 安全管理。
在SSL配置頁(yè)簽,找到需要關(guān)閉的主地址或集群地址,單擊SSL狀態(tài)右側(cè)滑塊。