@TOC
SpringBoot配置https
SSL 证书:
jdk工具生成ssl证书:
1
| C:\Program Files\Java\jre1.8.0_131\bin>keytool -genkey -alias tomcat -keyalg RSA -keystore /D:/tomcat.keystore
|
bootstrap.yml配置:
修改src\main\resources\bootstrap.yml, 增加ssl证书配置:
1 2 3 4 5 6 7 8
| server: port: 8904 # C:\Program Files\Java\jre1.8.0_131\bin>keytool -genkey -alias tomcat -keyalg RSA -keystore /D:/tomcat.keystore ssl: key-store: classpath:ssl/tomcat.keystore key-store-password: 123456789 keyStoreType: JKS keyAlias: tomcat
|
springboot 启用http默认跳转https
这里配置的是同时支持https和http:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| package com.cloud.demo.test.qcloud;
import org.apache.catalina.connector.Connector; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.servlet.server.ServletWebServerFactory; import org.springframework.context.annotation.Bean;
@SpringBootApplication public class CloudDemoTestQCloudApplication {
@Value("${http.port:8900}") Integer httpPort;
@Value("${server.port}") Integer httpsPort;
public static void main(String[] args) { SpringApplication.run(CloudDemoTestQCloudApplication.class, args); }
@Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(); tomcat.addAdditionalTomcatConnectors(createStandardConnector());
return tomcat; }
private Connector createStandardConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setPort(httpPort); return connector; }
public Connector httpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(httpPort); connector.setSecure(false); connector.setRedirectPort(httpsPort); return connector; }
}
|
如果需要swagger支持https, 需要修改swagger配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| package com.cloud.demo.test.qcloud.config;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.Arrays; import java.util.HashSet;
@Configuration @EnableSwagger2 public class Swagger2Config { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .protocols(new HashSet<>(Arrays.asList("http","https"))) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.cloud.demo.test.qcloud.controller")) .paths(PathSelectors.any()) .build(); }
private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("cloud") .description("cloud") .contact("cloud") .version("1.0") .build(); } }
|
以上.