springboot+https

http访问不安全,使用https相对好些。

参考网址:https://blog.csdn.net/bock1984/article/details/90116965

操作如下:

  • 1. 使用JDK自带keytool工具,创建本地SSL证书

 启动命令行工具,进入jdk的bin目录执行以下命令:
       

keytool -genkey -v -alias tomcat -keyalg RSA -keystore F:\tomcat.keystore -validity 36500

1
.-keyalg 生证书的算法名称,RSA是一种非对称加密算法 2.-keystore 生成的证书文件的存储路径 3.-validity 证书的有效期

在这里插入图片描述

  • 2.将生成的tomcat.keystore文件拷贝到springboot项目根目录下:


在这里插入图片描述

  • 3.修改application.properties文件


·

 看application.properties配置文件可知,后面只能用http是协议访问了,

光有HTTPS肯定还不够,很多用户可能并不知道,用户有可能继续使用HTTP来访问你的网站,这个时候我们需要添加HTTP自动转向HTTPS的功能,当用户使用HTTP来进行访问的时候自动转为HTTPS的方式。
(这个是springboot2.x的配置,sprintboot1.x有些不一样 区别就是1.0用 EmbeddedServletContainerFactory ,,,2.0用 TomcatServletWebServerFactory)
(另也可以不用新建这个配置类,而是在入口类中添加下面这两个Bean就行了
package com.nsoft.gkzp.syscore.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.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 监听http端口,如访问网址为http协议的,自动转换为Https
 */
@Configuration
public class HttpsComponent {

    @Bean
    public Connector connector(){

        Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8082);//Connector监听的http的端口号
        connector.setSecure(false);
        connector.setRedirectPort(8443);//监听到http的端口号后转向到的https的端口号(一般会用443端口)
        return connector;
    }

    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory(){

        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(connector());
        return tomcat;
    }
}

另:

这边自己生成的证书,是不被公网认证的。如下图。要想公网认证,需要去网上相关机构的去买(将域名提供给他们,他们生成公网可认证的证书),便宜点的大约一年一千多块钱吧。


参考文章:

猜你喜欢

转载自www.cnblogs.com/zdyang/p/11775839.html
今日推荐