- 配置https访问
- 准备证书
- 配置生效
- https和http访问
- http独立访问
- http跳转https
临时需要这方面东西,留篇备查
配置https访问 准备证书自行选择方便的方式,openssl或者keytool
- keytool如下:
keytool -genkey -alias test -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore test.p12 -validity 365 - openssl如下:
openssl req -new -x509 -key key.pem -out cert.pem -days 1095
openssl pkcs12 -export -in cert.pem -inkey key.pem -out test.p12
证书文件复制到SpringBoot应用的src/main/resources下,修改application.yml增加ssl配置:
server:
port: 443
ssl:
enabled: true
key-store: classpath:test.p12 #证书的路径
key-store-password: 123456 #证书密码
keyStoreType: PKCS12 #秘钥库类型
keyAlias: test #证书别名
https和http访问
http独立访问
在配置了https访问后,支持http访问,添加一个配置类即可,如下:
@Configuration
public class HttpConfig {
@Value("${server.httpPort}")
private int httpPort;
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
if (container instanceof TomcatEmbeddedServletContainerFactory) {
TomcatEmbeddedServletContainerFactory containerFactory =
(TomcatEmbeddedServletContainerFactory) container;
Connector connector = new Connector(TomcatEmbeddedServletContainerFactory.DEFAULT_PROTOCOL);
connector.setPort(httpPort);
containerFactory.addAdditionalTomcatConnectors(connector);
}
}
};
}
}
http跳转https
来自SpringBoot配置HTTPS,并实现HTTP访问自动转HTTPS访问
@Configuration
public class HttpsConfig {
@Value("${server.httpPort}")
private Integer httpPort;
@Value("${server.port}")
private Integer httpsPort;
@Bean
public TomcatServletWebServerFactory 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");
connector.setPort(httpPort);
connector.setSecure(false);
connector.setRedirectPort(httpsPort);
return connector;
}
}



