ホームページ >データベース >mysql チュートリアル >SSL接続のチュートリアル例

SSL接続のチュートリアル例

零下一度
零下一度オリジナル
2017-06-30 15:25:191928ブラウズ

1。 暗号化されていない方法を使用して MySQL データベースに接続すると、ネットワーク内で送信されるすべての情報が平文で送信されるため、ネットワーク上の全員が傍受する可能性があり、機密情報が漏洩する可能性があります。機密情報(パスワードなど)を送信する場合は、SSL接続を使用できます。

* バージョンが5.7.6未満の場合は、MySQL 5.6 SSL設定

の方法に従ってください。

2. MySQL接続方法

*

ソケット接続

* TCP非SSL接続

* SSLセキュア接続

* SSL + パスワード + キー接続

3. SSLの紹介

*

SSLとはSSL/TLSを指し、コンピュータネットワーク上で安全な通信を行うための暗号化プロトコルです。ユーザーの送信が SSL を介さないと仮定すると、ネットワーク上では平文で送信されるため、不純な動機を持つ人々にチャンスが与えられます。そのため、Facebook、Twitter、YouTube、淘宝網など、多くの Web サイトでは実際にデフォルトで SSL が有効になっています。

4. 環境 [SeLinuxをオフにする]

*

システム環境

[root@MySQL ~]# cat /etc/redhat-release [root@MySQL ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@MySQL ~]# uname -r
 
2.6.32-696.3.2.el6.x86_64
 
[root@MySQL ~]# getenforce 
Disabled

MySQL 环境 [ MySQL 5.7安装前面篇章已做详细介绍 ]

 have_openssl 与 have_ssl 值都为DISABLED表示ssl未开启

[root@MySQL ~]# mysql -p'123'
mysql: [Warning] Using a password on the command line interface can be insecure.
 
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 6
Server version: 5.7.18 MySQL Community Server (GPL)
 
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
CentOS リリース 6.9 (最終版)
[root@MySQL ~] # uname -r
2.6.32-696.3.2.el6.x86_64🎜<div class="linenumber6index5alt1"> 🎜<divclass><code class="bash plain ">[root@MySQL ~]# getenforce 🎜
無効🎜🎜<p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; clear: Both; height: auto; color: #2c2c2c; font-family: '宋体', 'Arial Narrow ', arial, serif; フォントサイズ: 14px; 行の高さ: 28px;">* <span style="padding: 0px; font-family: '微软雅黑', 「Microsoft YaHei」; font-size: 16px;">MySQL 環境 [ <span style="padding: 0px;マージン: 0px; font-size: 16px;">MySQL 5.7 インストール</span><span style="padding: 0px;マージン: 0px;フォントファミリー: '微软雅黑'、'Microsoft YaHei'; font-size: 16px;">前篇章已详细介绍 ]</span></span></p> <p style="padding: 0px;マージントップ: 0px;マージンボトム: 0px;クリア:両方。高さ: 自動;色: #2c2c2c; font-family: '宋体'、'Arial Narrow'、arial、serif;フォントサイズ: 14px;行の高さ: 28px;ホワイトスペース: 通常;"><span style="padding: 0px;マージン: 0px;フォントファミリー: '微软雅黑'、'Microsoft YaHei'; font-size: 16px;"><span style="padding: 0px;マージン: 0px; font-family: '微软雅黑', 'Microsoft YaHei';"> <span style="padding: 0px;マージン: 0px;フォントファミリー: '微软雅黑'、'Microsoft YaHei'; font-size: 16px;"><strong style="padding: 0px;マージン: 0px;色: #2c2c2c;フォントファミリー: '微软雅黑'、'Microsoft YaHei';フォントサイズ: 14px;行の高さ: 28px; white-space:normal;">have_openssl 与 have_ssl 值都のためにDISABLED表示ssl未开启</strong></span></span></span></p>🎜🎜<code class="bash plain"> [root@MySQL ~]# mysql -p'123'🎜
mysql: [警告] コマンドラインインターフェイスでパスワードを使用すると、安全性が低下する可能性があります。🎜 🎜MySQL モニターへようこそ。コマンドは; または g で終わります。🎜MySQL 接続idは次のとおりです。 6🎜
サーバーバージョン: 5.7.18 MySQL Community Server (GPL)🎜<div class="linenumber7 index6 alt2"> 🎜<div class="linenumber8index7 alt1"> <code class="bash plain">著作権 (c) 2000, 2017, Oracle および/または そのアフィリエイト。 すべての権利は留保されています。🎜
🎜Oracle は Oracle Corporation の登録商標です。 /または その🎜
アフィリエイト。 その他の名前は、それぞれの🎜<div class="linenumber12index11alt1"><codeclass plain>所有者の商標である場合があります。🎜<div class="linenumber13index12alt2"> 🎜<div class="linenumber14index13alt1"> <code class="bash plain">入力'help;' または'h'ヘルプ。 「c」と入力してclear現在の入力ステートメント。🎜🎜 🎜
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.18    |
+-----------+
1 row in set (0.00 sec)
 
mysql> show variables like 'have%ssl%';
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_openssl  | DISABLED |
| have_ssl      | DISABLED |
+---------------+----------+
2 rows in set (0.02 sec)
 
mysql> show variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
1 row in set (0.01 sec)
 
mysql> show variables like 'datadir';
+---------------+-------------------+
| Variable_name | Value             |
+---------------+-------------------+
| datadir       | /data/mysql_data/ |
+---------------+-------------------+
1 row in set (0.01 sec)

5. SSL 構成

* 自带ツールを利用して SSL 関連文書を生成

[root@MySQL ~]# /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/data/mysql_data[root@MySQL ~]# /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/data/mysql_data
Generating a 2048 bit RSA private key
..........................................................................+++
.....+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key
.......................................................................................................................................................................+++
...+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key
.....................+++
...........................................+++
writing new private key to 'client-key.pem'
-----
 * 查看生成的SSL文件
[root@MySQL ~]# ls -l /data/mysql_data/*.pem
-rw------- 1 root root 1679 Jun 24 20:54 /data/mysql_data/ca-key.pem
-rw-r--r-- 1 root root 1074 Jun 24 20:54 /data/mysql_data/ca.pem
-rw-r--r-- 1 root root 1078 Jun 24 20:54 /data/mysql_data/client-cert.pem
-rw------- 1 root root 1675 Jun 24 20:54 /data/mysql_data/client-key.pem
生成2048 ビット RSA 秘密鍵
................................. ................................................................... ....+++🎜
....+++🎜
新しい秘密鍵を「ca-key.pem」に書き込む🎜
-----🎜
2048 ビット RSA の生成秘密鍵🎜
................................ ................................................................... ................................................................... ...................................................+++🎜
...+++🎜<div class="linenumber10index9alt1"> <code class="bash plain">新しい秘密鍵を「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🎜<div class="linenumber3index2alt2"><codeclass plain>-rw-r--r--1 root root 1074 Jun 24 20:54 <code class="bash plain">/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 code><code class="bash plain">/data/mysql_data/client-key.pem🎜
-rw------ 1 root root 1675 6月 24 20:54 /data/mysql_data/private_key.pem-rw------- 1 root root 1675 Jun 24 20:54 /data/mysql_data/private_key.pem
-rw-r--r-- 1 root root  451 Jun 24 20:54 /data/mysql_data/public_key.pem
-rw-r--r-- 1 root root 1078 Jun 24 20:54 /data/mysql_data/server-cert.pem
-rw------- 1 root root 1675 Jun 24 20:54 /data/mysql_data/server-key.pem
* 重启 MySQL 服务
[root@MySQL ~]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS!
  * 连接MySQL 查看SSL开启状态

     have_openssl 与 have_ssl 值都为YES表示ssl开启成功

 

mysql> show variables like 'have%ssl%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl  | YES   |
| have_ssl      | YES   |
+---------------+-------+
2 rows in set (0.03 sec)
-rw-r--r-- 1 root root 451 6 月 24 日 20:54 /data/mysql_data/public_key.pem
-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 をシャットダウンしています。成功しました! 🎜<div class="linenumber3index2alt2"> <code class="bash plain">MySQL を起動します。 成功!🎜
* 连接MySQL 查看SSL开启状態态

have_openssl 与 have_ssl 值都是表示 ssl开启>

mysql> ; 'have%ssl%' のような変数を表示;🎜
+--------------+--------+🎜
| 変数名 | 値 |🎜
+---------------+------ -+🎜
| have_openssl | はい |🎜🎜| have_ssl | はい |🎜
+---------------+------ -+🎜
2 行 set (0.03 秒)🎜

6. SSL + パスワード接続テスト

* ユーザーを作成し、SSL接続を指定します [MySQL 5.7以降ではcreate userを使用することを推奨します。ユーザーを作成する ]

mysql> ユーザーの作成 'ssl_test'@'%' によって識別されます'123' SSL が必要;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
クエリ OK、影響を受ける行は 0 件(0.00 秒)
🎜 * パスワード接続によるテスト[🎜デフォルトではSSL接続が使用されます。SSL接続を使用しないように指定する必要があります🎜]🎜🎜🎜
🎜🎜 [root@MySQL ~]# mysql -h 192.168.60.129 -ussl_test -p'123' --ssl=0🎜
mysql: [警告] コマンドでのパスワードの使用line インターフェイスは安全でない可能性があります。🎜
エラー 1045 (28000): アクセスが拒否されました code>for ユーザー 'ssl_test'@ code><code class="bash string">'192.168.60.129' (パスワードを使用: YES)🎜
🎜🎜 * SSL + パスワード接続によるテスト🎜🎜🎜

🎜 SSL: 使用中の暗号は DHE-RSA-AES256-SHA は SSL 経由で接続することを意味します🎜🎜🎜

🎜🎜 🎜[root@MySQL ~]# mysql -h 192.168.60.129 -ussl_test -p'123' - -ssl 🎜

mysql: [Warning] Using a password on the command line interface can be insecure.
WARNING: --ssl is deprecated and will be removed in a future version. Use --ssl-mode instead.
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 12
Server version: 5.7.18 MySQL Community Server (GPL)
 
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
 
mysql> s
--------------
mysql  Ver 14.14 Distrib 5.7.18, for linux-glibc2.5 (x86_64) using  EditLine wrapper
 
Connection id:     12
Current database: 
Current user:      ssl_test@192.168.60.129
SSL:            Cipher in use is DHE-RSA-AES256-SHA
Current pager:     stdout
Using outfile:     ''
Using delimiter:   ;
Server version:        5.7.18 MySQL Community Server (GPL)
Protocol version:  10
Connection:     192.168.60.129 via TCP/IP
Server characterset:   latin1
Db     characterset:   latin1
Client characterset:   utf8
Conn.  characterset:  utf8
TCP port:      3306
Uptime:         7 min 34 sec
 
Threads: 1  Questions: 29  Slow queries: 0  Opens: 112  Flush tables: 1  Open tables: 105  Queries per second avg: 0.063
--------------

 

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 1045 (28000): Access denied for user 'X509_test'@'192.168.60.129' (using password: YES)
* 通过 SSL +密码 连接测试
[root@MySQL ~]# mysql -h 192.168. 60.129 -uX509_test -p'123' --ssl[root@MySQL ~]# mysql -h 192.168.60.129 -uX509_test -p'123' --ssl
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'X509_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 -uX509_test -p'123' --ssl-cert=/data/mysql_data/client-cert.pem --ssl-key=/data/mysql_data/client-key.pem 
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 21
Server version: 5.7.18 MySQL Community Server (GPL)
 
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
mysql: [警告] でのパスワードの使用コマンド 回線インターフェイス が安全でない可能性があります。
エラー 1045 (28000):アクセスが拒否されましたユーザー'X509_test' @'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: [警告] コマンド でのパスワードの使用line インターフェースは安全でない可能性があります。🎜🎜MySQL モニターへようこそ。コマンドは; または g で終わります。🎜
あなたの MySQL 接続 id は 21です🎜
サーバーバージョン: 5.7.18 MySQL Community Server (GPL)🎜
🎜
Copyright (c) 2000, 2017, Oracle および/または そのアフィリエイト。 すべての権利は留保されています。🎜
🎜
Oracle は、Oracle Corporation の登録商標です。 /または その🎜
アフィリエイト。 その他の名前は、それぞれの🎜<div class="linenumber11index10alt2"> <code class="bash plain">所有者の商標である場合があります。🎜🎜 🎜
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
 
mysql> s
--------------
mysql  Ver 14.14 Distrib 5.7.18, for linux-glibc2.5 (x86_64) using  EditLine wrapper
 
Connection id:     21
Current database: 
Current user:      X509_test@192.168.60.129
SSL:            Cipher in use is DHE-RSA-AES256-SHA
Current pager:     stdout
Using outfile:     ''
Using delimiter:   ;
Server version:        5.7.18 MySQL Community Server (GPL)
Protocol version:  10
Connection:     192.168.60.129 via TCP/IP
Server characterset:   latin1
Db     characterset:   latin1
Client characterset:   utf8
Conn.  characterset:  utf8
TCP port:      3306
Uptime:         18 min 27 sec
 
Threads: 1  Questions: 40  Slow queries: 0  Opens: 118  Flush tables: 1  Open tables: 111  Queries per second avg: 0.036
--------------

以上がSSL接続のチュートリアル例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:MySQL で重複データを削除するにはどうすればよいですか?次の記事:MySQL で重複データを削除するにはどうすればよいですか?

関連記事

続きを見る