springboot项目开启https协议的项目实现
1、在windows以管理员身份运行cmd,输入如下命令生成证书
keytool -genkey -alias myhttps -keyalg RSA -keysize 2048 -validity 36500 -keystore "D:/tmp/ssl/myhttps.keystore"
注释
命令:keytool -genkey -alias testhttps -keyalg RSA -keysize 2048 -validity 36500 -keystore "D:/tmp/ssl/testhttps.keystore"
命令解释:
- -genkey 表示要创建一个新的密钥。
- -alias 表示 keystore 的别名。
- -keyalg 表示使用的加密算法是 RSA。
- -keysize 表示密钥的长度.。
- -keystore 表示生成的密钥存放位直。
- -validity 表示密钥的有效时间,单位为天。
2、将目录下的myhttps.keystore文件移动到resource下面

3、配置文件
server: port: 9987 non-ssl-port: 8089 # 用于 非ssl请求 强制转成 ssl 请求 # 当使用 访问地址:http://127.0.0.1:8089/hello 访问时 后台会 将请求 转换成 https://127.0.0.1:9987/hello # servlet: # context-path: /ssl-service ssl: key-store: classpath:myhttps.keystore #类路径下的自签证书 key-alias: myhttps # 证书别名 key-store-password: 123456 #证书密码 key-store-type: JKS # 证书类型 enabled: true # 开启证书验证
4、配置http强制跳转https配置类
package com.example.springboot3.config;
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;
/**
* @author oukele
* http 请求 强制跳转成 https
*/
@Configuration
public class HttpToHttpsConfig {
/**
* 项目指定的端口号
*/
@Value("${server.port}")
private int serverPort;
/**
* 用于 非ssl请求 强制转成 ssl 请求 的端口号
*/
@Value("${server.non-ssl-port}")
private int port;
@Bean
public TomcatServletWebServerFactory servletContainerFactory() {
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);
}
};
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
//设置将分配给通过此连接器接收到的请求的方案
connector.setScheme("http");
//true: http使用http, https使用https;
//false: http重定向到https;
connector.setSecure(false);
//设置监听请求的端口号,这个端口不能其他已经在使用的端口重复,否则会报错
connector.setPort(port);
//重定向端口号(非SSL到SSL)
connector.setRedirectPort(serverPort);
tomcat.addAdditionalTomcatConnectors(connector);
return tomcat;
}
}5、在浏览器中测试

到此这篇关于springboot项目开启https协议的项目实现的文章就介绍到这了,更多相关springboot开启https内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
java 重载(overload)与重写(override)详解及实例
这篇文章主要介绍了java 重载(overload)与重写(override)详解及实例的相关资料,并附实例代码,需要的朋友可以参考下2016-10-10
Java IO流实战之文件复制、文本读写、对象序列化详细解析
Java IO提供了对象序列化机制,可以将对象转换为字节流,并从字节流还原对象,这篇文章主要介绍了Java IO流实战之文件复制、文本读写、对象序列化的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下2025-11-11
springboot logback如何从apollo配置中心读取变量
这篇文章主要介绍了springboot logback如何从apollo配置中心读取变量的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08
SpringBoot 整合Redisson重写cacheName支持多参数的案例代码
这篇文章主要介绍了SpringBoot 整合Redisson重写cacheName支持多参数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2024-01-01
Java编译错误java.lang.NoSuchFieldError的解决方案详析
java.lang.NoSuchFieldError是 Java 中的一种运行时错误,这篇文章主要介绍了Java编译错误java.lang.NoSuchFieldError的解决方案,文中通过代码介绍的非常详细,需要的朋友可以参考下2025-11-11


最新评论