springboot前后端分离项目配置https接口(ssl证书)

这篇具有很好参考价值的文章主要介绍了springboot前后端分离项目配置https接口(ssl证书)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明

  • 本记录操作方法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存在就在请求头中设置token
    if (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: 8080
  ssl:
    enabled: true
    # 证书类型一
     key-store: classpath:xxx.pfx
     key-store-password: xxx # 填写keystorePass.txt文件内容
     key-store-type: PKCS12
	# 证书类型二
    key-store: classpath:xxx.jks
    key-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。这两者都是用于存储加密密钥和证书的流行格式。文章来源地址https://www.toymoban.com/news/detail-768917.html

  1. Java KeyStore(JKS):
    • 文件扩展名: 通常,JKS文件的扩展名为".jks"。
    • 格式: JKS是一种专有格式,特定于Java,通常在基于Java的应用程序中使用。
      用途: JKS文件配置Spring Boot应用程序的SSL/TLS。
  • 在application.yml中的示例配置:
server:
  port: 8080 # 配置https接口
  ssl:
  	enabled: true
    key-store: classpath:keystore.jks
    key-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: true
     key-store: classpath:keystore.pfx
     key-store-password: xxx
     key-store-type: PKCS12

补充:两种证书的转化

JKS转PFX

  • 使用 keytool(Java自带的工具)
  • keystore.jks(修改证书文件)证书目录下,使用终端输入如下命令:
keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.pfx -srcstoretype JKS -deststoretype PKCS12
  • 输入源密钥库(JKS)的密码,以及为目标密钥库(PFX)设置一个新的密码
    前后端如何采用https连接,# springboot,微服务学习,nginx,spring boot,https,ssl

PFX 转 JKS

  • 使用 keytool
  • keystore.jks(修改证书文件)证书目录下,使用终端输入如下命令:
keytool -importkeystore -srckeystore keystore.pfx -destkeystore keystore.jks -srcstoretype PKCS12 -deststoretype JKS
  • 输入源密钥库(PFX)的密码,并为目标密钥库(JKS)设置一个新的密码
    前后端如何采用https连接,# springboot,微服务学习,nginx,spring boot,https,ssl

到了这里,关于springboot前后端分离项目配置https接口(ssl证书)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot配置SSL证书,开启HTTPS安全访问!!!

    一、前言 二、SpringBoot中配置SSL 1、环境 2、客户端单向认证服务端代码实战-PFX格式的证书 3、HTTP 转HTTPS 通过HTTP协议传输数据,并不会对数据进行加密,所以存在着一定的风险,容易被抓包破解数据,而且现在各种浏览器对使用HTTP协议的网站也会提示不安全。通过将HTTP协议

    2024年02月11日
    浏览(50)
  • 34、springboot切换内嵌Web服务器(Tomcat服务器)与 生成SSL证书来把项目访路径从 HTTP 配置成 HTTPS

    知识点1:springboot切换内嵌Web服务器(Tomcat服务器) 知识点2:生成SSL证书来把项目访路径从 HTTP 配置成 HTTPS spring-boot-starter-web 默认依赖 Tomcat 内置服务器 改为 Jetty 服务器 改为 Undertow 服务器 目的:把请求路径 http://xxxxx 改成 https://xxxxx 如图:原本普通的项目,启动后是http的

    2024年02月11日
    浏览(52)
  • springboot项目配置ssl证书

    1.首先进入阿里云服务器,搜索ssl证书,免费申请, dns会自动解析该证书,所以不用设置  2.下载tomcat和nginx服务器类型的证书 3.将tomcat服务器类型的文件解压,打开,获得pfx文件,放入项目的resources文件中 4.打开yml配置文件,进行SSL配置,并将http重定向到https   这里注意,

    2023年04月14日
    浏览(40)
  • SpringBoot + Vue前后端分离项目实战 || 六:Jwt加密整合配置

    在之前的系统中,我们利用 UUID 配合 Redis 以达到角色登录的功能。 当前整个系统存在一个问题:人为 修改token值 后,用户仍然能在前端进行数据库操作,后台没有校验当前用户 token 就允许一些请求,导致系统存在 安全漏洞 。 解决方法: Jwt签名验证 。整合 Jwt 后,前端发

    2024年02月15日
    浏览(48)
  • 配置https ssl elasticsearch,springboot项目中连接elasticsearch https

    参考之前的文章 创建self-signed证书 下面展示一些 内联代码片 。 启动springboot项目应该可以连接上elasticsearch了。

    2024年02月11日
    浏览(40)
  • springboot添加SSL证书,支持https与http

    将证书文件放在/resource目录下 修改配置文件

    2024年02月10日
    浏览(43)
  • tomcat ssl证书 https配置

    先记得配置安全组 443 阿里云SSL控制台下载SSL证书并解压 把解压的文件放入远程服务器Tomcat目录下的conf目录 进入Tomcat conf目录配置server.xml文件,需要修改两个地方 一个 端口号 一个 证书的路径和密码 http自动重定向到https 修改web.xml, 放到最后 然后重启tomcat

    2024年01月18日
    浏览(56)
  • 配置https---Nginx认证ssl证书

    nginx作为前端的负载均衡服务器已经很熟悉了,项目需要使用https安全的时候就需要认证证书了 dockerweb管理工具 Portainer 如果对docker不那么熟悉可以使用docker 第三方管理端 然后访问本地9000端口,登录后可以管理容器镜像 有了该工具可以直接进入容器查看日志等操作 nginx环境安装

    2024年01月19日
    浏览(53)
  • nginx配置ssl证书使用https访问

    一:申请证书,我使用的是阿里云免费证书 二:下载证书,解压到服务器上 两个文件:www.xx.com.pem和www.xx.com.key 三:打开配置文件/usr/local/nginx/conf/nginx.conf 放开端口443,替换ssl_certificate和ssl_certificate_key为自己证书路径    server {         listen       443 ssl;         server_na

    2024年01月20日
    浏览(60)
  • Apache配置ssl证书-实现https访问

    443为HTTPS服务的默认端口 启用SSL功能,安装mod_ssl.so模块 使用Certbot签发和续费泛域名SSL证书:https://blog.csdn.net/cljdsc/article/details/133461361 vhost的域名配置文件.conf,在目录:/etc/httpd/conf.d HTTP配置: HTTPS配置: HTTP HTTPS 配置 查看配置文件是否正常 重启apache配置

    2024年02月03日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包