SpringBoot配置Https
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1] 。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面
生成证书
使用Java JDK自带生成SSL证书的工具keytool
生成证命令
C:\Users\Administrator>keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keysize 2048 -keystore "D:/tomcat.keystore"
通过此命令运行,则CMD命令窗口会提示输入密钥库口令
-alias 别名 -keypass 指定生成密钥的密码 -keyalg 指定密钥使用的加密算法(如 RSA) -keysize 密钥大小 -validity 过期时间,单位天 -keystore 指定存储密钥的密钥库的生成路径、名称 -storepass 指定访问密钥库的密码
域名证书,可以通过阿里 或 腾讯云 来进行申请
参考,腾讯云域名证书申请流程:https://cloud.tencent.com/document/product/400/6814
项目配置证书
导入证书,把生成的tomcat.keystore放在resources里面
application.properties 或 application.yml 配置文件中配置相关https内容
server.port=8443 # 开启https,配置跟证书对应 server.ssl.enabled=true server.ssl.key-store=classpath:tomcat.keystore # server.ssl.key-store-type=JKS server.ssl.key-store-type=JKS # 密码 server.ssl.key-store-password=123456 # springboot2.x不需要配置 server.ssl.key-password=123456 # 别名 server.ssl.key-alias=tomcat
配置http协议跳转https
package com.dingsheng; 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.boot.web.servlet.server.ServletWebServerFactory; import org.springframework.context.annotation.Bean; @SpringBootApplication public class DingshengApplication { public static void main(String[] args) { SpringApplication.run(DingshengApplication.class, args); } // SpringBoot2.x配置HTTPS,并实现HTTP访问自动转向HTTPS @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(httpConnector()); return tomcat; } @Bean public Connector httpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8080); // 监听Http的端口 connector.setSecure(false); connector.setRedirectPort(8443); // 监听Http端口后转向Https端口 return connector; } }
相关其他博主文字,推荐大家可以参考
https://www.cnblogs.com/huanzi-qch/p/12133872.html
分类:
技术专题_学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示