Spring Boot 配置Https协议

3 篇文章 0 订阅
2 篇文章 0 订阅
[size=medium]是用SpringBoot开发项目要求用HTTPS协议进行访问,配置很简单,需要简单的几步就可以完成。

[b][color=red]1.自己生成keystore->将csr文件申请证书颁发机构->证据机构返回crt证书->配置到spring boot框架中[/color][/b]
[color=blue]1.需要一个证书,可以自己生成或者购买。下面是我们通过keytool自己生成。
生成命令: keytool -genkey -alias tomcat -keyalg RSA -keystore name.keystore
然后按照提示填信息,可以随便写,但要记住(特别是别名,密码) [/size]
[img]http://static.oschina.net/uploads/space/2016/1021/112401_Arwb_2408834.png[/img]
[size=medium]会在当前目录生成一个name.keystore的证书.[/color]
[color=red]其中tomcat是别名 可以随便起,name.keystore也是随便起,其中keystore是后缀不能改[/color]
[color=blue]2. 导入证书(买的cer证书)
keytool -import -trustcacerts -alias tomcat -file intermediate.cer -keystore name.keystore[/color]

[color=red]此时会报 “回复中的公共密钥与密钥库不匹配”错误
原因是 导入时的别名 tomcat 与 第1步的生成证书时的别名tomcat重复
别名改一下别重复就行。
比如将tomcat改为tomcat1 如下:
keytool -import -trustcacerts -alias tomcat1 -file intermediate.cer -keystore name.keystore[/color]

3.将name.keystore文件拷贝到项目的classpath路径中

4.在application.properties中配置HTTPS
[color=red]server.port=8843
server.ssl.key-store=intel.keystore
server.ssl.key-alias=tomcat
server.ssl.key-password=123456
server.ssl.key-store-type=JKS[/color]

到这儿就改为支持https了
5.如果想再兼容http,在webconfig文件中 加入如下代码:[/size]

@Configuration
public class WebConfig {
@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(8843);
return connector;
}
}

[size=medium]
这就是默认当http请求时,自动重定向到https请求中去!

这就完成了SpringBoot的HTTPS协议配置,重新启动后访问https://localhost:8443/proName 即可[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值