1 简介
不知不觉Https
相关的文章已经写了6篇了,本文将是这个专题的最后一篇,起码近期是最后一篇。前面6篇讲的全都是单向的Https
验证,本文将重点介绍一下双向验证。有兴趣的同学可以了解一下之前的文章:
(0)Https专题
(2)HTTPS之密钥知识与密钥工具Keytool和Keystore-Explorer
(3)Springboot以Tomcat为容器实现http重定向到https的两种方式
(4) Springboot以Jetty为容器实现http重定向到https
(5)nginx开启ssl并把http重定向到https的两种方式
(6)Springboot-WebFlux实现http重定向到https
双向验证是比较难的,能掌握双向验证,单向验证就没什么问题了。
2 单向验证与双向验证
2.1 概念和作用
所谓单向验证(One Way SSL),就是只有一方验证另一方是否合法,通常是客户端验证服务端。比如我们打开www.pkslow.com 这个网站,服务端不会验证客户端,只要你来我就欢迎。但客户端不一样,浏览器会验证这个网站是不是安全的,一般是通过CA颁发的SSL证书来验证。
而双向验证(Two Way SSL)则不同。不仅客户端需要验证服务端,服务端同样戒备心很重,也需要验证客户端是否是合法。
大家是否会有疑问,这么麻烦的双向验证有什么用?我们平常用单向验证不就已经足够了吗?单向验证虽然安全,但不够安全,使用双向验证可以只让特定的客户端访问,安全性会高一点。
另一方面,如果服务端没有做账户权限控制,但又想只限制特定的客户端访问,双向验证就非常有用,我只验证我相信的客户端,其它一概拒绝!这样即使我的服务暴露在网上,也不怕别人访问。既保证了安全,又省去了做权限控制的麻烦。
2.2 验证合法性
验证合法性通常是通过Trust Store。要求要把对方的ce