SpringBoot + Spring Data JPA金融项目(五)

2018/08/06

项目已上传github:https://github.com/tihomcode/tihom-finance


TYK和HTTPS的实现

何为TYK?

TYK是一个开源的、轻量级的、快速可伸缩的API网关,支持配额和速度限制,支持认证和数据分析,支持多用户多组织,提供全Restful API。通常情况下,我们只需要关心业务逻辑的实现,其他的都可以交给API网关,是用户与应用间的一道屏障。

TYK官方文档

因为这里可能要使用到docker或Kubernetes,我就不进行了,因为目前阶段先不学习这些东西,如果各位感兴趣可以自己动手试试,不好意思了

部署到HTTPS

  • HTTP
  • SSL/TLS 包含了非对称加密算法+对称加密算法+散列算法
  • HTTPS就是HTTP+SSL/TLS

HTTPS握手过程

  • 先发送支持的最高TLS协议的版本、客户端支持的加密套件列表(认证算法、密钥交换算法、对称加密算法、信息摘要算法)、产生随机数A、压缩算法
  • 服务器收到这些数据后进行选择,选择客户端支持的TLS协议版本、加密算法以及压缩算法,同时产生一个随机数B返回给客户端,把自己的证书链发送给客户端,证书链有根证书、中级证书、服务器申请的证书

  • 客户端收到服务器发回来的数据之后,会进行一些操作,先验证证书,如果验证通过就继续,未通过就会显示证书过期或者是不可用等信息,然后就不进行了;通过之后,会产生随机数C,现在有三个随机数ABC,这里选择一个好的算法计算得到协商密钥。
  • 再接着客户端就会使用公钥把这个随机数C加密及使用计算出来的协商密钥把之前所有信息的hash值加密后发送到服务器,这个公钥就是服务器发回来的证书链中包含了它自己的公钥,同时这个协商密钥采用的是对称加密算法,因为非对称加密计算量很大浪费资源,所以使用非对称加密来协商对称加密的密钥,服务器收到客户端发来的加密数据之后,就使用自己的私钥进行解密随机数C,现在服务器就有了三个随机数ABC,协商密钥并不是客户端发送过来的,而是服务器也要自己计算,因为服务器自身随机数也有,使用的算法也清楚,根据自己计算出来的协商密钥对这个加密信息进行解密,如果解密成功就证明双方的协商密钥是一致的。
  • 服务器使用自己计算出来的协商密钥加密一下前面所有信息的hash值,发送给客户端,再进行一次确认,客户端如果解密成功,就证明双方的协商密钥是一致的,就可以进行加密传输了,握手结束!(这只是其中的一部分)

HTTPS证书

  • 域名、公网IP
  • 购买证书(Let‘s Encrypt这是个免费的购买网站)
  • 服务器配置修改(Nginx、Apache、Tomcat)


(转载本站文章请注明作者和出处 TiHom

Post Directory