利用keytool實現https協議(生成自簽名證書)

利用keytool實現https協議(生成自簽名證書)

什么是https協議?

https(安全超文本傳輸協議)是 HTTP 的安全版本,通過 SSL/TLS 加密技術,在客戶端(如瀏覽器)和服務器之間建立加密通信通道,確保數據傳輸的機密性、完整性和身份真實性

與http的區別:

特性

HTTP

HTTPS

加密

? 明文傳輸,數據可被竊聽

? 加密傳輸(SSL/TLS),防竊聽

數據完整性

? 數據可被篡改(中間人攻擊)

? 校驗機制防止篡改

身份驗證

? 無法驗證服務器身份

? 證書驗證服務器真實性(防釣魚)

性能

? 更快(無加密開銷)

? 稍慢(加密/解密消耗資源)

SEO 影響

? 搜索引擎排名可能降低

? 谷歌等優先收錄 HTTPS 網站

協議層

應用層協議

HTTP + SSL/TLS(傳輸層安全)

HTTPS 如何工作?

1、SSL/TLS 握手

客戶端訪問 HTTPS 網站時,服務器發送數字證書(含公鑰)。

瀏覽器驗證證書有效性(如頒發機構、過期時間、域名匹配)。

2、密鑰交換

通過非對稱加密(如 RSA)協商一個臨時對稱密鑰。

3、加密通信

后續數據傳輸使用對稱加密(如 AES),保證效率和安全。

那么如何實現將http變為安全的https協議?

生成自簽名證書(開發環境適用)

使用 keytool(Java 自帶工具)

一、交互式輸入

在后端項目終端中輸入

keytool -genkeypair -alias yourdomain -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365 -storetype PKCS12

接著往下輸入信息即可。


Vue + Spring Boot 項目中啟用 HTTPS,需要生成 SSL/TLS 證書(如自簽名證書或 CA 簽名證書)。以下是詳細步驟:

參數說明

  • -alias yourdomain:證書別名(可自定義)。
  • -keyalg RSA:加密算法(推薦 RSA 或 ECC)。
  • -keysize 2048:密鑰長度(至少 2048 位)。
  • -keystore keystore.p12:生成的密鑰庫文件名。
  • -validity 365:證書有效期(天)。
  • -storetype PKCS12:密鑰庫格式(推薦 PKCS12,兼容性強)。

二、不交互式

keytool -genkeypair -alias yourdomain -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365 -storetype PKCS12 -dname "CN=localhost, OU=YourDept, O=YourOrg, L=Beijing, ST=Beijing, C=CN" -storepass yourpassword

其中CN=localhost為地址, 將yourpassword? 改為密碼,

結束后會出現一個文件:

keystore.p12

將其移動到resources文件夾下,

在application.properties配置里寫:

server.ssl.enabled=true#文件位置
server.ssl.key-store=classpath:keystore.p12#密碼? 注意要和之前設置的一致
server.ssl.key-store-password=123456
server.ssl.key-store-type=PKCS12

最后重啟springboot項目,

在前端的項目里(我的是vue項目),

在跨域中設置:

module.exports = {devServer: {proxy: {'/api': {//注意這里要用https,否則會報錯target: 'https://localhost:9000',changeOrigin: true,secure: false, // 忽略自簽名證書pathRewrite: { '^/api': '' }}}}}

前端做一個請求,在后端查看日志:

可以看到已經是https協議了。。。

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

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

相關文章

拆解 AI 大模型 “思考” 邏輯:從參數訓練到語義理解的核心鏈路

一、引言:揭開 AI 大模型 “思考” 的神秘面紗?日常生活中的 AI 大模型 “思考” 場景呈現(如 ChatGPT 對話、AI 寫作輔助、智能客服應答)?提出核心問題:看似具備 “思考” 能力的 AI 大模型,其背后的運作邏輯究竟是…

element plus 使用細節 (二)

接上一篇文章: element plus 使用細節 最近菜鳥忙于系統開發,都沒時間總結項目中使用的問題,幸好還是在空閑之余總結了一點(后續也會來補充),希望能給大家帶來幫助! 文章目錄table fixed 的 v…

【機器學習學習筆記】numpy基礎2

零基礎小白的 NumPy 入門指南如果你想用電競(打游戲)的思路理解編程:Python 是基礎操作鍵位,而 NumPy 就是 “英雄專屬技能包”—— 專門幫你搞定 “數值計算” 這類復雜任務,比如算游戲里的傷害公式、地圖坐標&#x…

從自動化到智能化:家具廠智能化產線需求與解決方案解析

伴隨著工業4.0浪潮和智能制造技術的成熟,家具行業正逐步從傳統的自動化生產邁向智能化生產。智能化產線的構建不僅可以提升生產效率,還能滿足個性化定制和柔性制造的需求。本文以某家具廠為例,詳細解析智能化產線的核心需求,并提出…

macOS下基于Qt/C++的OpenGL開發環境的搭建

系統配置 MacBook Pro 2015 Intel macOS 12Xcode 14 Qt開發環境搭建 Qt Creator的下載與安裝 在Qt官網的下載頁面上下載,即Download Qt Online Installer for macOS。下載完成就得到一個文件名類似于qt-online-installer-macOS-x64-x.y.z.dmg的安裝包。 下一步 …

當液態玻璃計劃遭遇反叛者:一場 iOS 26 界面的暗戰

引子 在硅谷的地下代碼俱樂部里,流傳著一個關于 “液態玻璃” 的傳說 —— 那是 Apple 秘密研發的界面改造計劃,如同電影《變臉》中那張能改變命運的面具,一旦啟用,所有 App 都將被迫換上流光溢彩的新面孔。 而今天,我…

探究Linux系統的SSL/TLS證書機制

一、SSL/TLS證書的基本概念 1.1 SSL/TLS協議簡介 SSL/TLS是一種加密協議,旨在為網絡通信提供機密性、完整性和身份驗證。它廣泛應用于HTTPS網站、電子郵件服務、VPN以及其他需要安全通信的場景。SSL(安全套接字層)是TLS(傳輸層安全…

python和java爬蟲優劣對比

Python和Java作為爬蟲開發的兩大主流語言,核心差異源于語法特性、生態工具鏈、性能表現的不同,其優勢與劣勢需結合具體場景(如開發效率、爬取規模、反爬復雜度)判斷。以下從 優勢、劣勢、適用場景 三個維度展開對比,幫…

Unity 槍械紅點瞄準器計算

今天突然別人問我紅點瞄準器在鏡子上如何計算,之前的吃雞項目做過不記得,今天寫個小用例整理下。 主體思想記得是目標位置到眼睛穿過紅點瞄準器獲取當前點的位置就可以。應該是這樣吧,:) 武器測試結構 首先整個結構&am…

題解 洛谷P13778 「o.OI R2」=+#-

文章目錄題解代碼居然沒有題解?我來寫一下我的抽象做法。 題解 手玩一下,隨便畫個他信心的折線圖,如下: 可以發現,如果我們知道終止節點,那么我們就可以知道中間有多少個上升長度。(因為它只能…

RTSP流端口占用詳解:TCP模式與UDP模式的對比

在音視頻傳輸協議中,RTSP(Real-Time Streaming Protocol,實時流傳輸協議)被廣泛用于點播、直播、監控等場景。開發者在實際部署或調試時,常常會遇到一個問題:一路 RTSP 流到底占用多少個端口? 這…

websocket的key和accept分別是多少個字節

WebSocket的Sec-WebSocket-Key是24字節(192位)的Base64編碼字符串,解碼后為16字節(128位)的原始隨機數據;Sec-WebSocket-Accept是28字節(224位)的Base64編碼字符串,解碼后…

單片機開發----一個簡單的Boot

文章目錄一、設計思路**整體框架設計****各文件/模塊功能解析**1. main.c(主程序入口,核心控制)2. 隱含的核心模塊(框架中未展示但必備)**設計亮點**二、代碼bootloader.hbootloader.cflash.cmain.c一、設計思路 整體…

Day2p2 夏暮客的Python之路

day2p2 The Hard Way to learn Python 文章目錄day2p2 The Hard Way to learn Python前言一、提問和提示1.1 關于raw_input()1.2 關于input()二、參數、解包、變量2.1 解讀參數2.2 解讀解包2.3 解讀變量2.4 實例2.5 模塊和功能2.6 練習前言 author:SummerEnd date…

【C++設計模式】第二篇:策略模式(Strategy)--從基本介紹,內部原理、應用場景、使用方法,常見問題和解決方案進行深度解析

C設計模式系列文章目錄 【第一篇】C單例模式–懶漢與餓漢以及線程安全 【C設計模式】第二篇:策略模式(Strategy)--從基本介紹,內部原理、應用場景、使用方法,常見問題和解決方案進行深度解析一、策略模式的基本介紹1.…

四十歲編程:熱愛、沉淀與行業的真相-優雅草卓伊凡

四十歲編程:熱愛、沉淀與行業的真相-優雅草卓伊凡今日卓伊凡收到一個問題:「如何看待40歲還在擼代碼的程序員?」這讓我不禁思考:從何時起,年齡成了程序員職業中的敏感詞?在互聯網的某些角落,彌漫…

pycharm解釋器使用anaconda建立的虛擬環境里面的python,無需系統里面安裝python。

Anaconda建立的虛擬環境可以在虛擬環境里設置任何的python版本,pycharm解釋器使用anaconda建立的虛擬環境里面的python,比如anaconda建立的虛擬環境1、虛擬環境2,pycharm解釋器使用anaconda建立虛擬環境1也可以使用虛擬環境2,根本…

機器學習:后篇

目錄 一、KNN算法-分類 樣本距離 KNN算法原理 缺點 API 二、模型選擇與調優 交叉驗證 保留交叉驗證(HoldOut) k-折交叉驗證(K-fold) 分層k-折交叉驗證(Stratified k-fold) 其他交叉驗證 三、樸素貝葉斯-分類 理論介紹 拉普拉斯平滑系數 API 四、決策樹-分類 理論…

C++17無鎖編程實戰

在多線程編程里,“鎖” 這東西就像把雙刃劍 —— 用好了能保數據安全,用不好就麻煩了:大粒度的鎖把并發度壓得死死的,稍不注意加錯鎖還可能搞出死鎖,程序直接 “僵住”。 但如果能擺脫鎖,搞出支持安全并發…

SVT-AV1 svt_aom_motion_estimation_kernel 函數分析

void *svt_aom_motion_estimation_kernel(void *input_ptr) // 運動估計內核主函數,接收線程輸入參數{// 從輸入參數中獲取線程上下文指針EbThreadContext * thread_ctx (EbThreadContext *)input_ptr;// 從線程上下文中獲取運動估計上下文指針MotionEstimationCon…