為了提高鏈路安全性,您可以啟用SSL(Secure Sockets Layer)加密,并安裝SSL CA證書到需要的應用服務。SSL在傳輸層對網絡連接進行加密,能提升通信數據的安全性和完整性,但會同時增加網絡連接響應時間。
背景信息
SSL是Netscape公司所提出的安全保密協議,在瀏覽器和Web服務器之間構造安全通道來進行數據傳輸,采用RC4、MD5、RSA等加密算法實現安全通訊。國際互聯網工程任務組(IETF)對SSL 3.0進行了標準化,標準化后更名為安全傳輸層協議(TLS)。由于SSL這一術語更為常用,因此本文所述的SSL加密實際是指TLS加密。
注意事項
開啟SSL加密和下載證書
- 登錄PolarDB控制臺。
- 在控制臺左上角,選擇集群所在地域。
- 找到目標集群,單擊集群ID。
在左側菜單欄中單擊 。
在SSL配置頁簽,單擊SSL狀態右側滑塊,開啟SSL加密。
說明PolarDB MySQL版8.0、5.7和5.6版本支持為主地址、集群地址和自定義地址配置SSL。
在設置SSL對話框中,選擇需要開通SSL加密的鏈路,單擊確定。
說明您可以根據需要,選擇加密內網鏈路或者外網鏈路,但只可以加密一條鏈路。
SSL狀態變為已開通后,單擊下載證書。
下載的文件為壓縮包,包含如下三個文件:
.p7b格式文件:用于Windows系統中導入CA證書。
.pem格式文件:用于其他系統或應用中導入CA證書。
.jks格式文件:Java中的truststore證書存儲文件,密碼統一為apsaradb,用于Java程序中導入CA證書鏈。
說明在Java中使用JKS證書文件時,jdk7和jdk8需要修改默認的jdk安全配置,在連接PolarDB數據庫的服務器的
jre/lib/security/java.security
文件中,修改如下兩項配置:jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 224 jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
若不修改jdk安全配置,會報如下錯誤。其它類似報錯,一般也都由Java安全配置導致。
javax.net.ssl.SSLHandshakeException: DHPublicKey does not comply to algorithm constraints
如果您需要修改SSL受保護的地址,可以單擊設置SSL進行修改。
重要修改受保護地址后,SSL證書會自動更新,同時重啟您的數據庫實例,請謹慎操作。
配置SSL CA證書
開通SSL加密后,應用或者客戶端連接PolarDB前,建議配置SSL CA證書。本文以MySQL Workbench和Navicat為例,介紹SSL CA證書的配置方法。其它應用或者客戶端請參見對應產品的使用說明。
MySQL Workbench配置方法
打開MySQL Workbench。
選擇 。
啟用Use SSL,并導入SSL CA證書。
Navicat配置方法
打開Navicat。
在目標數據庫上單擊鼠標右鍵,選擇編輯連接 。
選擇SSL頁簽,選擇.pem格式CA證書的路徑。參照下圖進行設置。
單擊確定。
說明如果報
Connection with same connection name already exists in the project.
錯誤,是由于之前的會話未斷開,請關閉Navicat重新打開。雙擊目標數據庫測試能否正常連接。
更新證書有效期
如果您修改了SSL連接地址或證書有效期即將到期,您需要手動更新證書有效期,以下內容將為您介紹如何更新證書有效期。
更新證書有效期操作將會重啟集群,重啟前請做好業務安排,謹慎操作。
- 登錄PolarDB控制臺。
- 在控制臺左上角,選擇集群所在地域。
- 找到目標集群,單擊集群ID。
在左側菜單欄中單擊 。
在SSL配置頁簽中單擊更新有效期。
在彈出的對話框中,單擊確定。
更新有效期后,重新下載和配置證書。
說明下載證書請參見開啟SSL加密和下載證書第七步。
配置證書請參見配置SSL CA證書。
開啟證書自動輪換
開啟證書自動輪轉后,在證書即將過期的10天內,PolarDB會在集群的可維護時間窗口內自動更新證書。
自動更新證書將會重啟集群,請您謹慎選擇。
在SSL配置頁簽中,單擊高級選項。
在高級選項對話框中,選擇開啟證書自動輪轉,并單擊確定。
關閉SSL加密
關閉SSL加密會重啟集群,建議您在業務低峰期操作。
SSL加密關閉后,數據庫訪問性能會有一定程度的提升,但安全性上有削弱,因此在非安全環境下不建議關閉SSL加密。
- 登錄PolarDB控制臺。
- 在控制臺左上角,選擇集群所在地域。
- 找到目標集群,單擊集群ID。
在左側菜單欄中單擊 。
在SSL配置頁簽中,單擊SSL狀態右側滑塊來關閉SSL加密。
在彈出的對話框中,單擊確定。
查看SSL加密套件
SSL協議有很多版本,PolarDB目前支持TLSv1.2及以上的版本。在SSL握手期間,客戶端會和PolarDB服務端交換協商信息,這些信息包括TLS版本、加密套件和會話密鑰等。詳細的加密套件列表可以在OpenSSL官網進行查看。
成功建立SSL連接后,您可以執行以下SQL語句查看該連接使用的SSL加密套件:
SHOW STATUS LIKE 'ssl_cipher';
+---------------+-------------------+
| Variable_name | Value |
+---------------+-------------------+
| Ssl_cipher | AES128-GCM-SHA256 |
+---------------+-------------------+
如果連接未加密,查詢返回的變量為空值。
相關API
API | 描述 |
調用DescribeDBClusterSSL接口查詢PolarDB集群SSL設置。 | |
調用ModifyDBClusterSSL接口設置PolarDB集群SSL加密的開通、關閉或更新CA證書。 |