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。这两者都是用于存储加密密钥和证书的流行格式。
- 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
- 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)设置一个新的密码

相关文章:
springboot前后端分离项目配置https接口(ssl证书)
文章目录 说明vue.js前端部署vue.js项目axios请求配置本地创建日志文件创建Dockerfile文件配置ssl证书nginx.confvue项目打包上传创建容器部署 后端springboot项目部署配置ssl证书打包部署 补充:jsk证书和pfx证书补充:两种证书的转化JKS转PFXPFX 转 JKS …...
智能小车速通版——手把手教程
考虑到大部分学校,会发放简易小车来作为智能车初期培训和筛选的工具, 于是,我写一个简单的教程,能够实现简单小车的电磁循迹。 通过这个教程,能够通过简化的步骤搭建寻迹小车,进而了解整个智能车是如何实…...
【C++】vector的介绍与使用
🧑🎓个人主页:简 料 🏆所属专栏:C 🏆个人社区:越努力越幸运社区 🏆简 介:简料简料,简单有料~在校大学生一枚,专注C/C/GO的干货分…...
【libGDX】使用Mesh绘制圆形
1 前言 使用Mesh绘制三角形 中介绍了绘制三角形的方法,使用Mesh绘制矩形 中介绍了绘制矩形的方法,本文将介绍绘制圆形的方法。 libGDX 以点、线段、三角形为图元,没有提供绘制圆形的接口。要绘制圆形边框,必须通过割圆法逼近圆形&…...
一个测试驱动的Spring Boot应用程序开发
文章目录 系统任务用户故事搭建开发环境Web应用的框架Spring Boot 自动配置三层架构领域建模域定义与领域驱动设计领域类 业务逻辑功能随机的Challenge验证 表示层RESTSpring Boot和REST API设计API第一个控制器序列化的工作方式使用Spring Boot测试控制器 小结 这里采用面向需…...
简单几步,借助Aapose.Cells将 Excel XLS 转换为PPT
数据呈现是商业和学术工作的一个重要方面。通常,您需要将数据从一种格式转换为另一种格式,以创建信息丰富且具有视觉吸引力的演示文稿。当您需要在幻灯片上呈现工作表数据时,需要从 Excel XLS 转换为 PowerPoint 演示文稿。在这篇博文中&…...
CSS特效016:天窗扬起合上的效果
CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧,主要包含CSS布局,CSS特效,CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点,CSS特效主要是一些动画示例,CSS花边是描述了一些CSS…...
基于SSM的济南旅游网站设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...
【ArrayList是如何扩容(ArrayList、LinkedList、与Vector的区别)】
ArrayList、LinkedList、与Vector的区别 解读ArrayList 是一个可改变大小的数组LinkedList 是一个双向链表Vector 属强同步类 拓展知识面ArrayList是如何扩容?如何利用List实现LRU? 解读 List主要有ArrayList、LinkedList与Vector几种实现。这三者都实现…...
STM32_3(GPIO)
GPIO简介 GPIO(General Purpose Input Output)通用输入输出口8种输入输出模式输出模式可控制端口输出高电平,驱动LED、蜂鸣器、模拟通信协议输出时许等输入模式可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输…...
【技巧】PDF文件如何编辑?
日常办公中我们经常会用到PDF文件,PDF具备很好的兼容性、稳定性及安全性,但却不容易编辑,那PDF要如何编辑呢? 如果打开PDF文件就只是只读的性质,说明文件是在线打开,或者通过PDF阅读器打开的,这…...
AR道具特效制作工具
AR(增强现实)技术已经逐渐渗透到各个行业,为企业带来了全新的营销方式和用户体验。在这个背景下,美摄科技凭借其强大的技术实力和创新精神,推出了一款专为企业打造的美摄AR特效制作工具,旨在帮助企业轻松实…...
鸿蒙4.0开发笔记之DevEco Studio页面操作router的pushUrl页面跳转与back返回上一页(五)
一、认识组件 关于HarmonyOS中ArkTS的基础组件请参见文章鸿蒙4.0开发笔记之ArkTs语言基础与基本组件结构(四) 二、实现页面跳转pushUrl 1、操作说明 实现页面跳转的核心便是router.pushUrl的调用,操作起来也很简单,总共就四步…...
20个CSS函数-释放设计创造力和响应能力
20个CSS函数-释放设计创造力和响应能力 CSS是网页设计的核心,使开发者和设计者能够制作出令人叹为观止和反应迅速的网页布局。CSS函数通过引入动态性和多功能性提升了我们的设计能力。在本文中,我们将开始讲解20个CSS函数。 1.rgba():定义颜…...
Dubbo从入门到上天系列第十八篇:Dubbo引入注册中心简介以及DubboAdmin简要介绍,为后续详解Dubbo各种注册中心做铺垫!
一:Dubbo注册中心引言 1:什么是Dubbo的注册中心? Dubbo注册中心是Dubbo服务治理中极其重要的一个概念。它主要是用于对Rpc集群应用实例进行管理。 对于我们的Dubbo服务来讲,至少有两部分构成,一部分是Provider一部分是…...
CentOS8安装MySQL
选择MySQL数据库的原因: 1、运行速度快; 2、开源免费; 3、易学易用; 4、可移植性,能够在众多不同的系统上工作; 5、丰富的接口,提供了用于C、C等语言的API; 6、支持查询语言…...
Java集合拓展01
1、List,Set,Map三者的区别 List:一个有序(元素存入集合的顺序和取出的顺序一致)容器,元素可以重复,可以插入多个null元素,元素都有索引。常用的实现类有 ArrayList、LinkedList 和…...
【Django使用】md文档10大模块第5期:Django数据库增删改查和Django视图
Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展…...
在AWS VPC中运行Nagios检查时指定自定义DNS解析器的选项
在AWS VPC中运行Nagios检查,并希望能够指定自定义DNS解析器来处理请求。我想使用Python requests库来实现这个目标。 根据问题描述,您想在AWS VPC中运行Nagios检查,并希望使用Python的requests库来指定自定义DNS解析器。 要解决这个问题&…...
【uniapp】触底加载事件 onReachBottom 不生效
我遇到的情况有: 检查 css 是不是写了overflow-y: scroll; 或 overflow: auto; 是不是用了局部滚动 <scroll-view></scroll-view>; 注意: onReachBottom 和 scroll-view 是冲突的...
PicX Studio CLI:AI图像工作流的命令行自动化与集成实践
1. 项目概述:PicX Studio CLI,一个为AI图像工作流而生的命令行利器如果你和我一样,经常在终端里敲敲打打,同时又需要频繁地与AI图像生成服务打交道,那么你肯定能理解那种在浏览器、代码编辑器、文件管理器之间反复横跳…...
开源信息聚合系统架构设计:从爬虫到数据清洗的工程实践
1. 项目概述:从“官陈”到“官沉”,一个开源项目的命名与使命 最近在GitHub上闲逛,发现了一个挺有意思的项目,叫 Sansi-34/guan-chen 。初看这个仓库名,可能会有点摸不着头脑。“官陈”?听起来像个人名&a…...
【绝密】Python配置热加载失效的底层机制:从importlib.reload()缺陷到__pycache__污染链(仅限CI/CD工程师内部解密)
更多请点击: https://intelliparadigm.com 第一章:Python配置热加载失效的全局现象与影响面 Python 应用在微服务与云原生场景中广泛依赖配置热加载(Hot Reload)机制实现运行时参数动态更新,但实践中该能力常因环境、…...
零样本3D点云补全技术LaS-Comp原理与实践
1. 项目背景与核心价值去年在CVPR上看到一篇关于3D形状补全的论文时,我正为一个工业检测项目头疼——产线上扫描的零件点云总是存在缺失。传统方法要么需要大量配对数据训练,要么补全结果扭曲变形。直到发现LaS-Comp这个框架,才意识到零样本学…...
配置中心选型生死局:对比Nacos/Consul/Etcd/Apollo在Python生态中的启动延迟、内存开销、TLS握手耗时与Leader选举收敛时间(实测数据表已附)
更多请点击: https://intelliparadigm.com 第一章:Python分布式配置的核心挑战与选型逻辑 在微服务与云原生架构普及的今天,Python应用常以多实例、跨环境(开发/测试/生产)、多集群方式部署。此时,硬编码配…...
高效工作流:Spyder科学Python开发环境实战指南
高效工作流:Spyder科学Python开发环境实战指南 【免费下载链接】spyder Official repository for Spyder - The Scientific Python Development Environment 项目地址: https://gitcode.com/gh_mirrors/sp/spyder Spyder是一款专为科学计算和数据分析设计的P…...
【等保四级医疗系统改造实战白皮书】:20年资深架构师亲授Java系统合规落地的7大生死关卡
更多请点击: https://intelliparadigm.com 第一章:等保四级医疗系统改造的合规认知与顶层规划 等保四级是国家网络安全等级保护制度中最高级别的安全要求,适用于承担关键基础设施职能、一旦遭受破坏将严重危害国家安全、社会秩序、公共利益…...
多租户数据“逻辑隔离”正在杀死你的系统!Java安全配置必须强制启用的3项JVM级防护开关
更多请点击: https://intelliparadigm.com 第一章:多租户数据“逻辑隔离”的致命幻觉与JVM级防护的必要性 在云原生应用架构中,“逻辑隔离”常被误认为是多租户安全的充分保障——仅靠租户ID字段过滤、SQL WHERE tenant_id ?、或服务层路由…...
5大核心功能解锁:Grasscutter Tools 让原神私服管理变得如此简单
5大核心功能解锁:Grasscutter Tools 让原神私服管理变得如此简单 【免费下载链接】grasscutter-tools A cross-platform client that combines launcher, command generation, and mod management to easily play Grasscutter; 一个结合了启动器、命令生成、MOD管理…...
APK-Installer完整教程:在Windows上轻松安装Android应用的实用指南
APK-Installer完整教程:在Windows上轻松安装Android应用的实用指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为无法在Windows电脑上直接运行Andr…...
