(四)启用HTTPS
2018-09-19 02:47:19来源:博客园 阅读 ()
安全规范中有一条是要求尽量使用https而弃用http(新Chrome将标记非HTTPS网站为不安全),其实启用https和之前的ipv6改造一样,并不是什么高难度或者工作流繁多的的改造,只需将中间件启用https支持即可,当然步骤也想当简单的分为三个步骤:关闭中间件、启用HTTPS、启动中间件。但在我们的spring cloud项目中,基本上都是使用内置的中间件(tomcat、netty等),下面记录下改造的思路:
方案1: 服务均启用https,步骤有:
- 所有的micro service均启用https
- 把seureka的注册地址改为https方式
- 把config service的注册地址改为https方式
- 把feign的调用方式改为支持https方式
- 每个micro service均需导入证书,并且访问的时候需要导入证书(不然会报unable to find valid certification path to requested target错误)
- 证书里需要把micro service的serviceId注册进去(不然会报Certificate doesn't match any of the subject alternative names错误)
方案比较稳妥,所有服务中均走了ssl,满足安全条件,就是乍一看改造量有点多啊......
方案2:micro service只会暴露gateway,其余服务均是不暴露的,因此我们可以只改造gateway服务,步骤有:
- gateway service启用https
- gateway service改造lb://micro_service_id的地址替换方式
该方案改造了最小,且由于spring cloud的服务隔离的关系,并无需担心其余服务的安全问题。
实现方案:
1. spring cloud gateway项目启用https(其实也就是spring boot项目启用https),只需要在application.yml里增加ssl配置即可。
server: port: 443 ssl: key-alias: ncdt enabled: true key-store-password: password key-store-type: JKS key-store: ncdt.keystore
2.spring cloud gateway项目增加filter
/** * @author zhangqiuyang * Created on 2018/8/9. */ @Order(10101) @Configuration public class HttpsFilter implements GlobalFilter { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { Object uriObj = exchange.getAttributes().get(GATEWAY_REQUEST_URL_ATTR); if (uriObj != null) { URI uri = (URI) uriObj; uri = this.upgradeConnection(uri); exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, uri); } return chain.filter(exchange); } private URI upgradeConnection(URI uri) { UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromUri(uri).scheme("http"); if (uri.getRawQuery() != null) { uriComponentsBuilder.replaceQuery(uri.getRawQuery().replace("+", "%20")); } return uriComponentsBuilder.build(true).toUri(); } }
改造就完成了,重启服务就可以看到效果。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:java对象的浅克隆和深克隆
下一篇:String系列
- Java跨平台原理(字节码文件、虚拟机) 以及Java安全性 2020-06-07
- 面试官:用了HTTPS安全了吗?用HTTPS会被抓包吗?我回答不上 2020-06-06
- 如何快速安全的插入千万条数据? 2020-06-03
- java面经收集 2020-05-12
- 面试官有毒吧?让实现线程安全的单例,又不让使用synchroniz 2020-05-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash