openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3600 \
 -key ca-key.pem -out ca.pem 
 

1.2 创建服务端证书,去除加密,使用CA签名

    server-cert.pem = public key, server-key.pem = private key
openssl req -newkey rsa:2048 -days 3600 \
 -nodes -keyout server-key.pem -out server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3600 \
 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
 

1.3 创建客户端证书,去除加密,使用CA签名

    client-cert.pem = public key, client-key.pem = private key
openssl req -newkey rsa:2048 -days 3600 \
 -nodes -keyout client-key.pem -out client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -days 3600 \
 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
 

1.4 证书生成后,进行校验:

openssl verify -CAfile ca.pem server-cert.pem client-cert.pem
 

2.修改my.cnf文件,mysqld下面增加如下配置项

[mysqld]
ssl-ca=/home/mysql/sslconfig/ca.pem
ssl-cert=/home/mysql/sslconfig/server-cert.pem
ssl-key=/home/mysql/sslconfig/server-key.pem
 

说明:pem配置文件中在test目录下有,但是最好自己生成
/home/mysql/mysql-5.5.35-linux2.6-x86_64/mysql-test/std_data

3.重启数据库

/etc/init.d/mysqld restart

4.登陆验证

4.1查看服务器变量have_ssl,是否支持SSL

SHOW VARIABLES LIKE 'have_%ssl';
SHOW VARIABLES LIKE '%ssl%';
如果为yes,表示服务端已经开启SSL
查看服务ssl等状态
SHOW STATUS LIKE 'Ssl_cipher';
STATUS或者\s
SSL: Cipher in use is DHE-RSA-AES256-SHA表示客户端已经 使用SSL连接

4.2客户端登陆

客户端无SSL登陆:

mysql -uroot -pzdh1234 或者 mysql -uroot -pzdh1234 --ssl=0
 

客户端开启SSL登陆:

mysql -uroot -hlocalhost -pzdh1234 --ssl-ca=/home/mysql/sslconfig/ca.pem
 

4.3创建用户强制使用SSL登陆:

GRANT ALL PRIVILEGES ON . TO 'ssluser'@'%' IDENTIFIED BY 'zdh1234' REQUIRE SSL;
本机登陆需要单独新增localhost
GRANT ALL PRIVILEGES ON . TO 'ssluser'@'localhost' IDENTIFIED BY 'zdh1234' REQUIRE SSL;
查看用户:
select host,user,password from mysql.user;
修改密码,需要重启mysql:

update user set password=password("zdh1234") where user="root" and host='zdh-11';
 

客户端无SSL登陆:

mysql -ussluser -pzdh1234
 

返回错误:ERROR 1045 (28000): Access denied for user 'ssluser'@'localhost' (using password: YES)
客户端开启SSL登陆:

mysql -ussluser -hlocalhost -pzdh1234 \
 --ssl-ca=/home/mysql/sslconfig/ca.pem
 

如果不填密码或者--ssl-ca都无法登陆

mysql -ussluser -hlocalhost -pzdh1234 \
 --ssl-cert=/home/mysql/sslconfig/client-cert.pem \
 --ssl-key=/home/mysql/sslconfig/client-key.pem
mysql -ussluser -hlocalhost -pzdh1234 \
 --ssl-ca=/home/mysql/sslconfig/ca.pem \
 --ssl-cert=/home/mysql/sslconfig/client-cert.pem \
 --ssl-key=/home/mysql/sslconfig/client-key.pem
 

4.4客户端连接时校验服务端认证:

由于创建server使用的服务器域名为zdh-11
校验失败,无法登陆:

mysql -uroot -hlocalhost -pzdh1234  --ssl-ca=/home/mysql/sslconfig/ca.pem --ssl-verify-server-cert
 

校验成功,可以登陆:

mysql -uroot -hzdh-11 -pzdh1234 --ssl-ca=/home/mysql/sslconfig/ca.pem --ssl-verify-server-cert
                                      1.手动创建自认证证书1.1 创建CA证书openssl genrsa 2048 > ca-key.pemopenssl req -new -x509 -nodes -days 3600 \ -key ca-key.pem -out ca.pem 1.2 创建服务端证书,去除加密,使用CA签名    server-cert.pem = ...
MySQL从5.7开始默认开启SSL加密功能,进入MySQL控制台后输入status可以查看ssl的状态,出现下图表示在使用ssl:
另外,ssl加密需要密钥与证书,可以使用openssl手动生成或使用mysql_ssl_rsa_setup自动生成,这里使用了mysql_ssl_rsa_setup.
下面从安装开始.
2 安装(可选)
系统CentOS,直接使用yum安装(编译安装可以...
				
最近,准备升级一组MySQL到5.7版本,在安装完MySQL5.7后,在其data目录下发现多了很多.pem类型的文件,然后通过查阅相关资料,才知这些文件是MySQL5.7使用SSL加密连接的。本篇主要介绍MySQL5.7 SSL连接加密功能、如何使用?以及使用SSL的一些注意点。 我们知道,MySQL5.7之前版本,安全性做的并不够好,比如安装时生成的root空密码账号、存在任何用户都能连接上的test库等,导致数据库存在较大的安全隐患。好在5.7版本对以上问题进行了一一修复。与此同时,MySQL 5.
Mysql使用SSL连接1.描述2.安装 OpenSSL3. 使用 OpenSSL 创建 SSL 证书和私钥3.1 修改mysql 的my.ini配置文件3.2 创建 SSL 证书和私钥3.3 验证是否连接成功4. 添加信任证书到密钥库5.jdbc访问   项目部署时要求对数据库进行加密连接,需要用到SSL连接,记录一下。  首先在 MySQL 上执行如下命令, 查询当前版本的mysql是否支持 SSL:         show variables like '%ssl%'; 当 have
一、SSL介绍 SSL(Secure Socket Layer:安全套接字层)利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。 SSL协议提供的功能主要有: 1、数据传输的机密性:利用对称密钥算法对传输的数据进行加密。 2.、身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。 3、消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。...
1.执行以下命令: ##### mysql5.7 提供的 msyql_ssl_rsa_setup 功能,能直接生成ssl密钥和秘银(该文件一般再 mysql的bin目录下)##### ./mysql_ssl_rsa_setup --datadir=/data/mysql_ssl/ --user=mysql // --datadir=/data/mysql_ssl/ 是目标目录,如果没有需要先创建 执行结果: Gene...
参考:https://www.jb51.net/article/100432.htm、https://www.cnblogs.com/mysql-dba/p/7061300.html 一、SSL介绍 SSL(Secure Socket Layer:安全套接字层)利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。 SSL协议提供的功能主要有: 1、 数据传输的机密性:利用对称密钥算法对传输的数据进行加密。 2.、身...
MySQL 8.0 支持 SSL 加密连接,可以使用 SSL/TLS 协议保证通信安全。以下是在 MySQL 8.0 中启用 SSL 的步骤: 1. 生成 SSL 证书和密钥文件。可以使用 OpenSSL 工具生成,具体命令如下: openssl req -newkey rsa:2048 -nodes -keyout server-key.pem -out server-req.pem openssl rsa -in server-key.pem -out server-key.pem openssl x509 -req -in server-req.pem -days 365 -out server-cert.pem -signkey server-key.pem 以上命令会生成三个文件:server-key.pem(私钥文件)、server-req.pem(证书请求文件)、server-cert.pem(证书文件)。 2. 将证书和密钥文件复制到 MySQL 服务器的安全目录下。可以通过以下命令查看安全目录: mysql_ssl_rsa_setup --help 安全目录默认为 /var/lib/mysql-files,可以使用 --datadir 选项指定。 3. 修改 MySQL 配置文件,启用 SSL。可以在 [mysqld] 段中添加以下配置: ssl-ca=/var/lib/mysql-files/server-cert.pem ssl-cert=/var/lib/mysql-files/server-cert.pem ssl-key=/var/lib/mysql-files/server-key.pem 以上配置指定了 SSL 使用的证书和密钥文件路径。 4. 重启 MySQL 服务。可以使用以下命令重启服务: systemctl restart mysql 重启后,MySQL 就会使用 SSL 加密连接了。可以使用以下命令测试 SSL 连接mysql -u 用户名 -p -h 主机名 --ssl-ca=server-cert.pem 以上命令会使用 SSL 连接MySQL 服务器。注意需要指定 --ssl-ca 选项,指定 CA 证书文件路径。