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.mzph.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…

爱创科技总裁谢朝晖荣获“推动医药健康产业高质量发展人物”

中国医药市场规模已经成为全球第二大医药市场&#xff0c;仅次于美国。近年来&#xff0c;随着中国经济的持续增长和人民生活水平的提高&#xff0c;医药市场需求不断扩大。政府对医疗卫生事业的投入也在不断加大&#xff0c;为医药行业的发展创造了良好的政策环境。为推动医药…

结构体与指针_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…

Linux进程通信——共享内存

概念 共享内存&#xff08;Shared Memory&#xff09;&#xff0c;指两个或多个进程共享一个给定的存储区。 特点 共享内存是最快的一种 IPC&#xff0c;因为进程是直接对内存进行存取。 因为多个进程可以同时操作&#xff0c;所以需要进行同步。 信号量共享内存通常结合在一…

Open3D (C++) 计算两点云之间的最小距离

目录 一、 算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、 算法原理 Open3D中ComputePointCloudDistance函数提供了计算从源点云到目标点云的距离的方法,计算点云的距离。也…

【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.…

黑马React18: ReactRouter

黑马React: ReactRouter Date: November 21, 2023 Sum: React路由基础、路由导航、导航传参、嵌套路由配置 路由快速上手 1. 什么是前端路由 一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候&#xff0c;path 对应的组件会在页面中进行渲染 2. …

2023年中国高压驱动芯片分类、市场规模及发展趋势分析[图]

高压驱动芯片是一种能在高压环境下工作的集成电路&#xff0c;主要用于控制和驱动各种功率器件&#xff0c;如继电器、电磁阀、电机、变频器等。高压驱动芯片根据其输出电流的大小和形式可分为两类恒流型和开关型。 高压驱动芯片分类 资料来源&#xff1a;共研产业咨询&#x…

蓝桥杯算法双周赛心得——迷宫逃脱(记忆化搜索)

大家好&#xff0c;我是晴天学长&#xff0c;非常经典实用的记忆化搜索题&#xff0c;当然也可以用dp做&#xff0c;我也会发dp的题解&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .迷宫逃脱 迷官逃脱…

ubuntu操作系统中docker下Hadoop分布式前置环境配置实验

版本&#xff1a; centos7 hadoop 3.1.3 java JDK:1.8 集群规划&#xff1a; masterslave1slave2HDFS NameNode DataNode DataNode SecondryNameNode DataNode YARNNodeManager ResourceManage NodeManager NodeManager 1.docker容器&#xff1a; 把普通用户加入到docker组&am…