在這篇博客的帖子里,我將會描述不同的使用MySQL數據庫的SSL配置方法。
SSL給了你什么?
你可以通過互聯網使用 MySQL 復制特性(replication) 或者通過互聯網連接到MySQL。
還有可能是你通過企業網去連接,這樣會有很多人訪問。如果你使用一個自帶設備(BYOD)網絡,這就更是一個問題了。
SSL在這里通過加密網絡防止有針對性的監聽。在與正確的服務器進行交互時,可以有效應對中間人攻擊(man-in-the-middle attacks)。
你還可以使用SSL客戶端證書,讓它同密碼一起作為身份識別的二要素。
SSL不是唯一的選擇, 你可以使用SSH和許多MySQL GUI客戶端,類似MySQL Workbench提供的那個產品。 但是SSH的python腳本,或者mysqldump,不是那么易用。
需要注意的事情:
使用SSL在絕大多數情況下要比不使用SSL要好,所以沒有太多可能出現問題的地方。
但是以下幾點需要注意:
對安全性的錯誤估計
你認為你在SSL的保護之下,但是你可能忘記設置一些選項從而導致程序可以接受非SSL的連接,所以要確保設置必須使用SSL作為連接方式??梢允褂肳ireshark或者其它類似的工具來檢測你的流量是否都真的被加密處理。
沒有及時更新證書
你應該通過一些方法在證書即將過期的時候通知自己??梢允莕agios檢查,可以是日歷里面的小貼士,可以來自于證書簽發機構的email。如果證書過期,將會導致你的客戶端無法正常獲得響應。
性能
如果性能很重要,就應該做基準測試,來看看沒有SSL的情況下有什么影響。在 OpenSSL 和 YaSSL 下嘗試不同的密碼,并看哪個的執行效果最佳。
使用流量監測的工具
如果你在使用像 VividCortex,pt-query-digest 基于 pcap 的工具,那么你應該確保在部署完SSL后,這些工具還能用,可以提供密鑰來實現。然后使用一個非 Diffie-Hellman (DH) 的密碼,或者使用其他的源,如 performance_schema、slow query log,這還要看你的應用程序支持哪種,也可能會包含一些負載均衡的設置。
MySQL 中的 SSL 和瀏覽器中的 SSL 有什么不同
瀏覽器默認有一個 CA 的信任列表,但 MySQL 默認是沒有的。這就是他們最大的不同。MySQL 和OpenVPN 使用SSL非常相似。
MySQL server 和 Web server 都開啟了 SSL,同時也都需要有客戶端證書,這是他們相同的地方。
有一些細微的協議支持差別,比如:MySQL 只支持 TLS v1.0,默認不支持主機名驗證,所以你的證書可能是給db1.example.com的,也可能是給db2.example的,瀏覽器則可能會用OCSP、CRL's 或 CRLsets 來驗證證書是否有效。 MySQL 5.6以后就只支持CRL驗證。
配置 1: Server/Client 的內部 CA
最基本的安裝和我創建 mysslgen 的位置。
新聞熱點
疑難解答