最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL配置SSL并修改JDBC連接配置過程

 更新時間:2025年11月20日 09:43:58   作者:愛是與世界平行  
本文介紹了如何使用OpenSSL創(chuàng)建SSL證書和私鑰,以及如何在MySQL中配置SSL以支持安全連接,此外,還詳細(xì)說明了如何在Java中使用JDBC配置SSL連接

一、使用 OpenSSL 創(chuàng)建 SSL 證書和私鑰

  • 根據(jù)自己的操作系統(tǒng)下載Win(xx)OpenSSL安裝
  • 新建一個目錄用于存放生成的證書和私鑰
//生成一個 CA 私鑰
openssl genrsa 2048 > cert/ca-key.pem
//使用私鑰生成一個新的數(shù)字證書,執(zhí)行這個命令時, 會需要填寫一些問題, 隨便填寫就可以了
openssl req -sha1 -new -x509 -nodes -days 3650 -key ./cert/ca-key.pem > cert/ca-cert.pem
//創(chuàng)建服務(wù)器端RSA 私鑰和數(shù)字證書,這個命令會生成一個新的私鑰(server-key.pem), 同時會使用這個新私鑰來生成一個證書請求文件(server-req.pem).
//這個命令同樣需要回答幾個問題, 隨便填寫即可. 不過需要注意的是, A challenge password 這一項需要為空
openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout cert/server-key.pem > cert/server-req.pem
//將生成的私鑰轉(zhuǎn)換為 RSA 私鑰文件格式
openssl rsa -in cert/server-key.pem -out cert/server-key.pem
//使用原先生成的 CA 證書來生成一個服務(wù)器端的數(shù)字證書
openssl x509 -sha1 -req -in cert/server-req.pem -days 3650 -CA cert/ca-cert.pem -CAkey cert/ca-key.pem -set_serial 01 > cert/server-cert.pem
//創(chuàng)建客戶端的 RSA 私鑰和數(shù)字證書
openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout cert/client-key.pem > cert/client-req.pem
//將生成的私鑰轉(zhuǎn)換為 RSA 私鑰文件格式
openssl rsa -in cert/client-key.pem -out cert/client-key.pem
//為客戶端創(chuàng)建一個數(shù)字證書
openssl x509 -sha1 -req -in cert/client-req.pem -days 3650 -CA cert/ca-cert.pem -CAkey cert/ca-key.pem -set_serial 01 > cert/client-cert.pem

1.1 SSL 配置

在前面的步驟中, 我們已經(jīng)生成了8個文件, 分別是:

  • ca-cert.pem: CA 證書, 用于生成服務(wù)器端/客戶端的數(shù)字證書.
  • ca-key.pem: CA 私鑰, 用于生成服務(wù)器端/客戶端的數(shù)字證書.
  • server-key.pem: 服務(wù)器端的 RSA 私鑰
  • server-req.pem: 服務(wù)器端的證書請求文件, 用于生成服務(wù)器端的數(shù)字證書.
  • server-cert.pem: 服務(wù)器端的數(shù)字證書.
  • client-key.pem: 客戶端的 RSA 私鑰
  • client-req.pem: 客戶端的證書請求文件, 用于生成客戶端的數(shù)字證書.
  • client-cert.pem: 客戶端的數(shù)字證書.

二、查看數(shù)據(jù)庫是否支持 SSL

首先在 MySQL 上執(zhí)行如下命令, 查詢是否 MySQL 支持 SSL:

mysql> SHOW VARIABLES LIKE 'have_ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl      | YES   |
+---------------+-------+
1 row in set (0.02 sec)

當(dāng) have_ssl 為 YES 時, 表示此時 MySQL 服務(wù)已經(jīng)支持 SSL 了. 如果是 DESABLE, 則需要在啟動 MySQL 服務(wù)時, 使能 SSL 功能.

2.1 設(shè)置MySQL配置文件,開啟SSL驗證

vi my.cnf

# 在mysqld下面添加如下配置
[mysqld]
require_secure_transport = ON

2.2 配置MySQL的SSL

接下來我們就需要分別配置服務(wù)器端和客戶端:

  • 服務(wù)器端配置
  • 服務(wù)器端需要用到三個文件, 分別是: CA 證書, 服務(wù)器端的 RSA 私鑰, 服務(wù)器端的數(shù)字證書, 我們需要在 [mysqld] 配置域下添加如下內(nèi)容:
[mysqld]
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

接著我們還可以更改 bind-address, 使 MySQL 服務(wù)可以接收來自所有 ip 地址的客戶端, 即:

bind-address = *

當(dāng)配置好后, 我們需要重啟 MySQL 服務(wù)

最后一步, 我們添加一個需要使用 SSL 才可以登錄的帳號, 來驗證一下我們所配置的 SSL 是否生效:

GRANT ALL PRIVILEGES ON *.* TO 'ssl_test'@'%' IDENTIFIED BY 'ssl_test' REQUIRE SSL;
FLUSH PRIVILEGES;
  • 查看用戶是否使用ssl
SELECT ssl_type From mysql.user Where user="ssler"

ssl_type為空字符串,表示該用戶不強(qiáng)制要求使用ssl連接。

  • 配置用戶必須使用ssl連接
ALTER USER 'ssler'@'%' REQUIRE SSL;
FLUSH PRIVILEGES

此時再執(zhí)行

SELECT ssl_type From mysql.user Where user="ssler"

ANY表示必須使用ssl連接。

當(dāng)配置好后, 使用 root 登錄 MySQL

mysql --ssl-ca="D:/Program Files/OpenSSL-Win64/bin/cert/ca-cert.pem" --ssl-cert="D:/Program Files/OpenSSL-Win64/bin/cert/client-cert.pem" --ssl-key="D:/Program Files/OpenSSL-Win64/bin/cert/client-key.pem"  -u coisini -p

當(dāng)連接成功后, 我們執(zhí)行 show variables like ‘%ssl%’ 語句會有如下輸出:

mysql> show variables like '%ssl%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | YES             |
| have_ssl      | YES             |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+
9 rows in set (0.01 sec)

三、JAVA-JDBC配置

使用jdk自帶的keytool導(dǎo)入mysql的客戶端證書到密鑰倉庫,并生成密鑰文件。

根據(jù)上文查到的ca.pem,將其復(fù)制到目標(biāo)主機(jī)上,然后執(zhí)行下述指令

  • 使用該命令生成java使用SSL連接所需的文件:
keytool -importcert -alias MySQLCACert -file "D:\Program Files\OpenSSL-Win64\bin\cert\ca-cert.pem" -keystore truststore -storepass 密碼
  • 通過指令驗證證書是否導(dǎo)入
$ keytool -list -keystore mysql.ks
輸入密鑰庫口令:
密鑰庫類型: jks
密鑰庫提供方: SUN

您的密鑰庫包含 1 個條目

mysql, 2020-6-9, trustedCertEntry,
證書指紋 (SHA1): 6B:EE:FE:B4:74:89:A3:88:6C:49:22:44:6D:FB:88:DE:18:6A:7A:F6
  • 將生成的文件配置系統(tǒng)環(huán)境變量
名:JAVA_OPTS 
值:-Djavax.net.ssl.trustStore="上一步中生成文件的本地路徑" -Djavax.net.ssl.trustStorePassword="密碼"
  • JDBC配置連接
##jdbc.properties:
yxaq.dz=jdbc:mysql://127.0.0.1:3306/yxaqgl?verifyServerCertificate=true&useSSL=true&requireSSL=true

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

泸州市| 揭西县| 衡山县| 连平县| 闽清县| 安乡县| 建德市| 厦门市| 柳林县| 赤城县| 高安市| 电白县| 东山县| 井冈山市| 濮阳市| 宁海县| 涞水县| 灌南县| 司法| 北海市| 通山县| 朝阳县| 文山县| 廉江市| 博野县| 赣州市| 祁门县| 石家庄市| 宣汉县| 上虞市| 铜梁县| 孟村| 万源市| 芦溪县| 靖远县| 广宗县| 金沙县| 嘉荫县| 松江区| 阳新县| 剑川县|