springboot项目配置https证书

news2024/9/24 15:27:43

前言

springboot项目直接http访问不安全,如何开启https?

如何配置ssl

创建证书

注意:如果你有CA办法的数字证书,可以使用直接使用CA颁发的证书。非可信CA或者私人颁发的证书在浏览器地址栏会显示红色,不安全不受信任。

如果你没有数字证书,可以使用keytool 自己手动颁发一个证书供学习或者测试。
如何自己生成证书,请见相关链接
keytool工具生成JKS证书

也可以在阿里云申请数字证书,申请完证书后,点击下载证书后会有不同类型的证书提供。
在这里插入图片描述

配置和转发

将生成的证书放到resources/ssl目录下
在这里插入图片描述

编写yaml配置文件

custom:
  http-port: 8080 #http端口,正常应该配置80
server:
  port: 8888 #https端口,正常应该配置443
  ssl: #ssl配置
    enabled: true  # 默认为true
    #key-alias: alias-key # 别名(可以不进行配置)
    # 保存SSL证书的秘钥库的路径
    key-store: classpath:ssl/www.mytools.com.jks
    key-password: 951753
    key-store-password: 951753
    key-store-type: JKS    #证书类型

创建编写HttpsConfig

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.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * https配置,将http请求全部转发到https,访问http端口也指向https
 *
 */
@Configuration
public class HttpsConfig {

    @Value("${custom.http-port:8889}")
    private Integer httpPort;

    @Value("${server.port:8888}")
    private Integer port;

    @Bean
    public TomcatServletWebServerFactory servletContainer() {
        // 将http请求转换为https请求
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint constraint = new SecurityConstraint();
                // 默认为NONE
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                // 所有的东西都https
                collection.addPattern("/*");
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }

    /**
     * 强制将所有的http请求转发到https
     *
     * @return httpConnector
     */
    @Bean
    public Connector httpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        // connector监听的http端口号
        connector.setPort(httpPort);
        connector.setSecure(false);
        // 监听到http的端口号后转向到的https的端口号
        connector.setRedirectPort(port);
        return connector;
    }
}

配置pom.xml,需要注意将证书打包到发布包

   <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <nonFilteredFileExtensions>
                        <!--<nonFilteredFileExtension>p12</nonFilteredFileExtension>-->
                        <nonFilteredFileExtension>jks</nonFilteredFileExtension>
                        <nonFilteredFileExtension>cer</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
            </plugin>
        </plugins>
    </build>

启动项目验证
在这里插入图片描述

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

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

相关文章

Mac/iPhone邮件APP绑定武大邮箱

Mac/iPhone邮件APP绑定武大邮箱 一、准备工作二、新增一个互联网账户三、设置收件箱和发件箱服务器 一、准备工作 武大邮箱账户&#xff0c;确保你知道自己的邮箱登陆密码。 下面的步骤是在Mac上操作&#xff0c;iPhone上的设置也是一样的&#xff0c;主要是收件箱和发件箱服…

DC-4 打靶渗透

一、信息收集 1、查看靶机MAC地址&#xff1a; 2、查看靶机的ip地址&#xff1a; nmap 192.168.13.0/24 3、查看靶机开放的端口&#xff1a; nmap -p- -sC -sT -sV -A 192.168.13.161 4、访问靶机的80端口&#xff1a; 5、扫描目录&#xff1a; dirsearch -u "http://192…

Redis远程字典服务器(3)——常用数据结构和单线程模型

目录 一&#xff0c;常用数据结构 1.0 前言 1.1 string 1.2 hash 1.3 list 1.4 set 1.5 zset 1.6 演示 二&#xff0c;关于单线程模型 2.1 关于Redis的单线程 2.2 Redis为什么快 一&#xff0c;常用数据结构 1.0 前言 Redis是采用键值对的方式来存储数据的&#…

pixel 3a 刷机和root 流程

1、下载镜像文件 官方下载出厂镜像刷入 或者直接下载手机本身自带的镜像。 下载地址&#xff1a;https://developers.google.com/android/images 找到对应手机的版本&#xff0c;可以通过指令 adb shell getprop 找到 [ro.bootimage.build.fingerprint]: [google/sargo/sargo:1…

代码随想录算法训练营第九天|151.翻转字符串里的单词 卡码网:55.右旋转字符串

LeetCode 151 翻转字符串里的单词 题目&#xff1a; 给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意…

超声波眼镜清洗机哪个品牌比较好用?四大高赞耐用单品全面测评

随着大家对健康卫生的关注不断提升&#xff0c;超声波清洗机逐渐受到佩戴眼镜人士的青睐。超声波清洗机是一种既方便又高效的智能清洁工具。它利用超声波技术&#xff0c;通过在眼镜表面产生高频振动&#xff0c;将污垢和油脂彻底分离&#xff0c;从而实现卓越的清洁效果。下面…

基于PSO-LSTM的多变量多特征数据分类预测

一、数据集 数据特征&#xff1a;12个多分类&#xff1a;4分类 二、PSO-LSTM网络 PSO-LSTM 网络是一种结合粒子群优化算法&#xff08;Particle Swarm Optimization, PSO&#xff09;和长短期记忆网络&#xff08;Long Short-Term Memory, LSTM&#xff09;的混合模型。它将 …

好领导都会用三招管好下属!

管不住人&#xff0c;你就当不好官&#xff0c;高明领导管人就靠这3大秘诀&#xff01; 秘诀一&#xff1a;敢于亮剑 身为领导&#xff0c;&#xff0c;有时候需要有勇气面对挑战和问题&#xff0c;勇于做出决策&#xff0c;拿出魄力&#xff0c;勇于亮剑&#xff0c;向一切宣…

【HarmonyOS NEXT星河版开发学习】小型测试案例11-购物车数字框

个人主页→VON 收录专栏→鸿蒙开发小型案例总结​​​​​ 基础语法部分会发布于github 和 gitee上面&#xff08;暂未发布&#xff09; 前言 经过一周的学习&#xff0c;我发现还是进行拆分讲解效果会比较好&#xff0c;因为鸿蒙和前端十分的相识。主要就是表达的方式不同罢了…

2024年高教社杯全国大学生数学建模竞赛报名第一次通知!建议收藏!预测类模型及应用场景汇总

对于数学建模而言,算法模型选的对,文章写的顺~其中预测类模型是数模中常用的模型之一,通过预测模型,我们可以对未来的趋势和事件进行合理推测。今天,数模0error给大家汇总一下预测类模型及其应用场景,供大家参考,小伙伴们码住! 2024年高教社杯全大学生数学建模竞赛通知…

docker学习初体验

docker学习初体验 docker是什么 docker 包括三个基本概念: 镜像&#xff08;Image&#xff09;&#xff1a;Docker 镜像&#xff08;Image&#xff09;&#xff0c;就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 roo…

四款口碑比较好充电宝排名,哪些性价比高?适合入手充电宝推荐

2024年快到下旬了&#xff0c;市场上的充电宝价格也是差不多都沉淀起来了。所以就性价比高的充电宝的入手时间来说&#xff0c;那确实是年底左右的时间挑选入手会比较好一点。而挑选性价比高的充电宝类型呢&#xff0c;那说充电宝&#xff0c;我个人其实也有入手过不少品牌的充…

晶体振荡器的频率容差与温度稳定性

晶体振荡器作为电子设备中不可或缺的频率源&#xff0c;其频率的准确性与稳定性至关重要。本文旨在阐述晶体振荡器的频率容差与温度稳定性的定义、测量单位及其在实际应用中的重要性。 一、频率容差定义及测量单位 频率容差是指晶体振荡器在特定条件下&#xff08;通常是25C的…

mysql 监控开始时间,结束时间,平均取n个时间点

需求 最近1小时 1分钟 60个点 最近3小时 5分钟 36个点 最近6小时 10分钟 36个点 最近12小时 20分钟 36个点 最近1天 1小时 24个点 最近3天 3小时 24个点 最近1周 6小时 28个点 如果你的递归查询支持递归CTE&#xff08;如MySQL 8.0&#xff09;&#xff0c;可以使用递归查询来…

[自学记录09*]关于模糊效果降采样优化性能的小实验

一、降采样在模糊中的优化 这两天接手了几个高度定制化的模糊&#xff0c;包括不限于放射和旋转状的径向模糊&#xff0c;移轴模糊&#xff0c;景深的散景模糊等等&#xff0c;这些效果在游戏中非常常见。 其实模糊的原理都差不多&#xff0c;无非就是对UV偏移后重新采样再求…

UI动画设计:提升用户体验的关键

传统的静态 UI 设计正在逐渐被淘汰&#xff0c;UI 动画设计正在脱颖而出。随着技术的成熟&#xff0c;UI 动画正试图超越现有的限制和规则&#xff0c;并通过应用程序形成、网站和其他产品的新互动模式。交互式动画也可以为 UI 设计增添活力&#xff0c;使用户界面更加丰富多彩…

【vue3|第20期】vue3中Vue Router路由器工作模式

日期&#xff1a;2024年8月6日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xff…

ThreadLocal 详解(三)内存泄露原因,以及强弱引用

1、ThreadLocal内存泄漏 在Threadlocal的内部静态类中Entry将Threadlocal作为一个key&#xff0c;值作为value保存&#xff0c;他继承WeakReference&#xff0c;super(k)&#xff0c;代表了Threadlocal对象是一个弱引用&#xff1b; static class Entry extends WeakReference…

mysql中B+树的数据存储

B树索引基础分析 B树的定义 B树是一种自平衡的树形数据结构&#xff0c;常用于数据库和操作系统的索引结构。它具有以下特点&#xff1a; 所有数据都存储在叶子节点&#xff0c;非叶子节点仅存储键值和子节点的指针。 叶子节点之间通过指针相互连接&#xff0c;形成一个有序链…

机器视觉应用基础: 工业镜头

文章转载自机器视觉应用基础: 工业镜头-工业相机镜头选型-少有人走的路 (skcircle.com) 工业镜头相当于人眼的晶状体&#xff0c;如果没有晶状体&#xff0c;人眼看不到任何物体&#xff1b;如果没 有镜头&#xff0c;那么摄像头所输出的图像&#xff1b;就是白茫茫的一片&…