一、背景

参与了一个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的版本

TLS 协议的更多相关文章

  1. 协议森林17 我和你的悄悄话 (SSL/TLS协议)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...

  2. 聊聊HTTPS和SSL/TLS协议

    要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接 ...

  3. 浅谈HTTPS和SSL/TLS协议的背景和基础

    相关背景知识要说清楚HTTPS协议的实现原理,至少要需要如下几个背景知识.大致了解几个基础术语(HTTPS.SSL.TLS)的含义大致了解HTTP和TCP的关系(尤其是"短连接"和 ...

  4. SSL/TLS协议运行机制的概述

    互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 ...

  5. 浅谈 HTTPS 和 SSL/TLS 协议的背景与基础

    来自:编程随想   >> 相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 ...

  6. SSL/TLS协议运行机制

      转载自http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行 ...

  7. 【转】SSL/TLS协议运行机制的概述

    互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 ...

  8. 好程序员带你了解一下HTTPS和SSL/TLS协议的背景与基础

    >> 相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 TCP 的关系(尤其 ...

  9. SSL/TLS协议工作流程

    我看了CloudFlare的说明(这里和这里),突然意识到这是绝好的例子,可以用来说明SSL/TLS协议的运行机制.它配有插图,很容易看懂. 下面,我就用这些图片作为例子,配合我半年前写的<SS ...

  10. 图解SSL/TLS协议(HTTPS的安全层)

    http://blog.csdn.net/wallezhe/article/details/50977337 图解SSL/TLS协议     作者: 阮一峰 日期: 2014年9月20日 本周,Clo ...

随机推荐

  1. HW弹药库之红队作战手册

    红方人员实战手册 声明 Author : By klion Date : 2020.2.15 寄语 : 愿 2020 后面的每一天都能一切安好 分享初衷 一来, 旨在为 "攻击" ...

  2. 面试BAT问的最多的27道MyBatis 面试题(含答案和思维导图总结)

    前言 关于MyBatis总结了一个思维导图希望对大家有帮助 什么是 Mybatis? Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身, ...

  3. 微课制作软件Camtasia中如何添加并编辑字幕?

    除了能录制视频以外,Camtasia还能直接把录制下来的视频进行剪辑,并添加视频字幕等等一些后期效果.今天我们就来看一看字幕的添加方法. 导入视频 微课制作软件Camtasia录制的视频,默认在软件& ...

  4. guitar pro系列教程(七):Guitar Pro丰富的演奏技巧

    这一章,我们来讲guitar pro的演奏技巧 上一章节我们了解了Guitar Pro的音轨菜单,对于玩吉他的小伙伴肯定比较想要了解其的演奏方面的技巧,毕竟我们使用这款软件就是希望自己在吉他方面有更多 ...

  5. P2943 [USACO09MAR]Cleaning Up G

    一句话题意:将一个数列分成若干段,每段的不和谐度为该段内不同数字数量的平方,求不和谐度之和的最小值. 令 \(f_i\) 表示前 \(i\) 个数的最小答案,很容易就能写出暴力转移方程:\(f_i=\ ...

  6. 蓝桥杯——压缩变换(2016JavaB组第9题)

    压缩变换(16JavaB9) 小明最近在研究压缩算法. 他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比. 然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这 ...

  7. linux下安装python3.7.1

    一.安装依赖环境 输入命令:yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readlin ...

  8. python之汉诺塔

    # -*- coding: utf-8 -*- def move(n, a, b, c): if n==1: print(a,'==>',c)#只有一块的时候直接从A到C即可 else: mov ...

  9. markdown详细

    在写博客时,想设置字体 颜色参照[(https://blog.csdn.net/wo919191/article/details/84249531)] 图片参照 背景色: gray

  10. windows中flask的环境搭建

    之前在ctf中遇到了python模板注入的题,于是就打算学习一下flask框架,它是基于Python的Web轻量级应用框架,与其他框架相比,Flask可以自主选择应用组件,可扩展性强. 安装也简单 第 ...