1 概述
MySQL從5.7開始默認開啓SSL加密功能,進入MySQL控制檯後輸入status可以查看ssl的狀態,出現下圖表示在使用ssl:
另外,ssl加密需要密鑰與證書,可以使用openssl手動生成或使用mysql_ssl_rsa_setup自動生成,這裏使用了mysql_ssl_rsa_setup.
下面從安裝開始.
2 安裝(可選)
系統CentOS,直接使用yum安裝(編譯安裝可以看這裏),先用list查看一下:
這裏的版本是8.0.17,不算太舊,就不去官網下載了,直接install:
yum install mysql
yum install mysql-server
好了之後啓動服務:
systemctl start mysqld
然後獲取臨時密碼後修改root密碼:
grep password /var/log/mysql/mysqld.log
這裏顯示密碼爲空,直接root登錄修改密碼:
mysql -u root -p
alter user root@localhost identified by 'xxxxx
3 生成證書與密鑰
首先查看有沒有開啓ssl,MySQL控制檯輸入
show variables like '%ssl%';
這裏have_ssl顯示yes,表示已經開啓了,表示本地的使用了ssl連接,如果顯示爲no,使用MySQL自帶的工具即可開啓ssl:
mysqld_ssl_rsa_setup
然後默認在/var/lib/mysql下會有幾個pem文件(ls查看),說明如下: |
名字 | 描述 |
---|---|---|
ca-key.pem | CA私鑰 | |
ca.pem | 自簽名的CA證書 | |
client-key.pem | 連接服務器提供的私鑰 | |
client-cert.pem | 連接服務器需要提供的證書 | |
server-key.pem | 服務器端私鑰 | |
server-client.pem | 服務器端證書 | |
pulibc_key.pem | 密鑰對公鑰 | |
private_key.pem | 密鑰對私鑰 |
接着重啓服務:
systemctl restart mysqld
4 測試
進入服務器的MySQL控制檯,新建兩個測試用戶,一個使用ssl,一個不使用ssl:
然後在本機上測試,首先測試不需要ssl的用戶,輸入密碼123456後可以直接登錄:
然後測試需要ssl的用戶:
輸入密碼123456後登錄不了,使用scp從服務器複製CA證書與客戶端證書與私鑰:
scp [email protected]:/var/lib/mysql/\{ca.pem,client-key.pem,client-cert.pem} .
然後在登錄時加上
--ssl-ca=ca.pem
--ssl-cert=client-cert.pem
--ssl-key=client-key.pem
登錄成功.