Establishing SSL connection without server's identity verification is not recommended.

Special__Yang發表於2018-08-12

web專案連線資料庫出現以下錯誤:

Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

SSL

SSL(Secure Sockets Layer) 安全套接層,它主要用來保證網路通訊中陣列安全以及資料完整性的一種協議,工作在傳輸層與應用層之間。
SSL內部可以分為2層:SSL記錄協議和SSL握手協議。

SSL記錄協議

建立在可靠的傳輸層協議(比如TCP)上,一方面它會對應用層的訊息請求進行加密和壓縮,保證網路傳輸中資料的安全性和減少網路流量;另一方面它會對接受到傳輸層的報文資訊進行解密和解壓縮,以方便應用層更好的使用傳送方的訊息。

SSL握手協議

可以類比TCP三次握手進行學習,TCP三次握手是為了建立可靠的連線。而SSL握手則是為了認證使用者和伺服器,確保資料傳送到正確的接收方。主要進行身份驗證,協商加密演算法和交換加密密匙。

解決

因為SSL是為了保證通訊雙方的安全通訊,避免被第三方獲取或竊聽而存在的。鑑於本次開發資料庫伺服器是部署在本地,不存在網路中通訊,所以我們可以配置資料來源時對資料庫的url進行以下設定:

    jdbc:mysql://localhost:3306/wenda?useSSL=false

正因為報之前那個錯誤是我們在配置url未指定是否採用SSL,而高版本的MySQL會採用預設的SSL策略。Spring檢測出當前應用並未配置SSL證書,所以給出警告要麼不採用SSL,要麼設定SSL併為應用提供SSL證書。

參考

[1]https://baike.baidu.com/item/ssl/320778

相關文章