很多人熟悉HTTPS,却不知道SSL。HTTPS正是通过SSL和HTTP的组合来提供加密通讯以及对网络服务器身份的鉴别。SSL全称为 Secure Socket Layer,是一种在两台机器之间提供安全通道的协议。它具有保护传输数据以及识别通信机器的功能。客户与服务器之间的数据是经过加密的。SSL 假定其下层的数据包发送机制是可靠的。写入网络的数据将依顺序发送给另一端的程序,不会出现丢包或重传情况。依赖于可靠传输协议发送数据的特点使得SSL 只能在TCP 上工作,不能在UDP 或直接在IP 上运行。SSL 开始就是为Web 设计的,所以SSL可以很好地服务HTTP。SSL在协议栈中的位置如图1所示。
图1 SSL在协议栈中的位置
SSL 的连接分为两个阶段,即握手和数据传输阶段。握手阶段对服务器进行认证并确立用于保护数据传输的加密密钥。必须在传输任何应用数据之前完成握手。一旦握手完成,数据就被分成一系列经过保护的记录进行传输。
SSL 握手主要完成客户端与服务器约定加密算法、确立使用的加密密钥、还可以选择对客户端进行认证。不需要客户端认证的握手过程如图2所示。
图2 SSL握手过程
① SSL 客户端通过Client Hello 消息将它支持的SSL 版本、SessionID、加密套件、压缩算法等信息发送给SSL 服务器。
② SSL 服务器确定本次通信采用的SSL 版本、SessionID和加密套件,并通过Server Hello消息通知给SSL 客户端。
③ SSL 服务器将携带公钥信息的数字证书通过Certificate 消息发送给SSL客户端。
④ SSL 服务器发送Server Hello Done 消息,通知SSL 客户端版本和加密套件协商结束,开始进行密钥交换。
⑤ SSL 客户端验证SSL 服务器的证书合法后,利用证书中的公钥加密SSL 客户端随机生成的Pre_master secret,并通过Client Key Exchange 消息发送给SSL 服务器。
⑥ SSL 客户端发送Change Cipher Spec 消息,通知SSL 服务器后续报文将采用协商好的密钥和加密套件进行加密和MAC 计算。
⑦ SSL 客户端计算已交互的握手消息的MAC 值,并通过Finished 消息发送给SSL 服务器。
⑧ 同样地,SSL 服务器发送Change Cipher Spec 消息,通知SSL 客户端后续报文将采用协商好的密钥和加密套件进行加密和MAC 计算。
⑨ SSL 服务器计算已交互的握手消息的MAC,并通过Finished 消息发送给SSL 客户端。
整个SSL 握手的CPU和网络的开销都非常巨大,为了减少这种性能开销,SSL 提供了一种session resumption机制。如果客户端与服务器已经通信过一次,则它们就可以跳过整个握手阶段而直接进行数据传输。握手中开销最耗时的部分就是确立 Pre_master Secret,它要求使用公用密钥加密。而经过resumption的握手允许新的连接使用上一次握手中确立的Pre_master_secret。这就避免了公用密钥加密所需的计算开销。Session resumption过程如图3所示。
图3 SSL Session Resumption
当客户端与服务器第一次进行交互时,它们创建一个新的连接和一个新的session。如果服务器准备session resumption,就会在ServerHello 消息中给客户端一个SessionID,并将Master secret 缓存起来供以后引用。当这个客户端初始化一条与服务器的新连接时,它就会在其ClientHello 消息中使用SessionID。而服务器通过在其ServerHello 中使用相同的SessionID来同意session resumption。这样,服务器和客户端就会跳过余下的握手部分,而使用保存的Master secret来产生所有的加密密钥。
分享到:
相关推荐
包含了http的集群环境,https的集群环境,同时考虑到集群环境的session问题,使用了tomcat+memcached实现tomcat集群环境共享。整个环境解压既可以使用,证书如果需要修改,直接将证书放在nginx的config目录,然后...
1. **减少握手次数**:通过Session Resumption或Session Caching,可以避免每次连接都进行完整的SSL握手,提高性能。 2. **选择合适的加密算法**:合理选择加密套件,平衡安全性与性能。 **七、HTTPS服务器配置** ...
通过缓存SSL对象、预共享密钥(PSK)、session resumption等技术,可以提高性能,降低资源消耗。 9. **安全性更新**:由于新的安全威胁不断出现,保持SSL库的更新至关重要。及时修复已知漏洞,避免使用易受攻击的...
- 性能优化:过多的SSL握手会增加延迟,可考虑使用Session Resumption或Session Caching来减少握手次数。 - 客户端身份验证:如果需要,服务器可以要求客户端提供证书进行双向认证。 总之,理解和使用Java中的SSL及...
在设计应用程序时,可以考虑使用TLS session resumption、OCSP stapling等技术来优化性能。 6. **安全更新**:OpenSSL库历史上曾出现过著名的“心脏出血”漏洞,因此定期更新OpenSSL和Indy SSL库以修复安全漏洞至关...
SSL/TLS的加密和解密过程可能会对性能产生影响,因此可能需要优化,如使用硬件加速、调整缓冲区大小、启用 session resumption 等,以提高通信效率。 9. **SSL/TLS版本与加密套件选择**: 需要关注SSL/TLS协议的...
10. **性能优化**:在保证安全性的前提下,如何通过优化配置提高SSL/TLS连接的性能,例如使用session resumption和OCSP stapling等技术。 综上所述,这个"tls.pdf"文档很可能会深入探讨这些话题,对于理解SSL和TLS...
Session Resumption 34 Key Exchange 35 RSA Key Exchange 38 Diffie-Hellman Key Exchange 38 Elliptic Curve Diffie-Hellman Key Exchange 40 iii Authentication 41 Encryption 42 Stream Encryption 42 Block ...
可以通过优化SSL配置,如减少握手次数、启用 session resumption、选择高效的密码套件等方式提升性能。 7. 最新进展: Java的SSL/TLS支持随着版本更新不断加强,例如Java 8引入了TLSv1.3支持,提高了安全性并减少...
例如,启用HTTP/2协议,使用session resumption来减少握手开销,以及配置适当的缓存策略来存储会话信息。 在这个学习项目中,你可能会涉及到证书的创建和管理、服务器的配置、Java代码的编写,以及如何在Android...
5. 启用TLS session resumption和session caching,避免重复握手。 **总结** HTTPS协议通过SSL/TLS实现数据加密、身份验证和完整性校验,为互联网通信提供安全保障。理解并掌握HTTPS的工作原理,对于网络安全和...
在本篇文章中,我们将继续探讨OpenSSL编程的一些高级特性,包括会话恢复(session resumption)和客户端认证(client authentication)等。OpenSSL是一款基于SSL/TLS协议的强大加密工具库,它为开发人员提供了广泛的功能...
4. **会话终止**:当通信结束后,会话可能会被终止,或者通过会话重用技术(如Session ID或Session Resumption)节省资源。 在Java中,处理HTTPS请求通常涉及以下关键类和方法: 1. **`javax.net.ssl.SSLContext`*...
3. 性能:SSL/TLS握手会增加延迟,因此在高并发场景下,可使用Session Resumption或Session Tickets来优化。 总结,HTTPS客户端和服务端的实现涉及到网络编程、加密算法、SSL/TLS协议和证书管理等多个方面。理解...
SSL是早期的加密协议,其session信息必须由服务端进行缓存和管理。这在客户端与服务器集群进行交互时,会因为session状态不一致导致效率下降。随着TLS协议的发展,提出了无状态的session重用机制。这种机制允许...
7. **Session Resumption**:启用session resumption以提高性能,但要确保不牺牲安全性,例如通过使用安全的session ID存储机制。 8. **Ciphersuite排序**:将最安全的密码套件放在列表前面,这样客户端将优先尝试...
8. **会话复用**:为了提高性能,SSL/TLS支持会话复用(Session Resumption)。一旦一个安全连接建立,客户端和服务器可以保存会话信息,以便下次连接时快速恢复,而无需重新进行完整的握手过程。 9. **Wireshark抓...
为了优化性能,可以采用HTTP/2或HTTP/3协议(支持多路复用),使用TLS session resumption和session tickets减少握手次数,以及利用预共享密钥(PSK)等方式加速连接建立。 8. **代理和反向代理**:在某些网络环境...
6. **TLS Session Resumption**:利用TLS会话恢复机制,降低握手开销,提高连接速度。 OpenSSL 3.0.1的更新还包括对异步加密的支持,这允许其他操作在加密操作进行时并行处理,从而提高效率。同时,新的API设计更加...
除了基础的HTTPS连接,Java还提供了更高级的安全特性,如Session Resumption(会话恢复)和Session Ticket,以优化性能并减少握手开销。另外,Java也支持HTTP/2协议,这是一种在HTTPS基础上构建的新一代HTTP协议,...