TLS 协议

1、背景php

参与了一个Sofa-RPC开源项目,认领了TLS的任务,记录下此次宝贵的经历,并感谢章哥的信任以及在整个过程当中对个人帮助。html

负责的部分不难,主要是使用h2(HTTP 2加密)协议,完成RPC中,客户端对服务端的请求调用。java

 

2、过程jquery

刚接触时,彻底没接触过这方面。从零开始,查询SSL、TLS、数字证书、TLS handshake等资料,有了一些认识。git

 

1.SSL vs TLStomcat

Transport Layer Security(TLS),它主要是提供数据的隐私性(加密,不被破解)和完整性(不被篡改,不被冒充)。安全

下面是SSL与TLS协议版本一览,TLS的前身是SSL,如今虽然SSL已通过时不用了,可是它的名字仍然留用,使用TLS,其实就是使用SSL。(我当时糊涂了很久)学习

Protocol Published Status
SSL 1.0 Unpublished Unpublished
SSL 2.0 1995 Deprecated in 2011 (RFC 6176)
SSL 3.0 1996 Deprecated in 2015 (RFC 7568)
TLS 1.0 1999 Deprecation planned in 2020[11]
TLS 1.1 2006 Deprecation planned in 2020[11]
TLS 1.2 2008  
TLS 1.3 2018  

 

 

 

 

 

 

 

 

 

 

 

推荐一些连接,都是当时学习的脚印(前面部分,是阮一峰老师的文章,写的浅显易懂,看完能对传输安全协议,有个大致的认识):加密

http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html.net

http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

https://en.wikipedia.org/wiki/Transport_Layer_Security

 

2.OpenSSL vs JdkSSL

OpenSSL优点:

(1)加密速度要快

(2)加密支持技术更普遍

(3)同时支持APLN(协议协商)和NPN

(4)不受限于Java版本

 

为了使用OpenSSL,推荐看下面的网址,里面对第三方编译OpenSSL的binaries(OpenSSL的安装包)说明十分详细。

https://wiki.openssl.org/index.php/Binaries

(由于官网提供的是OpenSSL源码,须要本身下载并安装许多程序,才能编译成功,为了省去没必要要的时间,因此建议使用第三方的安装。)

 

说一下开启Netty中的OpenSSL时,遇到的坑。

https://netty.io/wiki/forked-tomcat-native.html

上面是官方给出的开启OpenSSL的文档,照着文档各类尝试,均告失败,最后向netty项目提出issue,得出的结果是,须要升级netty的一些jar包,换上了最新netty jar包,问题解决。

 

3.debug

启动参数 -Djavax.net.debug=all

 

4.怎么肯定使用SSL的版本

相关文章
相关标签/搜索