SpringBoot http升为https(自签SSL证书,局域网内使用)http重定向https

SpringBoot http升为https(自签SSL证书,局域网内使用)http重定向https

  1. 首先要生成证书,到服务器jdk的bin文件夹下执行命令行:keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keyword.p12 -validity 3650 ,输入密码,剩下的可以不输,直接全部回车,执行完之后会在当前文件夹内生成一个keyword.p12的文件。

  2. 将keyword.p12拷贝至resources目录下,然后在pom.xml中添加:

    	
                
                    src/main/resources
                    true
                    
                        **/*.p12
                    
                
                
                    src/main/resources
                    false
                    
                        **/*.p12
                    
                
            
    

    这是解决找不到证书文件的方法。

  3. 在properties文件中添加配置:

    #SSL
    server.ssl.key-store=classpath:keyword.p12
    server.ssl.key-store-password=123456
    server.ssl.keyStoreType=PKCS12
    server.ssl.keyAlias=tomcat
    
  4. 将项目打包为jar包的时候,证书文件是不会打包进去的,所以需要手动将keyword.p12文件拷到jar包同级目录下。

  5. http重定向至https:
    (1)在properties文件中添加
    在这里插入图片描述
    (2)添加configure:

    @Configuration
    public class HttpToHttpsConfig extends WebMvcConfigurerAdapter {
        @Value("${server.port}")
        private int serverPort;
    
        @Value("${http.port}")
        private int serverHttpPort;
    
        /**
         * 解决跨域问题
         * @param registry
         */
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST", "OPTIONS", "PUT")
                    .allowedHeaders("Content-Type", "X-Requested-With", "accept", "Origin", "Access-Control-Request-Method",
                            "Access-Control-Request-Headers","accessToken")
                    .exposedHeaders("Access-Control-Allow-Origin", "Access-Control-Allow-Credentials")
                    .allowCredentials(true).maxAge(3600);
        }
    
        @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(initiateHttpConnector());
            return tomcat;
        }
    
        private Connector initiateHttpConnector() {
            Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
            connector.setScheme("http");
            //需要重定向的http端口
            connector.setPort(serverHttpPort);
            connector.setSecure(false);
            //设置重定向到https端口
            connector.setRedirectPort(serverPort);
            return connector;
        }
    }
    
    

你可能感兴趣的:(笔记)