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

JDBC如何通過SSL方式連接MySQL

 更新時間:2025年02月21日 10:19:33   作者:不會畫畫的畫師  
文章介紹了如何配置MySQL以支持SSL連接,并通過JDBC進行安全連接,主要內(nèi)容包括查看MySQL SSL支持、創(chuàng)建SSL連接用戶、配置用戶是否強制使用SSL、JDBC配置導入證書以及使用Go編寫一個簡單的HTTP文件服務(wù)器來提供SSL證書

環(huán)境說明

MySQL 版本

  • MySQL 5.7.26

pom.xml

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.18</version>
</dependency>

JDK版本

  • JDK 1.8

MySQL配置SSL

查看MySQL是否支持SSL連接

  • 查看MySQL是否支持SSL
SHOW VARIABLES LIKE 'have_ssl'

如果hava_ssl對應(yīng)的值為YES則支持SSL

  • 查詢ssl證書地址
show variables like '%ssl%';

ssl_ca對應(yīng)的就是ssl證書名

創(chuàng)建SSL連接用戶

  • 創(chuàng)建用戶
CREATE USER 'ssler'@'%' IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'ssler'@'%'
  • 查看用戶是否使用ssl
SELECT ssl_type From mysql.user Where user="ssler"

截圖中ssl_type為空字符串,表示該用戶不強制要求使用ssl連接。

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

此時再執(zhí)行

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

ANY表示必須使用ssl連接。

JDBC配置

導入證書

  • 使用jdk自帶的keytool導入mysql的客戶端證書到密鑰倉庫,并生成密鑰文件。
  • 根據(jù)上文查到的ca.pem,將其復制到目標主機上,然后執(zhí)行下述指令
$ keytool -import -trustcacerts -v -alias Mysql -file ca.pem -keystore "mysql.ks"
輸入密鑰庫口令:
再次輸入新口令:
所有者: CN=MySQL_Server_5.7.26_Auto_Generated_CA_Certificate
發(fā)布者: CN=MySQL_Server_5.7.26_Auto_Generated_CA_Certificate
序列號: 1
有效期為 Wed Apr 29 16:32:45 CST 2020 至 Sat Apr 27 16:32:45 CST 2030
證書指紋:
         MD5:  09:E7:41:84:08:B0:70:5F:AC:D6:03:61:CE:F4:50:DE
         SHA1: 6B:EE:FE:B4:74:89:A3:88:6C:49:22:44:6D:FB:88:DE:18:6A:7A:F6
         SHA256: 83:DD:8F:83:71:08:1D:36:D6:C0:2B:23:D2:E9:DC:84:0E:D6:ED:9A:E5:85:DF:7C:7C:52:33:9A:D7:83:0F:29
簽名算法名稱: SHA256withRSA
主體公共密鑰算法: 2048 位 RSA 密鑰
版本: 3

擴展:

#1: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
  CA:true
  PathLen:2147483647
]

是否信任此證書? [否]:  y
證書已添加到密鑰庫中
[正在存儲mysql.ks]

通過指令驗證證書是否導入:

$ 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

將證書放在目標服務(wù)器上

在密鑰倉庫文件生成的文件夾下,配置http服務(wù)器。

此處使用go寫一個http文件服務(wù)器:

package main

import "net/http"

func main()  {
	http.Handle("/", http.FileServer(http.Dir(".")))
	http.ListenAndServe(":9999", nil)
}

將編譯后的go程序放在與mysql.ks同一目錄下,并啟動即可

編寫JDBC代碼

public class JDBCMySQL {

    public static void main(String[] args) {
        Connection connection = null;
        String urlWithCe = "jdbc:mysql://192.168.254.82:13306/cloud?" +
                "useSSL=true&trustCertificateKeyStorePassword=123456&" +
                "trustCertificateKeyStoreUrl=http://localhost:9999/mysql.ks&" +
                "allowMultiQueries=true&" +
                "useUnicode&characterEncoding=UTF-8&" +
                "verifyServerCertificate=false&requireSSL=true";
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            connection = DriverManager.getConnection(urlWithCe,
                    "ssler", "123456");
            PreparedStatement preparedStatement = connection.prepareStatement("select * from " +
                    "cm_user");
            System.out.println(preparedStatement.executeQuery().first());
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
}
  • trustCertificateKeyStorePassword=123456為密鑰倉庫的密碼,在生成密鑰倉庫文件時配置;
  • trustCertificateKeyStoreUrl=http://localhost:9999/mysql.ks為證書放置在http服務(wù)器后的地址

總結(jié)

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

相關(guān)文章

  • Java替換int數(shù)組中重復數(shù)據(jù)的方法示例

    Java替換int數(shù)組中重復數(shù)據(jù)的方法示例

    這篇文章主要介紹了Java替換int數(shù)組中重復數(shù)據(jù)的方法,涉及java針對數(shù)組的遍歷、轉(zhuǎn)換、判斷等相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • IDEA版最新MyBatis程序配置教程詳解

    IDEA版最新MyBatis程序配置教程詳解

    這篇文章主要介紹了IDEA版最新MyBatis程序配置教程詳解,需要的朋友可以參考下
    2020-07-07
  • java實現(xiàn)同態(tài)加密算法的實例代碼

    java實現(xiàn)同態(tài)加密算法的實例代碼

    這篇文章主要給大家介紹了關(guān)于java實現(xiàn)同態(tài)加密算法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • SpringSecurity實現(xiàn)前后端分離的示例詳解

    SpringSecurity實現(xiàn)前后端分離的示例詳解

    Spring Security默認提供賬號密碼認證方式,具體實現(xiàn)是在UsernamePasswordAuthenticationFilter 中,這篇文章主要介紹了SpringSecurity實現(xiàn)前后端分離的示例詳解,需要的朋友可以參考下
    2023-03-03
  • Java實現(xiàn)修改圖片文件名的方法示例

    Java實現(xiàn)修改圖片文件名的方法示例

    在很多應(yīng)用中,用戶需要對文件進行重命名操作,包括圖片文件,圖片文件的重命名操作可以是基于文件內(nèi)容、日期、用戶輸入等,本項目的目標是實現(xiàn)一個Java程序,能夠修改圖片文件的文件名,并進行簡單的文件名處理,需要的朋友可以參考下
    2025-02-02
  • SpringBoot和Vue項目服務(wù)器發(fā)布流程分享

    SpringBoot和Vue項目服務(wù)器發(fā)布流程分享

    本文詳細介紹了如何將SpringBoot和Vue項目發(fā)布到阿里云ECS服務(wù)器上的步驟,包括準備服務(wù)器、安裝寶塔、配置數(shù)據(jù)庫、打包項目、上傳文件、設(shè)置端口、安裝軟件和注冊網(wǎng)站等
    2025-02-02
  • 詳解Spring中Bean的生命周期和作用域及實現(xiàn)方式

    詳解Spring中Bean的生命周期和作用域及實現(xiàn)方式

    這篇文章主要給大家介紹了Spring中Bean的生命周期和作用域及實現(xiàn)方式的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Java編程語言特性和優(yōu)勢

    Java編程語言特性和優(yōu)勢

    這篇文章主要介紹了Java編程語言特性和優(yōu)勢,Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,同時也增加了垃圾回收機制,釋放掉不被使用的內(nèi)存空間,解決了管理內(nèi)存空間的煩惱,下面來聊聊Java編程語言特性和優(yōu)勢吧
    2022-01-01
  • 基于Java實現(xiàn)獲取本地IP地址和主機名

    基于Java實現(xiàn)獲取本地IP地址和主機名

    這篇文章主要介紹了基于Java實現(xiàn)獲取本地IP地址和主機名,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • SpringSecurity入門實戰(zhàn)應(yīng)用場景

    SpringSecurity入門實戰(zhàn)應(yīng)用場景

    本文總結(jié)了基于SpringSecurity的數(shù)據(jù)庫登錄認證實戰(zhàn),包括創(chuàng)建數(shù)據(jù)庫表、實體類、DBUserDetailsManager、配置、密碼加密、添加用戶、自定義SecurityUser、前后端響應(yīng)處理、配置handler、跨域解決、身份認證概念解析及會話并發(fā)處理等內(nèi)容,感興趣的朋友一起看看吧
    2026-04-04

最新評論

河西区| 如皋市| 孟连| 惠东县| 静乐县| 临泉县| 无锡市| 张家港市| 来宾市| 百色市| 安福县| 同德县| 陆丰市| 东丰县| 阿尔山市| 安新县| 日照市| 旬邑县| 睢宁县| 益阳市| 楚雄市| 嘉兴市| 宁津县| 霍山县| 滦平县| 宁河县| 华宁县| 文山县| 孟津县| 柘荣县| 清镇市| 资溪县| 镇沅| 五华县| 新巴尔虎右旗| 临洮县| 彭阳县| 四会市| 章丘市| 恩平市| 上林县|