springboot前后端分離項目配置https接口(ssl證書)

文章目錄

  • 說明
  • vue.js前端部署
    • vue.js項目axios請求配置
    • 本地創建日志文件
    • 創建Dockerfile文件
    • 配置ssl證書
    • nginx.conf
    • vue項目打包上傳
    • 創建容器部署
  • 后端springboot項目部署
    • 配置ssl證書
    • 打包部署
  • 補充:jsk證書和pfx證書
  • 補充:兩種證書的轉化
    • JKS轉PFX
    • PFX 轉 JKS

說明

  • 本記錄操作方法vue.js項目使用nginx代理部署,后端springboot正常部署
  • 前端使用443端口,后端使用8080端口
  • 全部接口使用https

vue.js前端部署

  • vue.js配置axios相對路徑,好處:請求代理再nginx.conf中配置,無需重新修改代碼

vue.js項目axios請求配置

  • request和response 攔截器根據具體項目要求進行配置
import axios from 'axios';
import router from "@/router";const request = axios.create({baseURL: '/api', // 使用相對路徑,Nginx代理請求到后端timeout: 10000
})
// request 攔截器
request.interceptors.request.use(config => {config.headers['Content-Type'] = 'application/json;charset=utf-8';let user = localStorage.getItem('user') ? JSON.parse(localStorage.getItem('user')) : null//如果user存在就在請求頭中設置tokenif (user) {config.headers['token'] = user.token;}return config
}, error => {return Promise.reject(error)
});// response 攔截器
request.interceptors.response.use(response => {let res = response.data;// 如果是返回的文件if (response.config.responseType === 'blob') {return res}// 兼容服務端返回的字符串數據if (typeof res === 'string') {res = res ? JSON.parse(res) : res}//當權限驗證不通過時直接彈出if (res.code === '401') {localStorage.removeItem('user')router.push('/login')}return res;},error => {console.log('err' + error) return Promise.reject(error)}
)export default request

本地創建日志文件

touch /usr/front/logs/nginx_access.log
chmod 666 /usr/front/logs/nginx_access.log
touch /usr/front/logs/nginx_error.log
chmod 666 /usr/front/logs/nginx_error.log

創建Dockerfile文件

  • 在/usr/front/vue下創建Dockerfile文件
# 使用NGINX官方鏡像作為基礎鏡像
FROM nginx:latest# 設置作者信息
LABEL maintainer="作者名 <郵箱>"# 創建日志目錄并設置權限
RUN mkdir -p /var/log/nginx && \touch /var/log/nginx/nginx_access.log && \touch /var/log/nginx/nginx_error.log && \chown -R nginx:nginx /var/log/nginx && \chmod 755 /var/log/nginx && \chmod 644 /var/log/nginx/nginx_access.log && \chmod 644 /var/log/nginx/nginx_error.log# 創建 Vue 項目目錄
RUN mkdir -p /usr/share/nginx/html# 復制項目文件到NGINX默認的網站目錄
COPY ./front_vue /usr/share/nginx/html# 復制自定義NGINX配置文件
COPY nginx.conf /etc/nginx/nginx.conf# 暴露NGINX的HTTP端口(默認為80)
EXPOSE 80# 啟動NGINX
CMD ["nginx", "-g", "daemon off;"]

配置ssl證書

  • 在云服務相關平臺申請ssl證書,并下載,然后解壓找到xx.crt、xx.key 重名為server.crt、server.key后,上傳到服務器/usr/front/vue/cert,
    sudo mkdir -p /usr/front/vue/cert
    

nginx.conf

  • 在/usr/front/vue下創建nginx.conf
events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;client_max_body_size     50m;client_body_buffer_size  10m; client_header_timeout    1m;client_body_timeout      1m;gzip on;gzip_min_length  1k;gzip_buffers     4 16k;gzip_comp_level  4;gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;gzip_vary on;server {listen  443 ssl;server_name  服務器域名;ssl_certificate /etc/nginx/cert/server.crt; ssl_certificate_key /etc/nginx/cert/server.key; ssl_session_timeout 5m;ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA';ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers off;# 配置 Nginx 記錄訪問日志和錯誤日志access_log /var/log/nginx/nginx_access.log;error_log /var/log/nginx/nginx_error.log;location / {		root   /usr/share/nginx/html/front_vue;index  index.html index.htm; try_files $uri $uri/ /index.html;	}location ^~ /api/ {		proxy_pass https://服務器IP:8080/; proxy_set_header   Host             $host;proxy_set_header   X-Real-IP        $remote_addr;						proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;}}server {listen       80;server_name  服務器域名;rewrite ^(.*)$	https://$host$1	permanent;}}

vue項目打包上傳

  • 打包后臺vue項目,修改dist目錄名稱為front_vue,上傳到/usr/fron/vue目錄下

創建容器部署

# 1進入目錄
cd /usr/front/vue
# 2構建鏡像
docker build -t front_vue .
# 3運行容器
docker run --name front_nginx --restart=always -p 80:80 -p 443:443 -d \
-v /usr/front/vue/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/front/vue/front_vue:/usr/share/nginx/html/front_vue \
-v /usr/front/logs/nginx_access.log:/var/log/nginx/nginx_access.log \
-v /usr/front/logs/nginx_error.log:/var/log/nginx/nginx_error.log \
-v /usr/front/vue/cert:/etc/nginx/cert \

后端springboot項目部署

  • 記得客戶端請求的接口前綴修改為https://serverIP:8080

配置ssl證書

  • 使用下載的證書文件,找到需要配置的xxx.pfx/xxx.jks和keystorePass.txt文件
  • 將xxx.pfx/xxx.jks放到resource目錄下
server:port: 8080ssl:enabled: true# 證書類型一key-store: classpath:xxx.pfxkey-store-password: xxx # 填寫keystorePass.txt文件內容key-store-type: PKCS12# 證書類型二key-store: classpath:xxx.jkskey-store-password: xxx # 填寫keystorePass.txt文件內容key-store-type: jks

打包部署

  • 然后正常打包上傳部署即可!

補充:jsk證書和pfx證書

  • springboot配置https接口使用的ssl整數是使用jks的還是pfx的?

  • 在Spring Boot中,可以使用Java KeyStore(JKS)或PKCS#12文件(PFX)來配置應用程序的HTTPS。這兩者都是用于存儲加密密鑰和證書的流行格式。

  1. Java KeyStore(JKS):
    • 文件擴展名: 通常,JKS文件的擴展名為".jks"。
    • 格式: JKS是一種專有格式,特定于Java,通常在基于Java的應用程序中使用。
      用途: JKS文件配置Spring Boot應用程序的SSL/TLS。
  • 在application.yml中的示例配置:
server:port: 8080 # 配置https接口ssl:enabled: truekey-store: classpath:keystore.jkskey-store-password: 密鑰庫密碼key-store-type: jks
  1. PKCS#12(PFX):
    • 文件擴展名: PFX文件通常具有".pfx"或".p12"擴展名。
    • 格式: PFX是一種標準格式,可以在不同平臺和編程語言中使用。
    • 用途: PFX文件配置Spring Boot應用程序的SSL/TLS。
  • 在application.yml中的配置:
server:port: 8080 # 配置https接口ssl:enabled: truekey-store: classpath:keystore.pfxkey-store-password: xxxkey-store-type: PKCS12

補充:兩種證書的轉化

JKS轉PFX

  • 使用 keytool(Java自帶的工具)
  • keystore.jks(修改證書文件)證書目錄下,使用終端輸入如下命令:
keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.pfx -srcstoretype JKS -deststoretype PKCS12
  • 輸入源密鑰庫(JKS)的密碼,以及為目標密鑰庫(PFX)設置一個新的密碼
    在這里插入圖片描述

PFX 轉 JKS

  • 使用 keytool
  • keystore.jks(修改證書文件)證書目錄下,使用終端輸入如下命令:
keytool -importkeystore -srckeystore keystore.pfx -destkeystore keystore.jks -srcstoretype PKCS12 -deststoretype JKS
  • 輸入源密鑰庫(PFX)的密碼,并為目標密鑰庫(JKS)設置一個新的密碼
    在這里插入圖片描述

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

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

相關文章

Elasticsearch:將最大內積引入 Lucene

作者&#xff1a;Benjamin Trent 目前&#xff0c;Lucene 限制 dot_product (點積) 只能在標準化向量上使用。 歸一化迫使所有向量幅度等于一。 雖然在許多情況下這是可以接受的&#xff0c;但它可能會導致某些數據集的相關性問題。 一個典型的例子是 Cohere 構建的嵌入&#x…

使用 Lhotse 高效管理音頻數據集

Lhotse 是一個旨在使語音和音頻數據準備更具靈活性和可訪問性的 Python 庫&#xff0c;它與 k2 一起&#xff0c;構成了下一代 Kaldi 語音處理庫的一部分。 主要目標&#xff1a; 1. 以 Python 為中心的設計吸引更廣泛的社區參與語音處理任務。 2. 為有經驗的 Kaldi 用戶提供…

SpringBoot——啟動類的原理

優質博文&#xff1a;IT-BLOG-CN SpringBoot啟動類上使用SpringBootApplication注解&#xff0c;該注解是一個組合注解&#xff0c;包含多個其它注解。和類定義SpringApplication.run要揭開SpringBoot的神秘面紗&#xff0c;我們要從這兩位開始就可以了。 SpringBootApplicati…

Spring實例化對象

默認proxyBeanMethods true&#xff0c;這種方法是用的代理模式創建對象&#xff0c;每次創建都是同一個對象&#xff0c;如果改為false每次都是不同的對象 FactoryBean的使用 定義的類A&#xff0c;造出來一個類B&#xff0c;可以在創造bean之前做一些自己的個性化操作

MFS分布式文件系統

目錄 集群部署 Master Servers ?Chunkservers ?編輯Clients Storage Classes LABEL mfs高可用 pacemaker高可用 ?編輯ISCSI 添加集群資源 主機 ip 角色 server1 192.168.81.11 Master Servers server2 192.168.81.12 Chunkservers server3 192.168.81.13 Chunkserver…

【產品安全平臺】上海道寧與Cybellum將整個產品安全工作流程整合到一個專用平臺中,保持構建的互聯產品的網絡安全和網絡合規性

Cybellum將 整個產品安全工作流程 整合到一個專用平臺中 使設備制造商能夠 保持他們構建的互聯產品的 網絡安全和網絡合規性 產品安全性對 每個人來說都不一樣 每個行業的系統、工作流程和 法規都存在根本差異 因此&#xff0c;Cybellum量身定制了 Cybellum的平臺和技…

為何內存不夠用?微服務改造啟動多個Spring Boot的陷阱與解決方案

在生產環境中我們會遇到一些問題&#xff0c;此文主要記錄并復盤一下當時項目中的實際問題及解決過程。 背景簡述 最初系統上線后都比較正常風平浪靜的。在系統運行了一段時間后&#xff0c;業務量上升后&#xff0c;生產上發現java應用內存占用過高&#xff0c;服務器總共64…

打印出一個底部有n個*的漏斗c語言

題目描述 打印出一個底部有n個*的漏斗 輸入 第一行輸入一個T;表示有T組測試數據 下面每一行都有一個n表示漏斗底部*的個數 n保證是奇數 輸出 輸出打印結果 兩個測試答案之間要用換行分割 /*printf("這是第%d行 我要打印%d個* \n",Num,i); */ *********** *…

愛創科技總裁謝朝暉榮獲“推動醫藥健康產業高質量發展人物”

中國醫藥市場規模已經成為全球第二大醫藥市場&#xff0c;僅次于美國。近年來&#xff0c;隨著中國經濟的持續增長和人民生活水平的提高&#xff0c;醫藥市場需求不斷擴大。政府對醫療衛生事業的投入也在不斷加大&#xff0c;為醫藥行業的發展創造了良好的政策環境。為推動醫藥…

SparkSession介紹

一、 介紹 SparkSession是Spark 2.0中引入的新概念&#xff0c;它是Spark SQL、DataFrame和Dataset API的入口點&#xff0c;是Spark編程的統一API&#xff0c;也可看作是讀取數據的統一入口&#xff1b;它將以前的SparkContext、SQLContext和HiveContext組合在一起&#xff0…

結構體與指針_sizeof_static_extern_函數指針數組_函數指針_回調函數

一、結構體與指針 #include <stdint.h> #include <stdlib.h> #include <stdio.h> #define up_to_down(uuu) (downdemo_t *)(uuu->beg) #define __plc__ typedef struct updemo_s{uint8_t *head;uint8_t *beg;uint8_t *end; }updemo_t; typedef struct do…

陪玩圈子系統APP小程序H5,詳細介紹,源碼交付,支持二開!

陪玩圈子系統&#xff0c;頁面展示&#xff0c;源碼交付&#xff0c;支持二開&#xff01; 陪玩后端下載地址&#xff1a;電競開黑陪玩系統小程序&#xff0c;APP&#xff0c;H5: 本系統是集齊開黑&#xff0c;陪玩&#xff0c;陪聊于一體的專業APP&#xff0c;小程序&#xff…

2:kotlin集合(Collections)

集合有助于數據分組&#xff0c;方便后續操作 集合類型說明Lists有序的可重復的集合Sets無序的不可重復的集合Maps鍵值對映射集合&#xff0c;鍵唯一&#xff0c;且一個鍵只能映射到一個值 每個集合類型都可以是可變的或者只讀的 List List按照添加的順序存儲內容&#xff…

Linux進程通信——共享內存

概念 共享內存&#xff08;Shared Memory&#xff09;&#xff0c;指兩個或多個進程共享一個給定的存儲區。 特點 共享內存是最快的一種 IPC&#xff0c;因為進程是直接對內存進行存取。 因為多個進程可以同時操作&#xff0c;所以需要進行同步。 信號量共享內存通常結合在一…

Open3D (C++) 計算兩點云之間的最小距離

目錄 一、 算法原理二、代碼實現三、結果展示本文由CSDN點云俠原創,原文鏈接。如果你不是在點云俠的博客中看到該文章,那么此處便是不要臉的爬蟲與GPT。 一、 算法原理 Open3D中ComputePointCloudDistance函數提供了計算從源點云到目標點云的距離的方法,計算點云的距離。也…

python數據結構與算法-05_棧

棧 棧這個詞實際上在計算機科學里使用很多&#xff0c;除了數據結構外&#xff0c;還有內存里的棧區 &#xff08;和堆對應&#xff09;&#xff0c;熟悉 C 系語言的話應該不會陌生。 上一章我們講到了先進先出 queue&#xff0c;其實用 python 的內置類型 collections.deque …

【C語法學習】26 - strcmp()函數

文章目錄 1 函數原型2 參數3 返回值4 比較機制5 示例5.1 示例1 1 函數原型 strcmp()&#xff1a;比較str1指向的字符串和str2指向的字符串&#xff0c;函數原型如下&#xff1a; int strcmp(const char *str1, const char *str2);2 參數 strcmp()函數有兩個參數str1和str2&a…

HCIP-四、MUX-vlanSuper-vlan+端口安全

四、MUX-vlan&Super-vlan端口安全 MUX-vlan實驗拓撲實驗需求及解法1. 在SW1/2/3分別創建vlan10 20 30 402. SW1/2/3之間使用trunk鏈路&#xff0c;僅允許vlan10 20 30 40 通過。3. SW與PC/Server之間使用access鏈路。4. ping驗證&#xff1a; Super-vlan端口安全實驗拓撲實…

【騰訊云云上實驗室-向量數據庫】騰訊云開創新時代,發布全新向量數據庫Tencent Cloud VectorDB

前言 隨著人工智能、數據挖掘等技術的飛速發展&#xff0c;海量數據的存儲和分析越來越成為重要的研究方向。在海量數據中找到具有相似性或相關性的數據對于實現精準推薦、搜索等應用至關重要。傳統關系型數據庫存在一些缺陷&#xff0c;例如存儲效率低、查詢耗時長等問題&…

CentOS使用docker安裝OpenGauss數據庫

1.搜索OpenGauss docker search opengauss 2.選擇其中一個源拉取 docker pull docker.io/enmotech/opengauss 3.運行OpenGauss docker run --name opengauss --privilegedtrue --restartalways -d -e GS_USERNAMEpostgres -e GS_PASSWORDmyGauss2023 -p 5432:5432 docker.…