1.首先生成自签名证书
使用jdk自带的keytool,配置了java_home即可在命令行之中直接访问。下面的最重要的参数就是 -genkeypair,就是生成密钥对,这是对于一个非对称加密的情况来说的,如果是使用对称加密的情况,我们使用gencert即可。
我们使用下面的命令,就能生成一个别名为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里面也没有显示端口号,但是也可配置为10000,8080等端口,这些随个人爱好即可,但是需要注意,这个端口号,是给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的请求,地址栏的链接显示的区别还是很明显的。
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