【SpringBoot+阿里云ssl】完成 http转https以及ws转wss

2023-05-16

SpringBoot+阿里云ssl完成 http转https以及ws转wss

  • 前言
  • 一、HTTP转HTTPS
  • 二、ws转wss

前言

本文工作是建立在已经有一个SSL证书的基础之上。阿里云证书如何申请可以参考以下链接:
阿里云免费SSL证书申请流程
申请完成后下载相应的证书。本文的服务器是springboot内置的Tomcat服务器,因此选择下载tomcat版本的。
下载完成后解压,会出现一个.pfx后缀和.txt后缀的文件。

  • 证书文件(domainName.pfx):以.pfx为文件类型。
  • 密码文件(pfx-password.txt):以.txt为文件类型。

一、HTTP转HTTPS

首先将.pfx后缀的文件,放在springboot项目下的resources目录下,然后在application.yml文件配置以下内容。
如果是application.properties,将其修改为改成application.yml
在这里插入图片描述
添加以下配置

  server:
    port: 8086
    ssl:
      key-store: classpath:5782771_www.xxxxx.top.pfx
      key-store-password: xxxxxx
      key-store-type: PKCS12
      enabled: true
#	如果上面的PKCS12不行,换JKS是试试
#      key-store-type: JKS 

然后在Springboot的启动类里面添加以下代码:

public class ManageApplication {



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





    /*
    * 在这里设置http的监听端口为8078端口
		完成以上配置后,我们访问 http://localhost:8078 即可自动跳转为 https://localhost:8086
		之后作测试就可以使用:https://localhost:8086 进行数据请求和页面访问了。
		如果部署在阿里云服务器,并且证书绑定了域名www.xxx.com或者ip
		就可以使用 https://域名:8086
		或者 https://ip:8086
    * */

    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(redirectConnector());
        return tomcat;
    }

    private Connector redirectConnector() {
        Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
        connector.setScheme("http");
        connector.setPort(8078);
        connector.setSecure(false);
        connector.setRedirectPort(8086);
        return connector;
    }

}

/* * 在这里设置http的监听端口为8078端口 完成以上配置后,我们访问 http://localhost:8078 即可自动跳转为 https://localhost:8086 之后作测试就可以使用:https://localhost:8086 进行数据请求和页面访问了。 如果部署在阿里云服务器,并且证书绑定了域名www.xxx.com或者ip 就可以使用 https://域名:8086 或者 https://ip:8086 来完成接口数据请求和页面访问 * */

设置完成后,启动项目不报错,且下面显示以下内容说明成功了。

[frame] 2021-09-15 10:44:41,745 - 2398 INFO  [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer:220  - Tomcat started on port(s): 8086 (https) 8078 (http) with context path ''
[frame] 2021-09-15 10:44:41,755 - 2408 INFO  [main] org.springframework.boot.StartupInfoLogger:61  - Started ManageApplication in 2.759 seconds (JVM running for 4.215)

二、ws转wss

在springboot的启动类下加上以下代码,就可以通过wss://localhost:8086进行访问了。
如果部署在阿里云服务器,并且证书绑定了域名www.xxx.com或者ip
就可以使用 wss://域名:8086或者 wss://ip:8086来进行websocket的连接。


  public static void main(String[] args) {
        SpringApplication.run(ManageApplication.class, args);
    }
	/*
	*  
	*   下面方法可以开启 ws转wss
	*
	* */
    @Bean
    public TomcatContextCustomizer tomcatContextCustomizer() {
        log.info("init");
        return new TomcatContextCustomizer() {
            @Override
            public void customize(Context context) {
                log.info("init   customize");
                context.addServletContainerInitializer(new WsSci(), null);
            }
        };
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【SpringBoot+阿里云ssl】完成 http转https以及ws转wss 的相关文章

  • Django HTTPS 和 HTTP 会话

    我使用 Django 1 1 1 和 ssl 重定向中间件 通过 HTTPS 创建的会话数据 身份验证等 在站点的 HTTP 部分中不可用 无需将整个站点设置为 HTTPS 即可使其可用的最佳方法是什么 这是设计使然 您无法轻易更改 当通过
  • Spring boot 中特定包的自定义日志文件

    我有一个带有专门操作的java包 专业化是因为它们很少被使用 并且我不想将它们与普通日志记录混合在一起 我知道添加logging file myapplication log会将日志记录重定向到此文件 但有没有办法指定仅从特定包记录到另一个
  • 如何通过基本身份验证确保 Spring Cloud Eureka 服务的安全?

    我在同一主机上设置了多个尤里卡服务器实例 他们使用主机名 eureka primary secondary 和 tertiary 这些主机名在主机文件中定义为 localhost 别名 一切都工作正常 它们都是可见的 并且可以作为不同的实例
  • 从 PCAP 嗅探重建数据

    我试图通过 libpcap 嗅探 HTTP 数据 并在处理 TCP 有效负载后获取所有 http 内容 标头 有效负载 根据我的讨论编写 http 嗅探器 或任何其他应用程序级嗅探器 https stackoverflow com ques
  • IIS 8 HTTPS/需要 SSL 导致超时错误

    尝试通过 IIS 8 通过 SSL 发布网站 但出现超时错误 任何帮助表示赞赏 采取的步骤 已验证该网站可以通过 HTTP 访问 http xxx xxx xxx xxx有效 此时使用 IP 地址 如果重要的话 IIS gt 服务器证书 g
  • 无法在类上找到适当的构造函数

    我正在尝试将本机 SQL 结果映射到 POJO 但它返回错误 这是完整的堆栈跟踪 Hibernate SELECT FROM members tb where memberName like 2019 12 19 07 40 20 688
  • Spring Boot自动装配存储库始终为空[重复]

    这个问题在这里已经有答案了 每次我进入我的服务类时 存储库似乎都没有自动连接 因为它不断抛出 NullPointerException 谁能帮我检查一下我缺少什么吗 这是我的代码 演示应用程序 java package com exampl
  • 身份验证在 Spring Boot 1.5.2 和 Oauth2 中不起作用

    我正在使用带有 spring boot 1 5 2 RELEASE 的 Oauth2 当我尝试重写 ResourceServerConfigurerAdapter 类的配置方法时 它给了我一个编译错误 但这在 Spring boot 1 2
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • 从手机访问本地主机[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在使用
  • Node.js 未处理的“错误”事件

    我编写了一个简单的代码并将其保存在文件 try js 中 var http require http var makeRequest function message var options host localhost port 8080
  • Flutter http请求上传mp3文件

    我使用这个 api 上传 mp3 文件 使用这种方法 Future
  • 在 Spring Boot 测试期间替换 @Configuration 中的 @Value 属性

    Scenario 我有一个 Spring Boot 应用程序 Configuration带注释的 Spring 配置类 其中包含一些 Value带注释的字段 为了进行测试 我想用自定义测试值替换这些字段值 不幸的是 这些测试值不能使用简单的
  • PushSharp APNS 生产:无法识别提供给包的凭据(但开发工作正常)

    我的应用程序刚刚准备在 App Store 上销售 但我的生产设备 从 App Store 安装了该应用程序的设备 都没有收到推送通知 当我尝试向生产设备发送推送通知时 出现以下错误 The credentials supplied to
  • spring data mongodb中如何实现聚合分页

    spring data mongodb中使用mongotemplate或者mongorepository 如何实现聚合的分页 这是对旧帖子的答案 但我会提供答案 以防其他人在搜索类似内容时出现 建立在之前的基础上F rat K K 的解决方
  • 使用 WCF 支持“application/x-www-form-urlencoded”发布数据的最佳方式?

    我正在基于 W3C 规范构建 WCF 服务 该规范定义了接受 application x www form urlencoded 发布数据的 RESTful Web 服务端点 默认情况下 WCF 不支持这种类型的消息编码 我发现了许多创建如
  • 为什么我的 Github 托管网站响应 HTTP 302 而不是 200?

    我拥有该域名penkov id au http penkov id au 我主持一个blog http michael penkov id au blog 2014 01 02 reinventing the wheel html usin
  • 在具有相同属性名称的不同数据类型上使用 ModelMapper

    我有两节课说Animal AnimalDto我想用ModelMapper将 Entity 转换为 DTO 反之亦然 但是对于具有相似名称的一些属性 这些类应该具有不同的数据类型 我该如何实现这一目标 动物 java public class
  • Perl LWP GET 或 POST 到 SNI SSL URL

    我有一个使用 perl LWP 向客户发送数据的系统 他们可以选择 URL 以及是 POST 还是 GET 一位新客户最近抱怨该服务不起作用 他们怀疑这是因为他们的端点使用了 SNI SSL 查看日志 我看到的只是错误消息 证书验证失败 5
  • Netbeans 8 不会重新加载静态 Thymeleaf 文件

    我通过 Maven 使用 Spring Boot 和 Thymeleaf 当我进行更改时 我似乎无法让 Netbeans 自动重新部署我的任何 Thymeleaf 模板文件 为了看到更改 我需要进行完整的清理 构建 运行 这需要太长的时间

随机推荐

  • c++ 的string的格式化方法

    1 string strResult str double a 61 35 000 b 61 14 967 std ostringstream ostr ostr lt lt 34 a 43 b 61 34 lt lt a lt lt 34
  • mac硬盘空间不足

    本文参考自 xff1a mac空间不足 自我的进化 http www shanxing top p 61 108 先说结果 xff1a 是由于时间机器 xff08 time machine xff09 的自动备份造成的 在Mac的 关于本机
  • Airsim仿真

    Airsim设计的目的 xff1a 1 现实世界开发测试自动驾驶车辆算法费时费力 2 迎合AI的发展 xff0c 需要在各种条件下和环境下收集大量带注释训练数据 模块化设计 xff0c 强调可扩展性 提供很多API xff0c 核心组件包括
  • Linux 下安装Git

    一 系统 xff1a CentOS release 6 5 Final 查看是否安装过Git xff0c git version 二 下载最新的git xff1a https github com git git 解压缩 xff1a unz
  • 0404---通过SSH连接远程服务器运行图形界面程序问题

    远程运行 linux 服务器图形界面程序问题 通常部署在数据中心机房中的服务器是没有图形桌面的 xff0c 对服务器的日常运维也往往通过远程客户端命令窗口来进行 xff0c 但有时候往往需要在服务器上远程安装或运行图形窗口类软件 xff0c
  • Debian 下 Web Server 和浏览器的利用

    今天有人参观我的计算机 xff0c 呵呵 xff0c 被我的浏览器功能吓住了 xff0c 呵呵 xff0c 这年月 xff0c 浏览 器很管用啊 xff0c 不知道大家怎么用的 xff0c 谈谈我的吧 xff1a 1 wiki mediaw
  • Ubuntu查看linux系统版本号

    查看ubuntu版本 输入命令 cat proc version 显示如下 Linux version 5 0 0 13 generic buildd 64 lcy01 amd64 020 linux内核版本号 gcc version 8
  • Mac识别time machine出错或者打开备份盘里空白

    最近恢复Mac xff0c 从苹果售后拿来的给我预装的是mojova xff0c 10 x xff0c 我备份时候的系统是12 x所以差距比较大 在客服的远程帮助下 xff08 使用我手机远程 xff0c 打开相机就能看到我相机看到的东西
  • Mac终端首行显示特定字符便于查看

    方法一 xff1a 2022年11月3日亲测有效 xff1a 在终端中输入 sudo scutil set HostName x1f412 x1f412 x1f412 x1f412 x1f412 x1f412 就是你想修改的名字 回车之后重
  • VSC 配置c++调试环境

    弄了半天 xff0c 总算弄好了 xff0c 结合网上的教程 xff0c 整理分享一下 总体流程 xff1a 下载安装vscode安装cpptools插件安装编译 调试环境修改vscode调试配置文件 下载安装vscode https co
  • 字符串子序列匹配问题

    题目给你长度为n的字符串L xff0c 给你q个长度为0 m的字符串b xff0c 让你判断每一个b是否是字符串L的子序列 L和b长度小于1e5 xff09 例题 xff1a Long Long Ago 有三种做法 最后一种能过 一 最长公
  • 字符串最小字典序子序列

    给出一个长度为n 1 lt n lt 10000 的只有小写字母的字符串 xff0c 然后找出一个长度为m的最小字典子序列 做一个预处理 xff0c 首先26个vector存储每个字母出现位置的下标 xff0c O n 遍历字符串 xff0
  • 关于vscode中使用c语言链接mysql的问题

    关于vscode中使用c语言链接mysql的问题 最近想着写一个图书管理系统 用来当C语言的期末设计作业 xff0c 想着反正都要写了 就写 大 一点就想着连一下数据库吧 xff01 xff01 就碰到了N多的问题 首先我使用的是vscod
  • debain 、pve虚拟化平台修改国内源并修改dns

    pve 是基于debain的一个linux 虚拟化平台 xff0c 可以实现创建虚拟机 问题 xff1a Failed to fetch xxxxxxx E Failed to fetch http ftp debian org debia
  • 虚拟化平台PVE(ProxmoxVirtual Environment)安装部署

    1 iso下载 官方ISO下载地址 2 ventoyu盘制作工具 ventoy官方下载 使用上边制作好u盘 xff0c 将下载好的PVE镜像文件拖入u盘中 3 进入主板bios xff0c 设置u盘为第一启动项 4 进入pe系统选择镜像 5
  • ubuntu22.04安装教程

    1 选择语言 默认 2 取消安装更新 默认 3 选择键盘语言 默认 4 配置ip xff0c 可以直接选择dhcp xff0c 也可选择配置静态ip 默认 5 配置代理 跳过不填写 6 设置镜像源 默认 https mirrors aliy
  • Ubuntu 16.04源码编译安装MySQL5.7

    CentOS源码编译安装 xff0c 可以参考 CentOS 6源码编译安装MySQL5 6 这篇文章 1 软件环境 Ubuntu 16 04mysql 5 7 24 2 安装前的准备 Ubuntu 16 04 sudo apt get i
  • 解决Ubuntu 16.04软件中心闪退的问题

    依次执行以下命令 xff1a sudo apt get update sudo apt get dist upgrade sudo apt get install reinstall software center 引用链接 xff1a h
  • 【Zookeeper+Hadoop+HBase】WMware上搭建基于Ubuntu18.04的Zookeeper+Hadoop+HBase集群

    WMware上搭建基于Ubuntu18 04的Zookeeper 43 Hadoop 43 HBase集群 前言一 环境准备1 创建虚拟机2 网络配置3 克隆2个虚拟机4 更改主机名hostname以及修改hosts文件4 配置各节点之间的
  • 【SpringBoot+阿里云ssl】完成 http转https以及ws转wss

    SpringBoot 43 阿里云ssl完成 http转https以及ws转wss 前言一 HTTP转HTTPS二 ws转wss 前言 本文工作是建立在已经有一个SSL证书的基础之上 阿里云证书如何申请可以参考以下链接 xff1a 阿里云免