SSL/TLS(Secure Sockets Layer / Transport Layer Security)

# 协议概述

缩写 名称 默认端口 安全策略 描述
HTTP Hyper Text Transfer Protocol(超文本传输协议) TCP80 HTTP 协议是明文的,传输内容会被嗅探和篡改。 客户端浏览器或其他程序与Web服务器之间的应用层通信协议
SSL/TLS Secure Sockets Layer(安全套接层)
Transport Layer Security(传输层安全)
TCP443
  1)认证用户和服务器,确保数据发送到正确的客户机和服务器;

  2)加密数据以防止数据中途被窃取;

  3)维护数据的完整性,确保数据在传输过程中不被改变。

SSL(Secure Socket Layer)是netscape公司设计的主要用于web的安全传输协议,在WEB上广泛应用。

IETF(www.ietf.org)将SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security)。

从技术上讲,TLS1.0与SSL3.0的差别非常微小,例如SSL3.3对应TLS1.2,通常并列称呼。

SSL/TLS 可以强化一些常用应用层协议(比如:FTP、SMTP、POP、Telnet)的安全性。

SSL与TLS介于应用层和TCP层之间,在传输层对网络连接进行加密。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头,从而为网络通信及数据完整性提供安全支持。

HTTPS HTTP over SSL TCP443 实际上是在原有的 HTTP 数据外面加了一层 SSL 的封装。HTTP 协议原有的 GET、POST 之类的机制,基本上原封不动。 可以简单理解为“HTTP 协议”和“SSL/TLS 协议”的组合

# 对称加密与非对称加密

加密---明文变成密文;解密---密文变为明文。在这两个过程中,都需要密钥。

对称密钥加密(共享密钥)

指的是双方共同拥有使用完全相同的单个key, 这种Key既用于加密,也用于解密。

对称加密算法的原理很容易理解,通信一方用KEY加密明文,另一方收到之后用同样的KEY来解密就可以得到明文。

对称密钥加密是加密大量数据的一种行之有效的方法。

最常见的是DES. DES3, RC4等。

不对称加密(公钥加密)

指双方用不同的KEY加密和解密明文,通信双方都要有自己的公共密钥和私有密钥。公钥和私钥这两个密钥在数学上是相关的(素数积求因子的原理)。

公钥(公共密钥)----- 用来加密和验证签名,是给大家用的,在通信双方之间公开传递,在公用储备库中发布,也可通过电子邮件发布,或者通过网站提供下载等。

私钥(私有密钥)----- 保密的,仅为自己所知,用来进行解密和签名;

公钥和私钥都可以用来加密数据,用对应的另一个解开加密数据。也就是说用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。

公钥加密数据,然后私钥解密的情况被称为加密解密,

私钥加密数据,公钥解密一般被称为签名和验证签名.

不对称加密主要局限在于速度相对较低。实际上,通常仅在关键时刻才使用公钥算法,如在实体之间交换对称密钥时,或者在签署一封邮件的散列时。

常用的不对称加密一般有RSA、 DSA、 DH等。一般使用RSA。

公共密钥交换(key exchange)

通信双方彼此交换公钥。

公共密钥交换之后双方就分别用对方的公共密钥加密发送的数据,用自己的私有密钥解密接收的数据。

因为公共密钥和私有密钥的特点是,经过其中任何一把加密过的明文,只能用另外一把才能够解开,这样最大程度保证了安全性.

验证机制(签名和验证签名)

当A传送数据给B时,会以自己的私钥做签名,由于私钥仅为自己所有,这样就产生了别人无法生成的文件,也就形成了数字签名。

当B接收来自A的数据,用A的公钥验证签名,便可确认数据是由 A 发出来的了。

密钥协商的形象化比喻
假设A与B通信,A是SSL客户端,B是SSL服务器端,加密后的消息放在方括号[]里,以突出明文消息的区别。双方的处理动作的说明用圆括号()括起。

A:我想和你安全的通话,我这里的对称加密算法有DES,RC5,密钥交换算法有RSA和DH,摘要算法有MD5和SHA。

B:我们用DES-RSA-SHA这对组合好了。这是我的证书,里面有我的名字和公钥,你拿去验证一下我的身份

(把证书发给A)。

目前没有别的可说的了。

A:(查看证书上B的名字是否无误,并通过手头早已有的CA的证书验证了B的证书的真实性,如果其中一项有误,发出警告并断开连接,这一步保证了B的公钥的真实性)

(产生一份秘密消息,这份秘密消息处理后将用作加密密钥,加密初始化向量(IV)和hmac的密钥。将这份秘密消息-协议中称为per_master_secret-用B的公钥加密,封装成称作ClientKeyExchange的消息。由于用了B的公钥,保证了第三方无法窃听)

我生成了一份秘密消息,并用你的公钥加密了,给你(把ClientKeyExchange发给B)注意,下面我就要用加密的办法给你发消息了!

(将秘密消息进行处理,生成加密密钥,加密初始化向量和hmac的密钥)

[我说完了]

B:(用自己的私钥将ClientKeyExchange中的秘密消息解密出来,然后将秘密消息进行处理,生成加密密钥,加密初始化向量和hmac的密钥,这时双方已经安全的协商出一套加密办法了)

注意,我也要开始用加密的办法给你发消息了!

[我说完了]

A: [我的秘密是...]

B: [其它人不会听到的...]

# 参考信息

SSL/TLS协议运行机制的概述
http://www.ruanyifeng.com/blog/2014/02/ssl_tls.htmlSSL/TLS原理详解
http://segmentfault.com/a/1190000002554673

数字证书及CA的扫盲介绍

http://kb.cnblogs.com/page/194742/

OpenSSL 与 SSL 数字证书概念贴
http://segmentfault.com/a/1190000002568019

Linux的加密认证功能以及openssl详解
http://lanlian.blog.51cto.com/6790106/1281720

# 数据包分析

WireShark:https://wiki.wireshark.org/SSL

SSLdump:http://ssldump.sourceforge.net/

使用wireshark观察SSL/TLS握手过程--双向认证/单向认证 

http://blog.csdn.net/fw0124/article/details/40983787

密码套件

cipherSuite         TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

“TLS” 自然是指TLS协议。

“ECDHE” 是说使用带有短暂性密钥的椭圆曲线Diffie-Hellman密钥交换(也就是说要为每个会话创建新密钥并且事后也不会记下来)。

“RSA”表明用RSA 非对称加密保护TLS握手的安全。

“AES_128_GCM” 是说在密码块链接模式中用带有256位密钥的AES 非对称加密保护真正的数据交换。 “GCM”(伽罗瓦/计数器模式)。

“SHA384” 表明用 SHA384位 安全哈希算法

#SSL Tools

https://www.trustasia.com/tools/

http://web.chacuo.net/netsslcsr

时间: 2024-08-27 12:31:06

SSL/TLS(Secure Sockets Layer / Transport Layer Security)的相关文章

Could not establish trust relationship for the SSL/TLS secure channel 问题解决方法

最近在写一个跟第三方对接的数据同步服务,在本地都没有问题,今天放到生产环境测试报错: System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. 对方用的是https,看错误是证书问题,查了一些资料,貌似说这个问题的比较少,所以在此总结一下,以防以后用到. public string Get

https网站访问第三方https网站时候报错: The request was aborted:Could not create SSL/TLS secure channel.

https网站访问第三方https网站时候报错: The request was aborted:Could not create SSL/TLS secure channel. 解决办法: if(Url.StartsWith("https",StringComparison.OrdinalIgnoreCase))//https请求 { ServicePointManager.Expect100Continue = true; //如果是4.5以上版本可以直接使用 //ServiceP

微信请求数据错误The request was aborted: Could not create SSL/TLS secure channel.

今天在后台向微信服务器请求JSON数据时,返回了错误:The request was aborted: Could not create SSL/TLS secure channel. 查了一下,原来去年SSL协议曝出高危漏洞后,微信公众平台关闭了SSLv2.SSLv3版本支持,请求数据时应该使用TLS或更高版本. //在请求之前修改安全协议为TLS ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; 至于SSL和TL

https请求时出错:Could not establish trust relationship for the SSL/TLS secure channel

当我在用NET命名空间下获取URL的时候,提示如下错误: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. 使用传输安全模式,证书建立SSL,宿主端口证书配置完毕,但是客户调用服务出错. Could not establish trust relationship for the SSL/TLS secure channel wi

[HTTPS] - 请求API失败(Could not create SSL/TLS secure channel)之解决

背景 在单元测试中请求 HTTPS API 失败. 异常 Result StackTrace:  at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request) at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request) at System.Web.Services.Pr

偶尔遇到的“The request was aborted:Could not create SSL/TLS secure channel.”怎么解决?

if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))///https请求 {     ServicePointManager.Expect100Continue = true;     ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; //SSL3协议替换成TLS协议     ServicePointManager.ServerCe

微信退款时候报”请求被中止: 未能创建 SSL/TLS 安全通道“或”The request was aborted: Could not create SSL/TLS secure channel“的错误

如题,英文中文表述的是一个意思 退款测试在我本机测试一切都是正常的,但是发布到了服务器就报这样的一个错啦 但是无论百度或者google或者bing,你能够搜索到的结果都很类似,综合起来就是加这样一些代码,如下 ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | Secu

Secure Sockets Layer(安全套接层)

SSL SSL(Secure Sockets Layer安全套接层)及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议.TLS与SSL在传输层对网络连接进行加密. Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听.一般通用之规格为40 bit之安全标准,美国则已推出128

SSL&TLS传输层加密协议实现图解

一.SSL&TLS 1.SSL:Secure Sockets Layer ,加密套接字协议层 1)SSL是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密 Secure Socket Layer为Netscape网景公司1994年所研发,用以保障在Internet上数据传输之安全,利用数据加密技术,可确保数据在网络上之传输过程中不会被截取及窃听. 2)SSL协议可分为两层:记录协议.握手协议 SSL Record Protocol:建立在可靠的传输协议如TCP之上为高层协