TLS 协议
一、背景
参与了一个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的版本
最新文章
- Android执行程序或脚本的方法
- CSS基础知识真难啊
- css 妙味 总结
- Oracle基础 存储过程和游标
- hdoj 4006 The kth great number【优先队列】
- js字符串和数组方法总结
- js url校验
- 女儿开始bababababa的发声了
- mysql小题趣事
- TPO 03 - Architecture
- 百度地图离线API及地图数据下载工具
- 汇编:模拟C语言实现break与continue
- 可以完成99%的静态页面的HTML标签
- 【linux】进程存储管理
- Retimer、Redriver(Level Shifter)
- MyBatis从入门到精通:insert用法
- Java基础(十五)异常(Exception)
- .Net Core使用分布式缓存Redis:基础
- ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射
- J2EE的13种规范
热门文章
- [原题复现+审计][0CTF 2016] WEB piapiapia(反序列化、数组绕过)[改变序列化长度,导致反序列化漏洞]
- 计算思维(美国CMU周以真教授)
- ABBYY FineReader如何将图片转换为Excel
- JS&;Swift相互交互
- 求1-1e11内的素数个数(HDU 5901 Count primes )
- spring与分布式事务
- XOR性质
- LeetCode 033 Search in Rotated Sorted Array
- FPGA PS2协议
- 扩展Linux网络栈