首页 > 数据库 >java程序通过ssl连接mysql(windows环境)

java程序通过ssl连接mysql(windows环境)

时间:2023-10-30 16:34:49浏览次数:36  
标签:10 java windows ca 30 ssl 2023 mysql true

环境:
OS:windows2012(mysql服务器)
mysql:5.7.29
jdk:1.8

 

说明:
mysql5.7版本安装会自动生成如下的证书文件(可以用不自己再生成ca文件):
ca.pem
client-cert.pem
client-key.pem
同时mysql是默认开启了ssl了的

keytool只使用到ca.pem文件,但是navicate工具这三个文件都会用到.

 

1.进入到ca.pem的目录(将mysql服务器生成的文件根据自己情况下载到相应的目录)

C:\Users\Administrator>cd c:/
c:\>cd win2012_mysql_ca
c:\win2012_mysql_ca>dir
 驱动器 C 中的卷是 OS
 卷的序列号是 8AB0-84EC

 c:\win2012_mysql_ca 的目录

2023/10/30  15:38    <DIR>          .
2023/10/30  15:38    <DIR>          ..
2023/10/30  10:07             1,707 ca-key.pem
2023/10/30  10:07             1,131 ca.pem
2023/10/30  10:07             1,131 client-cert.pem
2023/10/30  10:07             1,703 client-key.

 

2.生成证书(前提需要安装好jdk,keytool是jdk自带的)

c:\win2012_mysql_ca>keytool -importcert -alias MySQLCACert -file ca.pem -keystore truststore -storepass 123456
所有者: CN=MySQL_Server_5.7.29_Auto_Generated_CA_Certificate
发布者: CN=MySQL_Server_5.7.29_Auto_Generated_CA_Certificate
序列号: 1
有效期为 Mon Oct 30 10:07:33 CST 2023 至 Thu Oct 27 10:07:33 CST 2033
证书指纹:
         MD5:  41:B2:EC:07:5A:9C:99:54:5D:43:99:BE:93:F1:19:78
         SHA1: 32:60:1C:73:FB:1F:A7:06:D5:1C:57:B9:F7:39:94:DE:8D:C6:46:23
         SHA256: E9:F9:AF:68:42:8A:7B:13:F2:E3:8E:36:60:19:2F:DE:EB:E5:90:62:5F:FC:7B:4E:94:50:47:74:61:58:B2:4A
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3

扩展:

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

是否信任此证书? [否]:  y
证书已添加到密钥库中

 

这里设置的密码是123456,后面的jdbc连接需要用到这个密码

 

3.这个时候会生成一个文件truststore

c:\win2012_mysql_ca>dir
 驱动器 C 中的卷是 OS
 卷的序列号是 8AB0-84EC

 c:\win2012_mysql_ca 的目录

2023/10/30  15:38    <DIR>          .
2023/10/30  15:38    <DIR>          ..
2023/10/30  10:07             1,707 ca-key.pem
2023/10/30  10:07             1,131 ca.pem
2023/10/30  10:07             1,131 client-cert.pem
2023/10/30  10:07             1,703 client-key.pem
2023/10/30  15:38               846 truststore
               5 个文件          6,518 字节
               2 个目录 11,266,293,760 可用字节

 

若想修改密码,可以删除该文件使用新的密码重新执行keytool重新生成。 

 

 

4.成之后可以查看一下是否生成成功,操作命令

c:\win2012_mysql_ca>keytool -list -keystore truststore
输入密钥库口令: ##这里输入123456
密钥库类型: jks
密钥库提供方: SUN

您的密钥库包含 1 个条目

mysqlcacert, 2023-10-30, trustedCertEntry,
证书指纹 (SHA1): 32:60:1C:73:FB:1F:A7:06:D5:1C:57:B9:F7:39:94:DE:8D:C6:46:23

 

5.java数据库连接

datasource.masterUrl=jdbc:mysql://192.168.1.105:3306/db_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&verifyServerCertificate=true&requireSSL=true&sslMode=verify_ca&trustCertificateKeyStoreUrl=file:C:/win2012_mysql_ca/truststore&trustCertificateKeyStorePassword=123456

 

完整的代码如下:

package ssltest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class mytest {

    Connection con;
    public static String user;
    public static String password;

    public void getConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("数据库驱动加载成功");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        user = "ssltest";
        password = "mysql";  // 填自己的密码
        try {
            //con = DriverManager.getConnection("jdbc:mysql://192.168.1.105:13306/db_test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=true", user, password);

            con = DriverManager.getConnection("jdbc:mysql://192.168.1.105:13306/db_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&verifyServerCertificate=true&requireSSL=true&sslMode=verify_ca&trustCertificateKeyStoreUrl=file:C:/win2012_mysql_ca/truststore&trustCertificateKeyStorePassword=123456", user, password);
            
            
            System.out.println("数据库连接成功");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        mytest c = new mytest();
        c.getConnection();
    }
}

 

 

说明:我这里用到的mysql驱动是5.1.49版本

 

标签:10,java,windows,ca,30,ssl,2023,mysql,true
From: https://www.cnblogs.com/hxlasky/p/17798165.html

相关文章

  • 导出Windows上dll信息的方法
    tasklist/m>d:\dll.txt映像名称PID模块=============================================================================SystemIdleProcess0暂缺......
  • windows server 2012 R2 环境下安装 .NerCore
    windowsserver2012R2环境下安装.NerCore 安装步骤如下1,微软官网下载 .NetCore服务器运行环境  Core运行环境下载地址  https://dotnet.microsoft.com/download/dotnet-core   下载对应版本即可!2,安装成功后cmd运行命令dotnet--info如下图 出现版......
  • JavaScript数据类型的转换
    一、字符串类型的转换1、自动转换<script>varstr='hello';varnum=100;console.log(str+num);console.log(typeof(str+num));</script>2、强制转换String(),object.toString()<script>//string()var......
  • 使用 Java 对比两个PDF文档之间的差异
    不论是在团队写作还是在个人工作中,PDF文档往往会经过多次修订和更新。掌握PDF文档内容的变化对于管理文档有极大的帮助。通过对比PDF文档,用户可以快速找出文档增加、删除和修改的内容,更好地了解文档的演变过程,轻松地管理文档。本文将介绍如何在Java程序中通过代码快速比较......
  • Java 时间戳转换为yyyy-MM-dd格式
    importjava.util.Date;importjava.text.SimpleDateFormat;publicclassTimestampConverter{publicstaticvoidmain(String[]args){longtimestamp=1612345678901L;Datedate=newDate(timestamp);SimpleDateFormatsdf=new......
  • 56基于java的房屋租赁系统设计与实现
    本章节给大家带来一个基于java房屋租赁系统设计与实现,可适用于java租房网站java房子租用,房屋租用,租房管理系统,房屋预约系统,预约看房,房屋资讯,在线房屋信息管理系统等。引言经过调查,目前现代人的生活节奏加快,生活压力也在逐渐的增加,网络的发展给人们带来的便利,随着网上租房网站信......
  • java web jsp 分页显示代码
    <%@pagelanguage="java"contentType="text/html;charset=gb2312"pageEncoding="gb2312"%><%@pageimport="java.sql.*,chap03.*"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN&qu......
  • 当java文件被加密时候,通过.class文件查看代码
    使用jadx-gui.exe工具,或者jd-gui.exe工具查看  ......
  • 企业网站安装SSL证书选哪个好?
    互联网的发展让企业越来越依托于线上业务,因此也意识到了网络安全的重要性,为了保护企业网站的数据安全,很多企业选择安装SSL证书。SSL证书是一种数字证书,通过在服务器和浏览器之间建立加密连接,确保数据在传输过程中的安全性。然而,在安装SSL证书之前,企业需要选择适合自己的证书。本文......
  • 使用RxJava实现多次连续点击的事件监听
    说起响应试编程,要提到的当然是Rx系列的库了,Rx系列的库对于很多语言和平台的运用是非常广泛的,例如(.NET,Java,Scala,Clojure,JavaScript,Ruby,Python,C++,Objective-C/Cocoa,Groovy等等。而本篇将会记录如何使用RxJava对Android点击事件的监听以异步数据流的方式来进行处理,......