在Spring Boot中,使用Https提供服务,并将Http请求自动重定向到Https
2018-01-25 12:51
816 查看
本文介绍如何在Spring Boot中,使用Https提供服务,并将Http请求自动重定向到Https。
Https证书
巧妇难为无米之炊,开始的开始,要先取得Https证书。你可以向证书机构申请证书,也可以自己制作根证书。如果你对于Https的原理和证书制作还不清楚,可以看一下Https原理介绍和自制Https证书。
Https原理介绍
http://www.cnblogs.com/xinzhao/p/4949344.html
自制Https证书
http://www.cnblogs.com/xinzhao/p/4950689.html
创建Web配置类
在代码中创建一个使用了Configuration注解的类,就像下面这段代码一样:
@Configuration
public class WebConfig {
//Bean 定义...
}
配置Https
在配置类中添加EmbeddedServletContainerCustomizer Bean,并在其中配置Https证书和端口号。
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
Ssl ssl = new Ssl();
//Server.jks中包含服务器私钥和证书
ssl.setKeyStore("server.jks");
ssl.setKeyStorePassword("123456");
container.setSsl(ssl);
container.setPort(8443);
}
};
}
配置Http使其自动重定向到Https
Embedded默认只有一个Connector,要在提供Https服务的同时支持Http,需要添加一个Connector。在配置类中添加如下配置:
@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
TomcatEmbeddedServletContainerFactory factory =
new TomcatEmbeddedServletContainerFactory() {
@Override
protected void postProcessContext(Context context) {
//SecurityConstraint必须存在,可以通过其为不同的URL设置不同的重定向策略。
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
factory.addAdditionalTomcatConnectors(createHttpConnector());
return factory;
}
private Connector createHttpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setSecure(false);
connector.setPort(8080);
connector.setRedirectPort(8443);
return connector;
}
Https证书
巧妇难为无米之炊,开始的开始,要先取得Https证书。你可以向证书机构申请证书,也可以自己制作根证书。如果你对于Https的原理和证书制作还不清楚,可以看一下Https原理介绍和自制Https证书。
Https原理介绍
http://www.cnblogs.com/xinzhao/p/4949344.html
自制Https证书
http://www.cnblogs.com/xinzhao/p/4950689.html
创建Web配置类
在代码中创建一个使用了Configuration注解的类,就像下面这段代码一样:
@Configuration
public class WebConfig {
//Bean 定义...
}
配置Https
在配置类中添加EmbeddedServletContainerCustomizer Bean,并在其中配置Https证书和端口号。
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
Ssl ssl = new Ssl();
//Server.jks中包含服务器私钥和证书
ssl.setKeyStore("server.jks");
ssl.setKeyStorePassword("123456");
container.setSsl(ssl);
container.setPort(8443);
}
};
}
配置Http使其自动重定向到Https
Embedded默认只有一个Connector,要在提供Https服务的同时支持Http,需要添加一个Connector。在配置类中添加如下配置:
@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
TomcatEmbeddedServletContainerFactory factory =
new TomcatEmbeddedServletContainerFactory() {
@Override
protected void postProcessContext(Context context) {
//SecurityConstraint必须存在,可以通过其为不同的URL设置不同的重定向策略。
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
factory.addAdditionalTomcatConnectors(createHttpConnector());
return factory;
}
private Connector createHttpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setSecure(false);
connector.setPort(8080);
connector.setRedirectPort(8443);
return connector;
}
相关文章推荐
- 如何在Spring Boot中,使用Https提供服务,并将Http请求自动重定向到Https。
- spring boot 使用@RestController 和 @Controller 构造常见http get ,post请求例子
- 详解如何使用Jersey客户端请求Spring Boot(RESTFul)服务
- spring-boot 添加http自动转向https
- SpringBoot开启https以及http重定向
- spring cloud 之 Feign 使用HTTP请求远程服务
- 使用 URL Rewrite 重定向 Http 请求至 Https
- 使用spring-web中的api发送http或https请求的代码
- 使用Apache提供的HttpClient发送https请求
- Spring Boot 中使用Feign作为HTTP客户端调用远程HTTP服务
- Spring Boot工程支持HTTP和HTTPS,HTTP重定向HTTPS
- spring boot使用https,以及https与http共存
- spring-boot 添加http自动转向https
- 使用Jersey客户端请求Spring Boot(RESTFul)服务
- 使用afnetworking和网络服务接口及soap发送并接收http/https请求:
- spring-boot 添加http自动转向https
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四十)使用AOP统一处理Web请求日志(1)
- Spring boot 发送http请求组件RestTemplate使用实例
- 使用job自动抓取网页数据发送邮件,以springboot服务启动
- 处理HTTP响应(响应码、响应头、请求重定向、自动刷新/跳转)