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