【MYSQL8】springboot項目,開啟ssl證書安全連接

文章目錄

  • 一、開啟ssl證書
    • 1、msysql部署時默認開啟ssl證書
    • 2、配置文件
    • 3、創建用戶并指定ssl
  • 二、添加Java信任庫
    • 1、使用 keytool 導入證書
    • 2、驗證證書是否已導入
  • 三、修改連接配置


一、開啟ssl證書

1、msysql部署時默認開啟ssl證書

可通過命令查看:

SHOW VARIABLES LIKE '%have_ssl%';  

查詢結果如下:
在這里插入圖片描述

2、配置文件

配置my.cnf文件:

vi my.cnf
[mysql]
ssl-ca = /opt/mysqldata/data/ca.pem
ssl-cert = /opt/mysqldata/data/client-cert.pem
ssl-key = /opt/mysqldata/data/client-key.pem
[mysqld]
require_secure_transport = ON
ssl-ca = /opt/mysqldata/data/ca.pem
ssl-cert = /opt/mysqldata/data/server-cert.pem
ssl-key = /opt/mysqldata/data/server-key.pem

在這里插入圖片描述
文件說明:
ca.pem # 自簽的CA證書,客戶端連接也需要提供
client-cert.pem # 客戶端連接服務器端需要提供的證書文件
client-key.pem # 客戶端連接服務器端需要提供的私鑰文件
server-cert.pem # 服務器端證書文件
server-key.pem # 服務器端私鑰文件

3、創建用戶并指定ssl

create user jk_dev@'%' identified with mysql_native_password by '密碼';
alter user 'jk_dev'@'%' require ssl;
grant all privileges on *.* to 'jk_dev'@'%';
flush privileges;

二、添加Java信任庫

1、使用 keytool 導入證書

運行以下命令將 CA 證書導入到 Java 信任庫:

keytool -import -alias mysql_ca -file /opt/mysqldata/data/ca.pem -keystore $JAVA_HOME/jre/lib/security/cacerts

執行時需要輸入信任庫密碼(默認為changeit)。

2、驗證證書是否已導入

運行以下命令驗證是否已導入:

keytool -list -alias mysql_ca -keystore $JAVA_HOME/jre/lib/security/cacerts

如果證書未導入,Java無法將 MySQL 服務器提供的證書鏈追溯到它信任的根證書,連接時會報錯:

Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchorsat com.mysql.cj.protocol.ExportControlled$X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:379)at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:1255)at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:630)... 81 common frames omitted
Caused by: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchorsat sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:159)at sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:85)at java.security.cert.CertPathValidator.validate(CertPathValidator.java:292)at com.mysql.cj.protocol.ExportControlled$X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:373)... 83 common frames omitted

三、修改連接配置

修改配置文件,數據庫連接指向client-key.pem和client-cert.pem:

spring.datasource.url=jdbc:mysql://xxxx:3306/jkfunds_dev?useSSL=true&requireSSL=true&verifyServerCertificate=true&clientCertificateKeyFile=file:/opt/mysqldata/data/client-key.pem&clientCertificateFile=file:/opt/mysqldata/data/client-cert.pem&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true&serverTimezone=Asia/Shanghai

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90725.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90725.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90725.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Telegraf vs. Logstash:實時數據處理架構中的關鍵組件對比

在現代數據基礎設施中,Telegraf 和 Logstash 是兩種廣泛使用的開源數據收集與處理工具,但它們在設計目標、應用場景和架構角色上存在顯著差異。本文將從實時數據處理架構、時序數據庫集成、消息代理支持等方面對比兩者的核心功能,并結合實際應…

Vue Vue-route (4)

Vue 漸進式JavaScript 框架 基于Vue2的學習筆記 - Vue-route 編程式導航和幾種路由 目錄 編程式導航 詳情組件 創建組件 設置路由 電影列表 傳參 另一種方式 動態路由 命名路由 別名 總結 編程式導航 點擊電影列表 跳轉電影詳情 詳情組件 創建組件 在views中創…

存在兩個cuda環境,在conda中切換到另一個

進入 openmmlab 環境 conda activate openmmlab 設置環境變量為 CUDA 12.4(只影響當前 shell 會話) export PATH/usr/local/cuda-12.4/bin:PATHexportLDLIBRARYPATH/usr/local/cuda?12.4/lib64:PATH export LD_LIBRARY_PATH/usr/local/cuda-12.4/lib64:…

Django 視圖(View)

1. 視圖簡介 視圖負責接收 web 請求并返回 web 響應。視圖就是一個 python 函數,被定義在 views.py 中。響應可以是一張網頁的 HTML 內容、一個重定向、一個 404 錯誤等等。響應處理過程如下圖: 用戶在瀏覽器中輸入網址:www.demo.com/1/100Django 獲取網址信息,去除域名和端…

HarmonyOS基礎概念

一、OpenHarmony、HarmonyOS和Harmony NEXT區別OpenHarmony是由開放原子開源基金會(OpenAtom Foundation)孵化及運營的開源項目,開放原子開源基金會由華為、阿里、騰訊、百度、浪潮、招商銀行、360等十家互聯網企業共同發起組建。目標是面向全…

spark3 streaming 讀kafka寫es

1. 代碼 package data_import import org.apache.spark.sql.{DataFrame, Row, SparkSession, SaveMode} import org.apache.spark.sql.types.{ArrayType, DoubleType, LongType, StringType, StructField, StructType, TimestampType} import org.apache.spark.sql.functions._…

【跟著PMP學習項目管理】每日一練 - 3

1、你是一個建筑項目的項目經理。電工已經開始鋪設路線,此時客戶帶著一個變更請求來找你。他需要增加插座,你認為這會增加相關工作的成本。你要做的第一件事? A、拒絕做出變更,因為這會增加項目的成本并超出預算 B、參考項目管理計劃,查看是否應當處理這個變更 C、查閱…

CentOS 安裝 JDK+ NGINX+ Tomcat + Redis + MySQL搭建項目環境

目錄第一步:安裝JDK 1.8方法 1:安裝 Oracle JDK 1.8方法 2:安裝 OpenJDK 1.8第二步:使用yum安裝NGINX第三步:安裝Tomcat第四步:安裝Redis第五步:安裝MySQL第六步:MySQL版本兼容性問題…

如何設計一個登錄管理系統:單點登錄系統架構設計

關鍵詞:如何設計一個登錄管理系統、登錄系統架構、用戶認證、系統安全設計 📋 目錄 開篇:為什么登錄系統這么重要?整體架構設計核心功能模塊安全設計要點技術實現細節性能優化策略總結與展望 開篇:為什么登錄系統這么…

論跡不論心

2025年7月11日,16~26℃,陰 緊急不緊急重要 備考ing 備課不重要 遇見:免費人格測試 | 16Personalities,下面是我的結果 INFJ分析與優化建議 User: Anonymous (隱藏) Created: 2025/7/11 23:38 Updated: 2025/7/11 23:43 Exported:…

【面板數據】省級泰爾指數及城鄉收入差距測算(1990-2024年)

對中國各地區1990-2024年的泰爾指數、城鄉收入差距進行測算。本文參考龍海明等(2015),程名望、張家平(2019)的做法,采用泰爾指數測算城鄉收入差距。參考陳斌開、林毅夫(2013)的做法&…

http get和http post的區別

HTTP GET 和 HTTP POST 是兩種最常用的 HTTP 請求方法,它們在用途、數據傳輸方式、安全性等方面存在顯著差異。以下是它們的主要區別:1. 用途GET:主要用于請求從服務器獲取資源,比如獲取網頁內容、查詢數據庫等。GET 請求不應該用…

I2C集成電路總線

(摘要:空閑時,時鐘線數據線都是高電平,主機發送數據前,要在時鐘為高電平時,把數據線從高電平拉低,數據發送采取高位先行,時鐘線低電平時可以修改數據線,時鐘線高電平時要…

為了安全應該使用非root用戶啟動nginx

nginx基線安全,修復步驟。主要是由于使用了root用戶啟動nginx。為了安全應該使用非root用戶啟動nginx一、檢查項和問題檢查項分類檢查項名稱身份鑒別檢查是否配置Nginx賬號鎖定策略。服務配置檢查Nginx進程啟動賬號。服務配置Nginx后端服務指定的Header隱藏狀態服務…

論文解析篇 | YOLOv12:以注意力機制為核心的實時目標檢測算法

前言:Hello大家好,我是小哥談。長期以來,改進YOLO框架的網絡架構一直至關重要,但盡管注意力機制在建模能力方面已被證明具有優越性,相關改進仍主要集中在基于卷積神經網絡(CNN)的方法上。這是因…

學習C++、QT---20(C++的常用的4種信號與槽、自定義信號與槽的講解)

每日一言相信自己,你比想象中更接近成功,繼續勇往直前吧!那么我們開始用這4種方法進行信號與槽的通信第一種信號與槽的綁定方式我們將按鍵右鍵后轉到槽會自動跳轉到這個widget.h文件里面并自動生成了定義,我們要記住我們這個按鈕叫…

Anolis OS 23 架構支持家族新成員:Anolis OS 23.3 版本及 RISC-V 預覽版發布

自 Anolis OS 23 版本發布之始,龍蜥社區就一直致力于探索同源異構的發行版能力,從 Anolis OS 23.1 版本支持龍芯架構同源異構開始,社區就在持續不斷地尋找更多的異構可能性。 RISC-V 作為開放、模塊化、可擴展的指令集架構,正成為…

4萬億英偉達,憑什么?

CUDA正是英偉達所有神話的起點。它不是一個產品,而是一個生態系統。當越多的開發者使用CUDA,就會催生越多的基于CUDA的應用程序和框架;這些殺手級應用又會吸引更多的用戶和開發者投身于CUDA生態。這個正向飛輪一旦轉動起來,其產生…

Unity3D iOS閃退問題解決方案

前言 在Unity3D開發中解決iOS閃退問題需要系統性排查,以下是關鍵步驟和解決方案: 對惹,這里有一個游戲開發交流小組,希望大家可以點擊進來一起交流一下開發經驗呀! 1. 獲取崩潰日志(關鍵第一步&#xff…

嵌入式八股文之 GPIO

1. GPIO 的基本概念(1) 什么是 GPIO?GPIO 的中文意思是通用輸入輸出端口(General Purpose Input/Output),是嵌入式系統中可編程控制的通用引腳,可通過軟件配置為輸入或輸出模式。(背誦)(2) 它的…