SpringBoot整合开启HTTPS访问

1.首先生成自签名证书

使用jdk自带的keytool,配置了java_home即可在命令行之中直接访问。下面的最重要的参数就是 -genkeypair,就是生成密钥对,这是对于一个非对称加密的情况来说的,如果是使用对称加密的情况,我们使用gencert即可。

SpringBoot整合开启HTTPS访问

我们使用下面的命令,就能生成一个别名为bootserverkeystore,加密算法为RSA的加密秘钥长度2048位,秘钥密码为123456和秘钥库密码为123456的,存放在d盘根目录的名为bootserverkeystore.jks的秘钥库文件。

1keytool -genkeypair -alias bootserverkeystore -keyalg RSA -keysize 2048 -keypass 123456 -storetype JKS -keystore d:bootserverkeystore.jks -storepass 123456 -validity 3650

2.创建工程

配置application.properties,jks秘钥放在resources文件夹下面,不需要任何其他配置, 端口都是随意设置的,但是一般https的话放在443端口,这样的话在url的显示里面,就不会有端口的提示出现。

我们对于server.port的配置除了特殊的占用的端口,其他都可以,也可以配置为443,这是ssl的默认端口,在URL里面也没有显示端口号,但是也可配置为100008080等端口,这些随个人爱好即可,但是需要注意,这个端口号,是给SSL使用的,如果要使用http访问,此时配置的是默认端口80,这点需要注意。

1# 端口号配多少都行,没有要求,443就是默认的,SSL的情况下,不用写端口号,非443就要写端口号
2server.port=443
3# 证书
4server.ssl.key-store=classpath:bootserverkeystore.jks
5# 证书密码
6server.ssl.keyStoreType=JKS
7server.ssl.key-store-password=123456
8server.ssl.enabled=true

3. 访问查看效果

确实是已经变成了https的访问链接,第一张图是http的请求,地址栏的链接显示的区别还是很明显的。

SpringBoot整合开启HTTPS访问

SpringBoot整合开启HTTPS访问

4. http访问自动转到https

主要就是把80端口转到我们设置的https请求的端口,配置好连接器,内置的tomcat就会自动帮我们重定向。我们在application.properties之中设置的port是对于https而言的,所以下面的跳转端口应该是我们需要设置的端口,而原本http默认的端口就是80,所以不需要特殊设置。

 1import org.apache.catalina.Context;
2import org.apache.catalina.connector.Connector;
3import org.apache.tomcat.util.descriptor.web.SecurityCollection;
4import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
5import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
6import org.springframework.context.annotation.Bean;
7import org.springframework.context.annotation.Configuration;
8
9/**
10 * @author: pray-journey.io
11 * @description: http链接自动跳转到https
12 */

13@Configuration
14public class HttpToHttps {
15    @Bean
16    public Connector connector() {
17        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
18        connector.setScheme("http");
19        connector.setPort(80);
20        connector.setSecure(false);
21        connector.setRedirectPort(443);
22        return connector;
23    }
24
25    @Bean
26    public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector) {
27        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
28            @Override
29            protected void postProcessContext(Context context) {
30                SecurityConstraint securityConstraint = new SecurityConstraint();
31                securityConstraint.setUserConstraint("CONFIDENTIAL");
32                SecurityCollection collection = new SecurityCollection();
33                collection.addPattern("/*");
34                securityConstraint.addCollection(collection);
35                context.addConstraint(securityConstraint);
36            }
37        };
38        tomcat.addAdditionalTomcatConnectors(connector);
39        return tomcat;
40    }
41
42}


代码下载:「bootwithhttps」https://www.aliyundrive.com/s/REM3B8osCGa
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

本篇文章来源于微信公众号: 疾风小虎牙

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/13878.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!