mysql 基于ssl认证

为了让数据传输更加安全,因此

实验环境: 两台centos 7.2,一台mysql服务器,一台客户端

为了方便实验,CA证书也在mysql服务器上

blob.png

服务端操作(192.168.153.128)

1,先安装mariadb和OpenSSL

yum install mariadb-server openssl -y

2,配置证书

cd /etc/pki/CA/
touch index.txt
echo 01 > serial
(umask 066;openssl genrsa -out private/cakey.pem 4096)

blob.png

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3600

blob.png

mkdir /var/lib/mysql/ssl                #创建mysql的私钥等的目录
cd /var/lib/mysql/ssl

(umask 066;openssl genrsa -out mysql.key 2048)

blob.png

openssl req -new -key mysql.key -days 365 -out mysql.csr

blob.png

openssl ca -in mysql.csr -out mysql.crt -days 365

blob.png

3,修改mariadb配置文件

vim /etc/my.cnf
innodb_file_per_table=ON
skip_name_resolve=ON
ssl
ssl-ca=/etc/pki/CA/cacert.pem
ssl-cert=/var/lib/mysql/ssl/mysql.crt
ssl-key=/var/lib/mysql/ssl/mysql.key

blob.png

4,修改权限,否则ssl 会失败(可以通过log得知该信息)

setfacl -m u:mysql:rwx /var/lib/mysql/ssl/mysql.key

5,重启服务

blob.png

6,授权一个需要ssl访问的用户

grant all on *.* to 'xixi'@'192.168.153.129' identified by 'xixi' require ssl;
flush privileges;

blob.png

7,将配置文件复制到mysql客户端

scp /etc/pki/CA/cacert.pem 192.168.153.129:/etc/mysqlssl/
scp /var/lib/mysql/ssl/* 192.168.153.129:/etc/mysqlssl/

blob.png

mysql客户端操作

8,测试访问

yum install mariadb -y
mysql -uxixi -pxixi -h192.168.153.128 --ssl-ca=/etc/mysqlssl/cacert.pem --ssl-cert=/etc/mysqlssl/mysql.crt --ssl-key=/etc/mysqlssl/mysql.key

blob.png

10,为了方便访问

也可以将ssl信息写在配置文件中

vim /etc/my.cnf
[mysql]
ssl-ca=/etc/mysqlssl/cacert.pem
ssl-cert=/etc/mysqlssl/mysql.crt
ssl-key=/etc/mysqlssl/mysql.key

blob.png

blob.png

类似文章