centos mysql ssh连接_Mysql Centos SSL/SSH远程访问

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:44   862   0

ps:最近在研究远程数据库的研究,直接用SSH 链接对本身还好,开发给别人就不安全了,那么用什么方式来不经过用户名密码访问远程数据库呢?在数据库链接工具中看到有SSL 链接方式、HTTP链接、SSH链接方式node

1.SSH方式访问

将分配的username@’%’ 数据库用户 填入 常规

SSH 填入服务器的ip 链接用户名,密码。

(链接工具使用 Navicat for MySQL)mysql

2.SSL方式访问

这里会涉及到证书的下载,那么不经过ftp,如何将远程的证书文件download 到本地呢?

经过安装软件解决web

# yum -y install lrzsz

安装完成以后便可进行文件操做sql

1.上传文件到centos

先定位到操做文件夹 # cd /

#rz

82c0c4fa5af2d654cf35258c454176e1.png

从Centos拷贝文件到本地

#sz

67de7ccacfa870520a7a669189020f71.png

1.SSL证书生成(自签名证书)

定位到存储证书的位置数据库

- 生成CA证书

openssl genrsa 2048 > ca-key.pem

openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca.pem

生成服务器证书server-cert.pem、server-key.pem文件 生成新的证书文件,删除密码并用CA证书签名。centos

- 服务器证书生成,CA证书签名

openssl req -newkey rsa:2048 -days 3600 -nodes -keyout server-key.pem -out server-req.pem

下图注意直接Enter跳过不输入

e7260322d3996b29a4100a8b08e1d620.png安全

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

2ad1b6efef270d0960955b271d6ac55b.png

- 客户端证书生成,CA证书签名

openssl req -newkey rsa:2048 -days 3600 -nodes -keyout client-key.pem -out client-req.pem

删除密码

6865a8c281d561f4bf2065e2debb4321.png

RSA Key写入

openssl rsa -in client-key.pem -out client-key.pem

CA证书给客户端证书签名

openssl x509 -req -in client-req.pem -days 3600 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

- 验证证书

用ca证书、服务器证书、客户端证书

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

正确结果,不然对出错的证书从新签名

bc033d19c821fbcff6a803e4e62bd5b3.pngbash

将文件权限授予 mysql,更改秘钥文件权限服务器

受权

chown -R mysql:mysql /etc/certs/

更改权限

chmod 600 client-key.pem server-key.pem ca-key.pem

备份秘钥文件ssh

mkdir -p ~/mysql-certs/

定位到该目录,移动文件

cd /var/lib/mysql/

mv ca.pem ca-key.pem ~/mysql-certs/

mv server-key.pem server-cert.pem ~/mysql-certs/

mv client-key.pem client-cert.pem ~/mysql-certs/

mv private_key.pem public_key.pem ~/mysql-certs/

- Mysql设置SSL

重启mysql服务

systemctl restart mysqld

查看Mysql SSL状态

SHOW GLOBAL VARIABLES LIKE '%ssl%';

status;

d563429dfc68f4c5ce2d633d7a1385bd.png

4b6f0c147434aa9ca8b9e02bcb6d4394.png

图示未开启SSL。

启用Mysql SSL链接 编辑 my.cnf文件

# Type your own certificates directory

ssl-ca=/etc/certs/ca.pem

ssl-cert=/etc/certs/server-cert.pem

ssl-key=/etc/certs/server-key.pem

添加到my.cnf文件中 服务器秘钥证书

a964f45269126dc62aedc0bd46191e4c.png

my.cnf添加客户端 秘钥

ssl-ca=/etc/certs/ca.pem

ssl-cert=/etc/certs/client-cert.pem

ssl-key=/etc/certs/client-key.pem

- Mysql启用远程链接

建立拥有SSL权限的用户

编辑my.cnf文件

bind-address = *

require_secure_transport = ON

重启服务

建立SSL登陆的用户

GRANT ALL PRIVILEGES ON *.* TO 'ssl_test'@'%' IDENTIFIED BY 'ssl_test' REQUIRE SSL;

FLUSH PRIVILEGES;

经过SSL 链接mysql

mysql --ssl-ca=/mysql-certs/ca.pem --ssl-cert=/mysql-certs/client-cert.pem --ssl-key=/mysql-certs/client-key.pem -h 39.106.39.106 -u ssl_test -p

客户端证书导出

# sz ca.pem

# sz client-cert.pem

# sz client-key.pem

SSL链接错误

ERROR 2026 (HY000):

证书文件访问失败

SSL connection error: SSL_CTX_set_default_verify_paths failed

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP