首頁  >  文章  >  資料庫  >  SSL連線的實例教程

SSL連線的實例教程

零下一度
零下一度原創
2017-06-30 15:25:191857瀏覽

                                                為#   * 在生產環境下,安全性總是無法忽視的問題,資料庫安全是重中之重,因為所有的資料都存放在資料庫中

   * 當使用非加密方式連接MySQL資料庫時,在網路中傳輸的所有資訊都是明文的,可以被網路中所有人截取,敏感資訊可能會外洩。在傳送敏感資訊(如密碼)時,可以採用SSL連線的方式。

     *  版本小於5.7.6時依照 MySQL 5.6 SSL設定

的方式進行。

 #2. MySQL 連線方式

    * socket連線 

   * TCP非SSL連線

 

   * SSL安全連線

##SSL安全連線

        * SSL + 密碼連線[version > MySQL 5.7.5]

 

    * SSL + 密碼+ 金鑰連線##    * SSL + 密碼+ 金鑰連線

#3. SSL 簡介

 

  * SSL指的是SSL/TLS,其是一種為了在電腦網路進行安全通訊的加密協定。假設使用者的傳輸不是透過SSL的方式,那麼其在網路中以明文的方式進行傳輸,而這給別有用心的人帶來了可乘之機。所以,現在很多網站其實預設已經開啟了SSL功能,像是Facebook、Twtter、YouTube、淘寶等。

4. 環境[ 關閉SeLinux ]############# ##* ###system 環境#########
##[root@MySQL ~] cat /etc/redhat-release
##CentOS 版本 6.9(最終)
##[root@MySQL ~]
##uname -r
#2.6.32-696.3.2 .el6 .x86_64
## 
[root@MySQL ~]
## getenforce 
#已停用
##* #MySQL環境[ MySQL 5.7安裝
前面章節做詳細介紹]##已

have_openssl 與 have_ssl 值皆為DISABLED表示ssl未開啟

[root@MySQL ~ ]# mysql -p'123'

mysql: [警告] 在指令上使用密碼
線路接口可能不安全。  命令結尾為; 或\g.
您的MySQL 連線id
# 是6
## 伺服器版本: 5.7 .18 MySQL 社群伺服器(GPL)
版權所有(c) 2000、2017、Oracle 和/或 其附屬公司。 保留所有權利。
附屬機構。 其他名稱可能是其各自所有者的商標。 ##'\h'
 
用於
 
幫助。 輸入'\c'#以清除
 
目前輸入語句。
mysql> ##選擇version();
#+------------+
| 版本() |
+------------+
#| 5.7.18    |
+------------+
##1 行
 set (0.00 秒) 
#mysql> 顯示變量,例如
'have%ssl%';
+-------------- - +----------+
| 變數名稱 | 值    |
+---------------+------------+
| 有_openssl | 已停用 |
| have_ssl       | 已停用|
+---------------+----------+
#2 行
in#set#(0.02 秒)
#mysql> 顯示變量,如'port'
;
+----------------+ -- -----+
| 變數名稱 | 值|
+---------------+--------+
# #| 港口          | 3306章#1 行 in set (0.01 秒)
 
##mysql> 顯示變量,如
'datadir';
#+----------------+ -- -----------------+
| 變數名稱 | 值             |
#+---------------+------------------ - +
| 資料目錄       | 
/data/mysql_data/ |
#+---------------+--- ------------------+
1 行 
 集合 (0.01秒)#<div class="line number47 index46 alt2"> <p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; clear: both; height: auto; color: #2c2c2c; font-size: 14px; line-height: 28px; white-space: normal;"><strong><span style="font-family: '微软雅黑', 'Microsoft YaHei';">##5. SSL設定<span style="font-size: 18px;"></span></span></strong></p> <p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; clear: both; height: auto; color: #2c2c2c; font-size: 14px; line-height: 28px; white-space: normal;">   *  <span style="font-family: '微软雅黑', 'Microsoft YaHei';">使用自帶工具產生SSL相關檔案<span style="font-size: 16px;"><br></span></span>## </p> <p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; clear: both; height: auto; color: #2c2c2c; font-size: 14px; line-height: 28px; white-space: normal;"></p>##[root@MySQL ~]<div class="container"> <div class="line number1 index0 alt2">## /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/data/mysql_data<code class="bash plain"> #產生2048 位元RSA 私密金鑰
............................... ................................................................ ....+++
.....+++
#將新私鑰寫入
'ca-key.pem'-----
#產生2048 位元RSA 私密金鑰
... .................................... ................................................ ................................................................ .......................... .........+++
... +++
寫入新的私鑰到
'server-key.pem'--
產生2048位元RSA私密金鑰
#.............+++
#.. ......................................... ....+++
將新的私鑰寫入
'client-key.pem'##-----
# *
查看產生的SSL檔案
[root@MySQL ~]
# ls -l /data/mysql_data/*.pem
-rw---- --1 root root 1679 6 月24 日20:54
/ data/mysql_data/ca-key
.pem#-rw- r--r-- 1 root root 1074 6 月24 日20:54 
/data/mysql_data/ca
.pem-
#- rw-r--r-- 1 root root 1078 6 月24 日20:54 
/data/mysql_data/client-cert.pem
-rw-------- 1 root root 1675 6月24日20:54 
/data/mysql_data/client-key#.pem#<div class="line number6 index5 alt1"> <code class="bash plain">-rw----- 1 root root 1675 6月24日20:54 /data/mysql_data/private_key.pem
##.
-rw-r--r-- 1 root root  451 6月24日20:54 /data/mysql_data/public_key#.pem
#/data/mysql_data/public_key#.
##-rw-r--r-- 1 root root 1078 6月24日20:54 /data/mysql_data/server-cert
.pem -rw-------- 1 root root 1675 6月24日20:54 /data/mysql_data/server-key

#.pem* 重新啟動MySQL 服務

#[root@ MySQL ~] # /etc/init.d/mysqld restart
#關閉 MySQL.. 成功! 
啟動 MySQL。 成功! have_ssl值皆為YES表示ssl開啟成功
## 
mysql> 顯示變量,例如'have%ssl%'
;
+-------------- - +------+
| 變數名稱 | 值|+---------------+--------+# #| 有_openssl | 是   |
#########| have_ssl       | 是   |############+----------------+-------+########## ## #2 行######在### ###set### ###(0.03 秒)######

6. SSL + 密碼連線測試

    * 建立使用者並指定SSL 連線[ MySQL 5.7後建議使用create user 方式建立使用者# ]

 

mysql> create user 'ssl_test'@'%' identified by '123' require SSL;
Query OK, 0 rows affected (0.00 sec)
* 透過密碼連接測試[ 預設採用SSL連接,需要指定不使用SSL連接 ]
[root@MySQL ~]# mysql -h 192.168.60.129 -ussl_test -p'123' --ssl=0
#mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'ssl_test'@#'192.168.60.129' (using password: YES)
#  * 透過SSL + 密碼連線測試

SSL: Cipher in use is DHE-RSA-AES256-SHA 表示透過SSL連線

 

[root@MySQL ~] # mysql -h 192.168.60.129 -ussl_test -p'123'  --ssl
#
mysql:[警告] 在命令#行介面上使用密碼可能不安全。 -ssl 已棄用,並將在未來版本中刪除
。 請改用 --ssl-mode。  命令結尾為; 或\g.
您的MySQL 連線id
# 是12
## 伺服器版本: 5.7 .18 MySQL 社群伺服器(GPL)
版權所有(c) 2000、2017、Oracle 和/或
其附屬公司。 保留所有權利。
附屬機構。 其他名稱可能是其各自所有者的商標。
##'\h'
 
用於 幫助。 輸入'\c'#以
清除
 
目前輸入語句。 ##mysql> \s--------------
mysql  Ver 14.14 Distrib 5.7.18, ##for
 
linux-glibc2.5 (x86_64) 使用  EditLine 包裝器
 
##:     12當前數據庫:  當前用戶:      ssl_test@192.168.60.129 SSL:            密碼##in使用的是DHE-RSA-AES256-SHA
#使用輸出檔:    
''
#使用分隔符號:   ;
伺服器版本:        5.7。 ##/IP 伺服器字元集:latin1
Db     characterset:   latin1
Client characterset:   utf8
Conn.  characters: 1
##1: ##TCP port:      3306
Uptime:         7 min 34 sec##1 29  Slow queries: 0  Opens: 112  Flush tables: 1  Open tables: 105  Queries per second avg: 105  Queries .
#7.
SSL + 密碼+ 金鑰連線

 

    * 建立使用者並指定X509 [ SSL+金鑰] 連線[ #MySQL 5.7後建議使用create user 方式建立使用者

 ]

## ##mysql> create user 'X509_test'@'%' 

identified by 

'123'
 
require X509; Query OK, 0 rows affected (0.00 sec)##* 透過密碼連線測試##* 透過密碼連線測試
#[root@MySQL ~]# mysql -h 192.168.60.129 -uX509_test -p'123' --ssl=0
mysql: [Warning] Using a password on the 
command line interface can be insecure.
ERROR can be insecure.ERROR 10455 28000): Access denied 
for
 user 'X509_test'@'192.168.60.129'#@'192.168.60.129' (using password: YES)
* 透過 SSL + 密碼連線測試
[root@MySQL ~] mysql -h 192.168.60.129 -uX509_test -p'123' --ssl
mysql:[警告]在#指令
mysql:[警告]在
#指令##mysql:[警告]在#指令##mysql:[警告]在#指令##mysql:[警告]在
#指令##mysql:[警告]在#命令

##mysql:[警告]在#命令##mysql:[警告]在#指令

#上使用密碼碼## line 介面可能不安全。

##'192.168.60.129'
 
#(使用密碼:YES)
  *
透過SSL + 密碼+金鑰連線測試
##SSL: 使用的密碼為DHE-RSA-AES256-SHA 表示透過SSL 連線
## [root@MySQL ~]
## mysql -h 192.168.60.129 -uX509_test -p'123 ' --ssl-cert=/data/mysql_data/client-cert.pem --ssl-key=/data/mysql_data/client-key.pem 
#mysql :[警告]在
指令
#行介面上使用密碼可能不安全。  命令結尾為; 或\g.您的MySQL 連線
id
# 是21
## 伺服器版本: 5.7 .18 MySQL 社群伺服器(GPL)
版權所有(c) 2000、2017、Oracle 和/或
其附屬公司。 保留所有權利。
附屬機構。 其他名稱可能是其各自所有者的商標。
##鍵入 'help;'  或 '\h' # 取得  help。 輸入'\c'#以清除 目前輸入語句。 ##mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.7.18, 
##for linux-glibc2.5 (x86_64) 使用  EditLine 包裝器
  ##:     21
當前數據庫: 
當前用戶:      X509_test@192.168.60.129
SSL:            密碼
##in使用的是DHE-RSA-AES256-SHA
#使用輸出檔:     ''#使用分隔符號:   ;
伺服器版本:        5.7。 ##/IP
伺服器字元集:latin1
#Db     字元集:latin1
##客戶端字元集:utf8
康乃狄克州。  字元集:  utf8
TCP 連接埠:      3306正常運作時間:      #   18#1分
執行緒:1 問題:40 慢速查詢:0 開啟:118 更新表:1 開啟表:111 每秒平均查詢:0.036
#- ------- --------

以上是SSL連線的實例教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:MySQL怎麼去除重複資料?下一篇:MySQL怎麼去除重複資料?

相關文章

看更多