- 1.描述
- 2.安装 OpenSSL
- 3. 使用 OpenSSL 创建 SSL 证书和私钥
- 3.1 修改mysql 的my.ini配置文件
- 3.2 创建 SSL 证书和私钥
- 3.3 验证是否连接成功
- 4. 添加信任证书到java密钥库
- 5. java 配置
项目部署时要求对数据库进行加密连接,需要用到SSL连接,记录一下。
首先在 MySQL 上执行如下命令, 查询当前版本的mysql是否支持 SSL:
2.安装 OpenSSLshow variables like '%ssl%';
- 当 have_ssl 为 YES 时, 表示此时 MySQL 服务已经支持 SSL 了.
- 如果是 DESABLE, 则需要在启动 MySQL 服务时, 使能 SSL 功能.
- 如果mysql版本过低,可能不支持SSL ,需要先更新mysql版本:
删除mysql服务参考链接:彻底卸载MySQL服务.
安装mysql服务参考链接:win10下mysql的下载、安装以及SSL配置超详解教程.
OPEN SSL下载链接: Win64OpenSSL-3_0_0.msi..
安装步骤:
- 下载放置到有效目录,点击Win64OpenSSL-3_0_0.msi进行安装:
- 选择目录:
- 点击‘finish’:
- 新增环境变量:
参考上述3.3节,新增环境变量:
变量名:OPENSSL_HOME
变量值:安装路径 D:OpenSSL-Win64OpenSSL-Win64
编辑path:在path最后添加 ;%OPENSSL_HOME%bin;
- 验证安装是否成功:
cmd 命令行输入-> openssl
到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_ssl3.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配置成功。
- 以管理员身份运行cmd,进入mysql的bin目录:
- 启动mysql服务,执行:net start mysql
- 输入命令登录mysql:mysql -uroot -p
- 执行:show variables like '%ssl%';
此时可以看到ssl创建的证书和密钥文件。
- 命令行进入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 连接使用:
5. java 配置truststore文件中存储的证书库,供java jdbc 连接使用。
因此可以多个用户、连接使用同一个证书库,便于多人访问。
- 将另一个证书也导入这个证书库中,可执行命令:
keytool -importcert -alias "证书文件名" -file ca.pem -keystore truststore --storepass 库密码- 查看证书库中已有的证书,可执行命令:
keytool -list -keystore ./truststore -storepass 库密码
- 将生成的文件配置系统环境变量:
名: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证书位置,如:



