Spring Boot中启动HTTPS

一,生成https 的证书

1,在相应的根目录下

keytool -genkey -alias tomcat  -storetype PKCS12 -keyalg RSA -keysize 2048  -keystore keystore.p12 -validity 3650

解释:

1.-storetype 指定密钥仓库类型 
2.-keyalg 生证书的算法名称,RSA是一种非对称加密算法 
3.-keysize 证书大小 
4.-keystore 生成的证书文件的存储路径 
5.-validity 证书的有效期(天)

  2,步骤

配置文件application.properties添加https支持:

#设定端口号
service.port=8443 #指定签名文件 server.ssl.key
-store=keystore.p12 #指定签名密码 server.ssl.key-store-password=111111(与生成的keystore.p12输入的密码 一直) #指定密钥仓库类型 server.ssl.keyStoreType=PKCS12 #设置别名 server.ssl.keyAlias:tomcat

3,springboot 中创建configure ,使得http 自动转向https

   @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }

    @Bean
    public Connector httpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        //Connector监听的http的端口号
        connector.setPort(8080);
        connector.setSecure(false);
        //监听到http的端口号后转向到的https的端口号
        connector.setRedirectPort(8443);
        return connector;
    }

4,测试 IP:port/xxxx ------------------>>>>>>>> https:IP:port/xxx

posted @ 2019-04-17 17:23  小虎Tiger  阅读(406)  评论(0编辑  收藏  举报