如何设置SSL Linux上的MySQL服务器和客户端

A+ A-

在本教程中,我将解释有关 - 如何使用加密的SSH连接建立到MySQL服务器的安全连接,使数据库中的数据将是安全的,哪些是不可能的黑客窃取数据。 SSL是用来验证SSL证书,可以防止网络钓鱼攻击的手段。 这也将告诉你 - 如何在MySQL服务器上启用SSL还。

启用S​​SL支持

连接到MySQL服务器,并检查MySQL服务器的SSL状态

 #MySQL的ü根 -  P
MySQL的>显示变量,如'%SSL%';
输出: 
 + --------------- + ---------- +
| VARIABLE_NAME | 值|
+ --------------- + ---------- +
| have_openssl | 禁用|
| have_ssl | 禁用|
| ssl_ca | |
| ssl_capath | |
| ssl_cert | |
| ssl_cipher | |
| ssl_key | |
+ --------------- + ---------- +
7行中集(0.00秒)
MySQL的> \ Q
再见 

为MySQL生成SSL证书

用于存储证书文件创建一个目录

 #MKDIR在/ etc /证书
#CD的/ etc /证书 

生成服务器证书

 #OpenSSL的genrsa 2048> CA-key.pem
生成RSA私钥,2048位模数长
.................................................. ................................. +++
.......... +++
e为65537(0x10001)
#OpenSSL的REQ -newkey RSA:2048 -days 1000 -nodes -keyout服务器key.pem>服务器req.pem
生成2048位的RSA私钥
.................. +++
.................................................. ........................................... +++
写新的私钥“服务器key.pem”
您将被要求输入将被纳入信息
到你的证书请求。
你即将进入就是所谓的专有名称或DN。
有相当多的领域,但你可以留下一些空白
对于某些领域会有一个默认值,
如果您输入“。”,字段将空白。
-----
国名(2字母代码)[XX]:
州或省名称(全称)[]:
地点名称(例如,市)[默认市]:
组织名称(例如,公司)[默认有限公司]
组织单位名称(如部分)[]:
通用名称(例如,您的姓名或服务器的主机名)[]:
电子邮件地址 []:
请输入下面的“额外”的属性
与您的证书请求被发送
一个挑战密码[]:
一个可选的公司名称】:

 #OpenSSL的X​​509 -req -in服务器req.pem -days 1000年-CA CA-cert.pem -CAkey CA-key.pem -set_serial 01>服务器cert.pem
签名确认
主题= / C = XX / L =默认市/ O =默认有限公司
错误打开CA证书CA-cert.pem
139991633303368:错误:02001002:系统库:FOPEN:没有这样的文件或目录:bss_file.c:398:的fopen('CA-cert.pem','R')
139991633303368:错误:20074002:BIO套路:FILE_CTRL:系统lib目录下:bss_file.c:400:
无法加载证书
生成客户端证书

 #OpenSSL的REQ -newkey RSA:2048 -days 1000 -nodes -keyout客户key.pem>客户req.pem
生成2048位的RSA私钥
............................................................ +++
................. +++
写新的私钥“客户key.pem”
-----
您将被要求输入将被纳入信息
到你的证书请求。
你即将进入就是所谓的专有名称或DN。
有相当多的领域,但你可以留下一些空白
对于某些领域会有一个默认值,
如果您输入“。”,字段将空白。
-----
国名(2字母代码)[XX]:
州或省名称(全称)[]:
地点名称(例如,市)[默认市]:
组织名称(例如,公司)[默认有限公司]
组织单位名称(如部分)[]:
通用名称(例如,您的姓名或服务器的主机名)[]:
电子邮件地址 []:
请输入下面的“额外”的属性OpenSSL的X​​509 -req -in客户req.pem -days 1000 -CA钙#cert.pem -CAkey CA-key.pem -set_serial 01>客户cert.pem
签名确认
主题= / C = XX / L =默认市/ O =默认有限公司
错误打开CA证书CA-cert.pem
140327140685640:错误:02001002:系统库:FOPEN:没有这样的文件或目录:bss_file.c:398:的fopen('CA-cert.pem','R')
140327140685640:错误:20074002:BIO套路:FILE_CTRL:系统lib目录下:bss_file.c:400:
无法加载证书对您的证书请求被发送
一个挑战密码[]:
一个可选的公司名称】: 

现在打开my.cnf文件并添加证书

 #六/etc/my.cnf中
[mysqld的]
SSL-CA =的/ etc /证书/ cacert.pem
SSL证书=的/ etc /证书/服务器cert.pem
SSL密钥=的/ etc /证书/服务器key.pem 

重新启动MySQL服务器,并检查证书的状态

 #服务的mysqld重启 
#mysql -uroot -p
MySQL的>显示变量,如'%SSL%';
+ --------------- + --------------------------------- -  +
| VARIABLE_NAME | 值|
+ --------------- + --------------------------------- -  +
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /etc/certificates/cacert.pem |
| ssl_capath | |
| ssl_cert | /etc/certificates/server-cert.pem |
| ssl_cipher | |
| ssl_key | /etc/certificates/server-key.pem |
+ --------------- + --------------------------------- -  +
7行中集(0.00秒) 

创建具有SSL访问用户

 MySQL的> GRANT ALL PRIVILEGES ON *已确定BY'密码'ssl_user'@'%'要求SSL。
MySQL的> FLUSH PRIVILEGES; 

配置SSL为MySQL客户端

从服务器端,我们需要客户cert.pem客户key.pem客户req.pem从服务器复制到客户端。

 #SCP的/ etc /证书/客户cert.pem root@192.168.87.158:在/ etc /证书
#SCP的/ etc /证书/客户key.pem root@192.168.87.158:在/ etc /证书
#SCP的/ etc /证书/客户req.pem root@192.168.87.158:在/ etc /证书 

一旦传输到客户端文件连接到客户端并尝试使用SSL证书来连接到MySQL。

 #mysql的--ssl-CA = CA-cert.pem --ssl证书=客户cert.pem --ssl键=客户key.pem -h 192.168.87.156 -u ssluser -p
欢迎到MySQL监视器。 命令终止与; 或一个\ g。
你的MySQL连接ID为3
服务器版本:73年5月1日源代码分发
版权所有(c)2000,2013,Oracle和/或其附属公司。 版权所有。
Oracle是Oracle公司和/或注册商标。其
分支机构。 其他名称可能是其各自公司的商标
拥有者。
键入'帮助;“ 为帮助或'\ H'。 键入'\ c'来清除当前输入语句。
MySQL的>状态
--------------
MySQL的版本14.14 DISTRIB 73年5月1日,使用readline的5.1的redhat-Linux的GNU下(x86_64)
连接ID:3
当前数据库:
当前用户:根@本地
SSL:Clipher在使用中DHE-RSA-AES256-SHA
当前寻呼机:标准输出
使用OUTFILE:''
使用分隔符:;
服务器版本:73年5月1日源代码分发
协议版本:10
通过TCP / IP 192.168.87.158:连接
服务器字符集:LATIN1
DB字符集:LATIN1
客户端字符集:LATIN1
。康涅狄格州字符集:LATIN1
UNIX套接字:/var/lib/mysql/mysql.sock
运行时间:11分13秒
主题:问题1:8慢速查询:0打开:15 FLUSH TABLES:1打开表:每秒平均8查询:0.11
------------- 

后来,在/etc/my.cnf文件里添加设置,永久这样当我们连接到MySQL服务器,我们应该使用SSL连接。

 #六/etc/my.cnf中
[客户]
SSL-CA =的/ etc /证书/客户cert.pem
SSL证书=的/ etc /证书/客户cert.pem
SSL密钥=的/ etc /证书/客户key.pem 

这个配置现在设置完毕后,你可以能够使用SSL密钥来保护窃取数据和数据从客户端连接到MySQL服务器也从黑客固定数据。

Ads

分享

最近

最好的Ubuntu的替代寻找,如果你是一个Linux爱好者

首先,让我们越来越熟悉的东西; 基本的,但有点偏离轨道! 你有没有得到使用Linux和Ubuntu方面困惑? 你任何机...

如何在Gmail收件箱中添加签名 - 添加在Gmail谷歌的签名

收件箱由谷歌为谷歌的在过去几年推出的最好的事情之一。 它带入一个统一的收件箱几乎所有我们想要的一切。 我们必须说,设计...

每周科技新闻:诺基亚,谷歌和任天堂

大家好,这是星期五,3月3日,只是像往常一样,我们又回到我们的每周新闻综述。 本周的新闻有很多有趣的报道。 从诺基亚的...

树莓派项目入门 - 你可以用树莓派做些什么

树莓Pi为一系列低功耗,由莓裨基金会创建单板计算机。 最初创建教孩子们计算机科学和编程的基础知识在发展中国家中,树莓派...

Android的2017年最佳VPN - 如何使用VPN在安卓

一去不复返的VPN只为高科技,savvies和黑客的天! 而且,承认这一点,我们已经受够了易怒的演讲有关这些服务的。 ...

注释