SpringBoot后端服务开启Https协议提供访问(使用阿里云资源)

news2024/11/26 19:16:40

目录

概述

 申请/下载证书

部署证书

本地测试访问

服务器部署访问

 最后/扩展

总结


概述

本篇博客说明如何将SpringBoot项目开启Https协议提供访问。

博文以步骤【申请/下载证书】,【部署证书】,【本地测试访问】,【服务器部署访问】 ,【扩展】展开说明。

废话:当我们有类似需求:“小程序上线”后,请求的后端服务必须使用https协议,那么我们就需要去将http协议升级为https协议了。

https协议?大致可以看成: 

https协议 = http协议 + ssl协议

所以,要想将http升级成https很简单,只需要有一个ssl证书,然后部署到项目即可。

前提准备:IPC备案过的域名

那么,如下就开始我们的说明。 

 申请/下载证书

我使用的是阿里云的服务器和域名,因此可以到阿里云官网搜索【ssl证书】进入【数字证书管理服务】控制台。

 我们点击【免费证书】--->【创建证书】--->【证书申请】

 输入自己备案好的域名,其他基本默认,点击【提交审核】

审核基本上几分钟就可以下发证书,会有短信提示。

审核好后,我们就可以点击【下载】,获取我们的证书。 

 我使用的是SpringBoot项目做的测试,使用内置服务器Tomcat,因此直接下载Tomcat对应证书。

 下载的压缩包内容:

 第一个是我们的证书,第二个是密码文本文件(存储密码)。

部署证书

我创建了一个空的SpringBoot项目来做演示,写了一个简单的接口来测试:

 项目结构   

 IndexController(测试接口)

 

 1.将证书放到resources目录下

 2.编写配置文件application.yml

***key-store声明证书的放置的路径

 ***请注意key-store-password填写自己下载的压缩包.txt文件里面的密码

 到此,我们启动项目即可。

本地测试访问

我们使用Postman进行测试。

ps:当我们使用本地进行测试的时候,由于本地的IP与我们申请证书时添加的IP不一致,那么Postman会报错IP不匹配,我们可以不用理会,点击【Disable SSL Verification】关掉SSL验证即可。

 成功。

服务器部署访问

我们将SpringBoot项目打包,上传到服务器, java -jar运行,然后Postman测试: 

 当然,我们也可以使用域名(申请证书时填写的域名)进行访问。

 最后/扩展

我们可能会有这样的需求:

我们也许不是一开始做项目就部署了SSL证书,而是后期再部署SSL证书,那么我们在此之前前端项目使用的是http协议进行后端服务访问,那么我们能不能不修改前端的代码,想要http协议和https协议都能访问呢?

这是可以的,我们可以将http协议的访问重定向到https协议进行访问即可。

这样做后,我们后端服务跑起来的时候就会开启两个端口,一个http的端口,一个https的端口。

在启动类中进行配置

package com.mh;

import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class SslTestApplication {

    public static void main(String[] args) {
        SpringApplication.run(SslTestApplication.class, args);
    }

    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection securityCollection = new SecurityCollection();
                securityCollection.addPattern("/*");
                securityConstraint.addCollection(securityCollection);
                context.addConstraint(securityConstraint);
            }
        };
        factory.addAdditionalTomcatConnectors(httpConnector());
        return factory;
    }

    @Bean
    public Connector httpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        // http的端口
        connector.setPort(8080);
        connector.setSecure(false);
        // http的端口后转向到的https的端口
        connector.setRedirectPort(443);
        return connector;
    }
}

当然,你也可以做配置类,我这里直接放到启动类了,只要能将他们加到IOC容器即可生效。

 配置好后,我们再打包,重新放到服务器运行,浏览器测试:

回车后,自动跳转访问https

总结

开启Https很简单,总的来说只需要下载一个SSL证书进行部署即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/872508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux0.95(VFS重点)源码通俗解读(施工中)

文件系统在磁盘中的体现 下面是磁盘的内容,其中i节点就是一个inode数组,逻辑块就是数据块可用于存放数据 操作系统通过将磁盘数据读入到内存中指定的缓冲区块来与磁盘交互,对内存中的缓冲区块修改后写回磁盘。 进程(task_struct * task[N…

Python系统学习1-7-字典

一、字典 1、概念及内存图 列表:由一系列变量组成的可变序列容器字典:由一系列键值对组成的可变散列容器字典优势:利用(内存)空间,换取(CPU查找)时间 键key 必须唯一且为不…

2023-arxiv-LLaMA: Open and Efficient Foundation Language Models

开放和高效的基础语言模型 Paper:https://arxiv.org/abs/2302.13971 Code: https://github.com/facebookresearch/llama 摘要 本文介绍了 LLaMA,这是⼀个包含 7B 到 65B 参数的基础语⾔模型的集合。作者在数万亿个令牌上训练模型,并表明可以…

windows10 安装WSL2, Ubuntu,docker

AI- 通过docker开发调试部署ChatLLM 阅读时长:10分钟 本文内容: window上安装ubuntu虚拟机,并在虚拟机中安装docker,通过docker部署数字人模型,通过vscode链接到虚拟机进行开发调试.调试完成后,直接部署在云…

针对英特尔酷睿 CPU 优化,Canonical 发布 Ubuntu 实时内核

导读Canonical 今天宣布针对支持时序协调运算(TCC)和时间敏感网络(IEEE TSN)的英特尔酷睿处理器,推出优化版实时 Ubuntu 内核。 Canonical 于今年 2 月宣布,为购买 Ubuntu Pro 订阅,使用代号为 …

类加载过程和类加载器

类加载的过程 加载->连接(验证->准备->解析)->初始化 加载 1.获得二进制字节流(可以从本地jar 网络或者动态代理获得) 2.转化成方法区中的运行时数据 3.获得类对应的Class对象 加载的过程由类加载器完成&…

opencv实战项目 手势识别-手部距离测量

手势识别系列文章目录 手势识别是一种人机交互技术,通过识别人的手势动作,从而实现对计算机、智能手机、智能电视等设备的操作和控制。 1. opencv实现手部追踪(定位手部关键点) 2.opencv实战项目 实现手势跟踪并返回位置信息&…

hive高频使用的拼接函数及“避坑”

hive高频使用的拼接函数及“避坑” 说到拼接函数应用场景和使用频次还是非常高,比如一个员工在公司充当多个角色,我们在底层存数的时候往往是多行,但是应用的时候我们通常会只需要一行,角色字段进行拼接,这样join其他…

基于smardaten无代码开发智能巡检系统,让无人机飞得更准

目录 引言需求背景搭建思路开发过程(1)无人机设备数据接入(2)无人机巡检任务管理(3)无人机三维防控监视(4)运防一体化大屏设计(5)异常告警管理(6&…

nvm安装以及使用

注意事项: 安装前需要卸载原有的node,卸载干净后cmd输入node -v查看; 一,下载nvm 下载:https://github.com/coreybutler/nvm-windows/releases 选择第四个 “nvm-setup.zip”; 二,安装 1&…

Fiddler抓包工具不会用?点这里手把手超详细教学!

Fiddler 是一个 HTTP 协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的 HTTP 通讯。 Fiddler 提供了电脑端、移动端的抓包、包括 http 协议和 https 协议都可以捕获到报文并进行分析;可以设置断点调试、截取报文进行请求替换和数据篡改&am…

css 字体渐变样式(设置字体渐变样式+附加实现源码)

问题描述 先看效果图。 解决方案 在对应的css样式里添加如下代码。 我的商品列表在shangpinliebiaobiaotit-view类里面&#xff0c;那么就在shangpinliebiaobiaotit-view设置css渐变样式。 <view class"shangpinliebiaobiaotit-view">商品列表</view&g…

5. 交换机

在上节中&#xff0c;我们创建了一个工作队列。我们假设的是工作队列背后&#xff0c;每个任务都恰好交付给一个消 费者(工作进程)。在这一部分中&#xff0c;我们将做一些完全不同的事情-我们将消息传达给多个消费者。这种模式 称为 ”发布/订阅”. 为了说明这种模式&#xff…

pyspark笔记 pyspark.sql.functions

col qqpyspark 笔记 pyspark.sql.function col VS select_UQI-LIUWJ的博客-CSDN博客 取某一列 lit 创建一个包含指定值的列 date_trunc 将日期截取成由第一个参数指定的字符串值 year, yyyy, yy——截取到年month,mon,mm——截取到月day,dd ——截取到天microsecondmillis…

DAY21

题目一 给定三个字符串str1、str2和aim&#xff0c; 如果aim包含且仅包含来自str1和str2的所有字符&#xff0c;而且在aim中属于str1的字符 之间保持原来在str1中的顺序&#xff0c;属于str2的字符之间保持原来在str2中的顺序&#xff0c;那么称aim是str1和str2的交错组成。实…

ESP32-连接参数/间隔更新

连接间隔的设置是一个协商的过程&#xff0c;ESP32提供了一些协商的接口&#xff0c;按顺序分析一下。 Step 1&#xff1a;首先是Client连接时对Server要求的连接间隔&#xff08;确定值&#xff09; 在连接的时候&#xff0c;Client会把当前的连接间隔发送给Server。在Serve…

Vue.js2+Cesium1.103.0 十一、Three.js 炸裂效果

Vue.js2Cesium1.103.0 十一、Three.js 炸裂效果 Demo ThreeModelBoom.vue <template><div:id"id"class"three_container"/> </template><script> /* eslint-disable eqeqeq */ /* eslint-disable no-unused-vars */ /* eslint-d…

物流行业数据分析

文章目录 物流行业数据分析一、数据预处理1、数据清洗① 重复值、缺失值、格式调整② 异常值处理 2、数据规整 二、 数据分析1、配送服务是否存在问题2、是否存在尚有潜力的销售区域3、商品是否存在质量问题 三、总结参考 物流行业数据分析 Excel适合处理低量级数据&#xff0…

【Hystrix技术指南】(7)故障切换的运作流程原理分析(含源码)

背景介绍 目前对于一些非核心操作&#xff0c;如增减库存后保存操作日志发送异步消息时&#xff08;具体业务流程&#xff09;&#xff0c;一旦出现MQ服务异常时&#xff0c;会导致接口响应超时&#xff0c;因此可以考虑对非核心操作引入服务降级、服务隔离。 Hystrix说明 官方…