找了下國內關於mysql開啟ssl的博文,這裡整理乙份備用。
關於ssl協議,主要是用對方的公鑰加密資訊,對方可以用它的私鑰解密。當然中間種種,還有mac等不細究了。
通訊的開始,server會向client提供乙份加密演算法的列表,client可以選擇用哪種演算法加密。其中每乙個加密演算法叫做cipher,即加密套件。
不得不提一下ssl的歷史,ssl有三個版本,sslv1, sslv2,sslv3,其中v1版協議詳情沒有公開過,sslv2只有部分,sslv3的資料應該還有些。都是很久的老古董了。我們現在說的ssl其實是ssl的公升級版辦tls,目前openssl的1.0.x基本上都是支援的tls.tls也有3個版本tls1.0,tls1.2,tls1.3(這個還在起草,截至到16年2月份)。
14年的爆出了sslv3的漏洞,cve-2014-3566,這個洞徹底摧毀了ssl的防線,跟著sslv2的腳步退出了歷史的舞台。目前用的基本都是tls.openssl的更新日誌changes between 1.0.1i and 1.0.1j 提到,連線ssl使用ssl_set_mode(s, ssl_mode_send_fallback_scsv)這個標記,強制使用tls協議。愛,想搭乙個sslv3的環境,檢視ubuntu server支援的cipher列表,找到的sslv3,使用sslv3對應的cipher卻發現根本連線不上。
mysql使用ssl的故事從現在開始,它跟其他apache關閉sslv3的手法不一樣。由於ssl版本是由client連線mysql時指定的,所以mysql伺服器並不能完全關閉sslv3的支援。當然,有一種方法,就是把server中openssl支援的sslv3版本的cipher全部給刪掉,這樣,client就沒法選擇sslv3的cipher方式了。
分享一下,這次經常用的的命令:
1) 檢視當前openssl所有支援的cipher.
openssl ciphers v
2) 檢視openssl的sslv3的cipher.
openssl ciphers -v|grep sslv3
3) 檢視openssl的版本
openssl version
4) 驗證當前伺服器的是否支援某版本ssl,只要返回文字有error就是不支援
openssl s_client -cafile ca-cert.pem -cert client-cert.pem -key client-key.pem -cipher aes128-sha256 -connect localhost:3306 -tls1_2
5) 檢視mysql支援的ssl狀態,需要進入mysql終端,
status
;或者\s
6) 檢視當前mysql的cipher,
show status like 'ssl_cipher_list';
mysql設定ssl的方法在很多地方都能找到,這裡就不想說了,思路是
1)生成ssl的各種證書
2)在mysql配置檔案中配置ssl的server證書,
3)重啟mysql服務,
4) 客戶端使用client-cert, ca-cert, client-key去登入mysql服務
接著說,要注意,遠端訪問要設定遠端訪問的ip許可權,mysql在配置檔案中要繫結ip。
指定cipher的mysql登入測試:
mysql --ssl-cipher=srp-rsa-3des-ede-cbc-sha -e quit -u root -p
mysql關於日期 關於mysql日期的一些例子
mysql中的月份計算 減少乙個月,比如 原來的subtime 2006 10 22 12 22 22 減少後變成 2006 9 22 12 22 22 update message set subtime date sub subtime,interval 1 month 增加乙個月 update...
關於mysql的學習筆記(一)
mysql 顯示所有的資料庫,msyql show databases 顯示命令 顯示資料庫列表 show databases 顯示庫中的資料表 use mysql show tables 顯示資料表的結構 describe 表名 顯示表中所有記錄 select from 表名 建庫 create ...
關於mysql 的group by 的用法一
group by 有乙個原則 在select 後面跟的非聚合函式的字段,必須出現在group by 的後面,但是我在操作的過程中沒有新增所有的字段到 group by 的後面,並沒有報錯 經過測試後發現,沒有跟在group by 後面的字段選擇出來的資料時 錯誤的。idnameab 1aa231 2...