栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mysql使用SSL连接

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mysql使用SSL连接

Mysql使用SSL连接
  • 1.描述
  • 2.安装 OpenSSL
  • 3. 使用 OpenSSL 创建 SSL 证书和私钥
    • 3.1 修改mysql 的my.ini配置文件
    • 3.2 创建 SSL 证书和私钥
    • 3.3 验证是否连接成功
  • 4. 添加信任证书到java密钥库
  • 5. java 配置

1.描述

  项目部署时要求对数据库进行加密连接,需要用到SSL连接,记录一下。
 首先在 MySQL 上执行如下命令, 查询当前版本的mysql是否支持 SSL:

        show variables like '%ssl%';

  • 当 have_ssl 为 YES 时, 表示此时 MySQL 服务已经支持 SSL 了.
  • 如果是 DESABLE, 则需要在启动 MySQL 服务时, 使能 SSL 功能.
  • 如果mysql版本过低,可能不支持SSL ,需要先更新mysql版本:
    删除mysql服务参考链接:彻底卸载MySQL服务.
    安装mysql服务参考链接:win10下mysql的下载、安装以及SSL配置超详解教程.
2.安装 OpenSSL

OPEN SSL下载链接: Win64OpenSSL-3_0_0.msi..

安装步骤:

  1. 下载放置到有效目录,点击Win64OpenSSL-3_0_0.msi进行安装:
  2. 选择目录:


  3. 点击‘finish’:
  4. 新增环境变量:
    参考上述3.3节,新增环境变量:
    变量名:OPENSSL_HOME
    变量值:安装路径 D:OpenSSL-Win64OpenSSL-Win64

    编辑path:在path最后添加 ;%OPENSSL_HOME%bin;
  5. 验证安装是否成功:
    cmd 命令行输入-> openssl
3. 使用 OpenSSL 创建 SSL 证书和私钥 3.1 修改mysql 的my.ini配置文件

到mysql的安装目录,找到my.ini文件,在文件中添加ssl证书文件位置配置:

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
#设置3306端口
port = 3306 
# 设置mysql的安装目录
basedir="D:mysql-5.7.28-winx64_withssl"
# 设置mysql数据库的数据的存放目录
datadir="D:mysql-5.7.28-winx64_withssl/data"
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#skip-grant-tables

#需要开启ssl服务,才需要配置ssl文件路径
ssl-ca=D:mysql-5.7.28-winx64_withssl/data/ca.pem
ssl-cert=D:mysql-5.7.28-winx64_withssl/data/server-cert.pem
ssl-key=D:mysql-5.7.28-winx64_withssl/data/server-key.pem
#【关闭ssl】
#skip_ssl

3.2 创建 SSL 证书和私钥
  • 关闭mysql服务:cmd - > net stop mysql
  • 运行mysql_ssl_rsa_setup.exe:
    进入mysql的bin目录,找到mysql_ssl_rsa_setup.exe,双击运行:
    运行结束后,进入data目录,看到ssl文件(ssl文件位置在my.ini文件中配置指定):
    ca-cert.pem: CA 证书, 用于生成服务器端/客户端的数字证书.
    ca-key.pem: CA 私钥, 用于生成服务器端/客户端的数字证书.
    server-key.pem: 服务器端的 RSA 私钥
    server-req.pem: 服务器端的证书请求文件, 用于生成服务器端的数字证书.
    server-cert.pem: 服务器端的数字证书.
    client-key.pem: 客户端的 RSA 私钥
    client-req.pem: 客户端的证书请求文件, 用于生成客户端的数字证书.
    client-cert.pem: 客户端的数字证书.
    则SSL配置成功。
3.3 验证是否连接成功
  • 以管理员身份运行cmd,进入mysql的bin目录:
  • 启动mysql服务,执行:net start mysql
  • 输入命令登录mysql:mysql -uroot -p
  • 执行:show variables like '%ssl%';

    此时可以看到ssl创建的证书和密钥文件。
4. 添加信任证书到java密钥库
  • 命令行进入msql的data目录下:
    D: -> cd D:mysql-5.7.28-winx64_withssldata
  • 执行命令:
    keytool -importcert -file ca.pem -keystore truststore --storepass 库密码
    执行:keytool -importcert -file ca.pem -keystore truststore --storepass math23456:
  • 执行成功后,系统自动会在data目录下生成truststore库,供java jdbc 连接使用:

truststore文件中存储的证书库,供java jdbc 连接使用。
因此可以多个用户、连接使用同一个证书库,便于多人访问。

  • 将另一个证书也导入这个证书库中,可执行命令:
    keytool -importcert -alias "证书文件名" -file ca.pem -keystore truststore --storepass 库密码
  • 查看证书库中已有的证书,可执行命令:
    keytool -list -keystore ./truststore -storepass 库密码
5. java 配置
  • 将生成的文件配置系统环境变量:

名:JAVA_OPTS
值:-Djavax.net.ssl.trustStore=“上一步中生成文件的本地路径” -Djavax.net.ssl.trustStorePassword=“密码”

  • JDBC配置连接时添加ssl:
jdbc.url=jdbc:mysql://127.0.0.1:3306/mydb?verifyServerCertificate=true&useSSL=true&requireSSL=true
  • 在jdbc创建连接时指定truststore证书位置,如:
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270301.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号