前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Boot 如何同时支持 http 与 https 访问?

Spring Boot 如何同时支持 http 与 https 访问?

原创
作者头像
壹言
修改于 2020-03-01 23:44:00
修改于 2020-03-01 23:44:00
4.2K00
代码可运行
举报
文章被收录于专栏:WorldhelloWorldhello
运行总次数:0
代码可运行

原文链接:Spring Boot 如何同时支持 http 与 https 访问?

大多数项目要么要求 https 协议来访问要么直接用 http 协议,但有些项目就是这么奇怪要求同时支持两种协议。

此示例中使用Spring Boot 内置的 tomcat 服务器,我拿到的 SSL 证书是 crt 类型的。所有首先需要将证书转成 jks 类型的。

crt 转 jks
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  # 转p12
  openssl pkcs12 -export -out keystore.pkcs12 -inkey nexus.key -in nexus.crt
	
  # 这里需要设置密码
  # 再将p12格式文件转为.jks格式:
  keytool -v -importkeystore -srckeystore keystore.pkcs12 -srcstoretype PKCS12 -destkeystore 
  keystore.jks -deststoretype JKS
  # 输入上步设置的密码并设置新密码 可以和上一步一样的密码

Windows 系统需要安装 openssl 后才可以执行上述命令。

安装

将生成的 jks 文件放到项目的 resource 目录下,开始配置 application.yml 文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server:
  port: 8888
  custom:
    # http 端口
    httpPort: 9999
  ssl:
    key-store: classpath:keystore.jks
    key-password: 123456
    key-store-type: JKS
  tomcat:
    uri-encoding: utf-8
    basedir: tmp
  #
  servlet:
    context-path: /

然后编写 Https配置类:HttpConfig.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author: ChangXuan
 * @Decription: 配置同时支持 HTTP 与 HTTPS 访问
 * @Date: 19:39 2020/2/20
 **/
@Configuration
public class HttpsConfig {
    @Value("${server.custom.httpPort}")
    private Integer httpPort;

    @Bean
    public ServletWebServerFactory serverFactory() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createStandardConnector());
        return tomcat;
    }
    /**
     * 配置http
     * @return
     */
    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(httpPort);
        return connector;
    }
}
注意事项

application.yml 中配置的 jks 文件的目录为 classpath ,classpath 指的是 target/classes 目录。所以运行时如果报错“找不到 jks 文件”,就手动将 jks 文件复制到此目录下一份。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
重学SpringBoot3-ServletWebServerFactoryAutoConfiguration类
在Spring Boot 3中,ServletWebServerFactoryAutoConfiguration 类扮演着至关重要的角色,它负责自动配置内嵌的 Servlet 容器,例如 Tomcat、Jetty 或 Undertow。这种自动配置能力是 Spring Boot 框架的核心特性之一,它极大地简化了 Spring 应用的开发和部署过程。本文将深入探讨ServletWebServerFactoryAutoConfiguration 类的工作原理、配置方式以及如何通过它来定制内嵌Servlet容器。
CoderJia
2024/10/18
1710
重学SpringBoot3-ServletWebServerFactoryAutoConfiguration类
在Spring Boot中使用HTTPS
在本文中,我们将学习在Spring Boot中使用自签名证书配置SSL(HTTPS),并且要在嵌入式Tomcat上启用Spring Boot应用程序的SSL,我们需要学习以下步骤: 1.创建SSL证书:生成自签名证书,或者使用由受信任的证书颁发机构(CA)颁发的证书。 2.在Spring Boot中启用HTTPS:这可以通过Spring Boot 项目中的一些简单配置来完成。 3. 将HTTP重定向到HTTPS :在某些情况下,最好也能从HTTP访问你的应用,将所有HTTP流量重定向到HTTPS端
lyb-geek
2018/08/16
2.9K0
SpringBoot两种方式配置 HTTPS 安全证书
1:确保安装了JDK并正确配置了环境变量; 2:进入你的JAVA_HOME目录中的bin目录; 3:在这个目录下执行
高大北
2022/06/14
1.4K0
Spring Boot 支持 HTTPS 如此简单,So easy!
这里讲的是 Spring Boot 内嵌式 Server 打 jar 包运行的方式,打 WAR 包部署的就不存在要 Spring Boot 支持 HTTPS 了,需要去外部对应的 Server 配置。
Java技术栈
2019/07/15
6610
Spring Boot 支持 HTTPS 如此简单,So easy!
SpringBoot 配置 HTTPS 安全证书的两种方案
来源:https://blog.csdn.net/lhc_makefunny 文章目录 使用JDK自带的工具生成证书 使用FreeSSL提供的证书 使用JDK自带的工具生成证书 1.确保安装了JDK并正确配置了环境变量; 2.进入你的JAVA_HOME目录中的bin目录; 3.在这个目录下执行 //  keytool -genkey -alias (别名) -dname "CN=(姓名),OU=(组织单位名称),O=(组织名称),L=(城市名称),ST=(省),C=(国家)" -storetype (密钥仓
程序猿DD
2022/09/22
1.2K0
SpringBoot 配置 HTTPS 安全证书的两种方案
Springboot配置https,使用腾讯云免费证书
2.2 提交资料,必填证书绑定域名以及申请邮箱,绑定域名填写springboot项目部署的服务器域名
wayn
2021/12/05
14.2K1
Springboot配置https,使用腾讯云免费证书
秒懂HTTPS接口(实现篇)
创建一个接口PersonRepository,后续的控制器直接调用该接口继承自JpaRepository的方法,来实现和数据库交互
高楼Zee
2019/07/17
2.1K0
秒懂HTTPS接口(实现篇)
SpringBoot之Https
前言:Springboot因为是内置一个tomcat,在需要安全性的情况下需要配置ssl访问。
王念博客
2019/07/25
9970
springboot监控&springboot配置https
springboot自带actuator监控,开启配置后,访问相关链接就可以返回服务运行相关信息,使用方法如下: 1、pom.xml:
贪挽懒月
2020/08/13
1.2K0
springboot监控&springboot配置https
Spring Boot启用HTTPS
默认情况下,Spring Boot应用程序在应用程序启动时使用HTTP的8080端口。可按照以下步骤,在Spring Boot应用程序中配置HTTPS和端口443 -
黑洞代码
2021/09/03
9380
为了调个https接口,先后跟几万亿市值的大厂合作了一把
已经开始工作了,确实今年的压力比去年大了一些。可能是心态问题吧,虽然在家办公但是依然感觉很压抑。 状态就是: "感觉很忙,但是又没有目标"。不知道有没有人有过这种感觉。所以呢就翻看了一下之前写的 一只程序员的2019 。看完后终于知道做点什么了?
CainGao
2020/04/14
4120
SpringBoot配置Https
可以直接通过域名申请; 也可以使用自签证书(自签证书创建可以看我的另一篇文章:[使用KeyStore生成证书]) ​
十玖八柒
2022/08/01
1.2K0
SpringBoot配置Https
spring cloud/spring boot同时支持http和https访问
       关于spring boot同时支持http和https访问,在spring boot官网73.9已经有说明文档了,同样在github上也有官网的例子。官网链接如下
lyb-geek
2018/12/20
1.2K0
spring cloud/spring boot同时支持http和https访问
springboot(22)同时支持http和https访问
关于spring boot同时支持http和https访问,在spring boot官网73.9已经有说明文档了,同样在github上也有官网的例子。 在这里,我向大家讲述一下,我是怎么实现的。 keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 1.-storetype 指定密钥仓库类型 2.-keyalg 生证书的算法名称,RS
IT架构圈
2018/06/01
4K0
重学SpringBoot系列之嵌入式容器的配置与应用
在Spring Boot项目中,可以支持Tomcat、Jetty、Undertow的Web应用服务容器。当我们添加了spring-boot-starter-web依赖后,默认会使用Tomcat作为嵌入式Web容器,不需要我们单独部署,将web应用打成jar包即可运行。
大忽悠爱学习
2021/12/07
1.8K0
重学SpringBoot系列之嵌入式容器的配置与应用
给tomcat7配置SSL证书
今天工作中需要给tomcat7配置SSL证书,以使用https访问tomcat服务。以前都是自签名,照着网上的文档完成的,这回有一点不同的是https证书已经从GoDaddy买回来了,配置过程中遇到了一点坑,这里记录一下。 tomcat7配置SSL证书 从GoDaddy买来的证书包括3个文件,test.com.key, test.com.crt, godaddy_intermediate.crt。这里稍微解释一下,这3个文件。 test.com.key是私钥文件,文件内容如下: -----BEGIN RSA
jeremyxu
2018/05/10
3.8K0
Springboot模拟https安全访问(使用Java提供的keytool命令生成证书)
1、SpringBoot启动时默认采用http进行通信协议定义,但是为了访问安全性,我们有时候会选择使用https进行访问。正常来讲,https的访问是需要证书的,并且为了保证这个证书的安全,一定要在项目中使用CA进行认证,需要收费的哦,证书真是一个挣钱的生意。这里只是利用Java提供的keytool命令实现证书的生成。
别先生
2020/11/24
8610
Springboot模拟https安全访问(使用Java提供的keytool命令生成证书)
Spring Boot配置ssl证书启用HTTPS协议
SSL协议分为两层:SSL记录协议,它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议,它建立在SSL记录协议之上。用于在实际数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。
故久
2019/09/29
5.4K0
Spring Boot配置ssl证书启用HTTPS协议
SSL证书配置(https访问接口, 单向认证和双向认证)
参考文档 1. springboot项目配置阿里云ssl证书,http转https 2. Springboot配置使用ssl,使用https 3. Spring boot使用阿里云SSL证书报错:org/springframework/boot/context/properties/bind/Binder 4. IOException: Alias name tomcat does not identify a key entry 沃通证书部署问题解决办法
时间静止不是简史
2021/04/28
8.1K0
SSL证书配置(https访问接口, 单向认证和双向认证)
最通俗易懂的springboot框架学习教程—SpringBoot配置SSL(https)
SpringBoot可以通过在application.properties或application.yml配置文件中配置各种server.ssl.*属性来声明性使用SSL(https),比如下面的例子在application.properties中设置SSL属性:
晴天娃娃只会笑不会哭
2022/02/16
1.1K0
推荐阅读
相关推荐
重学SpringBoot3-ServletWebServerFactoryAutoConfiguration类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验