一、背景

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

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

二、过程

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

1.SSL vs TLS

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

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的版本

最新文章

  1. Android执行程序或脚本的方法
  2. CSS基础知识真难啊
  3. css 妙味 总结
  4. Oracle基础 存储过程和游标
  5. hdoj 4006 The kth great number【优先队列】
  6. js字符串和数组方法总结
  7. js url校验
  8. 女儿开始bababababa的发声了
  9. mysql小题趣事
  10. TPO 03 - Architecture
  11. 百度地图离线API及地图数据下载工具
  12. 汇编:模拟C语言实现break与continue
  13. 可以完成99%的静态页面的HTML标签
  14. 【linux】进程存储管理
  15. Retimer、Redriver(Level Shifter)
  16. MyBatis从入门到精通:insert用法
  17. Java基础(十五)异常(Exception)
  18. .Net Core使用分布式缓存Redis:基础
  19. ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射
  20. J2EE的13种规范

热门文章

  1. [原题复现+审计][0CTF 2016] WEB piapiapia(反序列化、数组绕过)[改变序列化长度,导致反序列化漏洞]
  2. 计算思维(美国CMU周以真教授)
  3. ABBYY FineReader如何将图片转换为Excel
  4. JS&Swift相互交互
  5. 求1-1e11内的素数个数(HDU 5901 Count primes )
  6. spring与分布式事务
  7. XOR性质
  8. LeetCode 033 Search in Rotated Sorted Array
  9. FPGA PS2协议
  10. 扩展Linux网络栈