SSL原理及应用(1)SSL协议体系结构

SSL(Secure Sockets Layer ,安全套接层),是为网络通信提供安全及数据完整性的一种安全协议。由Netscape研发,用以保障在Internet上数据传输的安全,利用数据加密(Encryption)技术,确保数据在网络上的传输过程中不会被截取及窃听。

当前几乎所有浏览器都支持SSL,但是支持的版本有所不同。从图8-1中可以看到,IE同时支持SSL 2.0和SSL 3.0两个版本。

图8-1            IE支持的SSL版本

事实上各位读者已经明白了SSL的工作原理,回顾我前面博客讲到的公钥加密的通信原理,而SSL使用的就是公钥加密系统。现在完全可以构想基于SSL的数据通信流程。前面说过,SSL是一种协议,本节重点在于协议本身和它是如何工作在各种协议之间来提供安全通信的。

SSL协议位于TCP/IP协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端的安全服务,它使客户/服务器应用之间的通信不被攻击窃听,并且始终对服务器进行认证,还可以选择对客户进行认证。SSL协议在应用层通信之前就已经完成加密算法、通信密钥的协商,以及服务器认证工作,在此之后,应用层协议所传送的数据都被加密。

SSL协议体系结构如图8-2所示。

图8-2            SSL协议体系结构

从体系结构图可以看出,SSL协议可分为两层:

q  SSL记录协议(SSL Record Protocol):建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

q  SSL握手协议(SSL Handshake Protocol):建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。SSL协议实际上是SSL握手协议、SSL修改密文协议、SSL警告协议和SSL记录协议组成的一个协议族。下面分别进行介绍。

SSL记录协议

SSL记录协议为SSL连接提供两种服务:机密性和报文完整性。

在SSL协议中,所有的传输数据都被封装在记录中。记录是由记录头和记录数据(长度不为0)组成的。所有的SSL通信都使用SSL记录层,记录协议封装上层的握手协议、报警协议、修改密文协议。SSL记录协议包括记录头和记录数据格式的规定。

SSL记录协议定义了要传输数据的格式,它位于一些可靠的传输协议之上(如TCP),用于各种更高层协议的封装。主要完成分组和组合、压缩和解压缩,以及消息认证和加密等。

SSL记录协议主要操作流程如图8-3所示。

图8-3            SSL记录协议的操作流程

图中的五个操作简单介绍如下:

1)每个上层应用数据被分成214字节或更小的数据块。记录中包含类型、版本号、长度和数据字段。

2)压缩是可选的,并且是无损压缩,压缩后内容长度的增加不能超过1024字节。

3)在压缩数据上计算消息认证MAC。

4)对压缩数据及MAC进行加密。

5)增加SSL记录。

时间: 2024-09-03 21:25:01

SSL原理及应用(1)SSL协议体系结构的相关文章

php检测服务器SSL是否开启以及开启SSL的方法

php检测服务器SSL是否开启以及开启SSL的方法分享. (1)检测服务器是否开启了SSL <?php phpinfo(); 检查页面的openssl栏目,如果该栏目的OpenSSL support的值为enabled就说明SSL处于开启状态了,否则是关闭状态. (2)开启SSL的方法 1. 打开php.ini  把:extension=php_openssl.dll把前面的符号去掉. 2. 重新启动 apache 或 iis ,重新检查 SSL 开启状态. 如果以上操作无效的话,则还需要进行下

Nginx服务器的SSL证书配置以及对SSL的反向代理配置_nginx

Nginx的SSL证书配置 1.使用openssl实现证书中心由于是使用openssl架设私有证书中心,因此要保证以下字段在证书中心的证书.服务端证书.客户端证书中都相同 Country Name State or Province Name Locality Name Organization Name Organizational Unit Name Country Name State or Province Name Locality Name Organization Name Org

MySQL怎么使用SSL连接配置 MySQL使用SSL连接配置的方法

查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: mysql> SHOW VARIABLES LIKE 'have_ssl'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | have_ssl | YES | +---------------+-------+ 1 row in set (0.02 sec) 当 have_ssl 为 YE

SSL原理及应用(3).NET开发中处理HTTPS

在ASP.NET.SQL Server.WCF等通信领域,微软都提供了基于SSL的安全保护机制.遗憾的是,.NET并没有对SSL协议本身提供像TCP.UDP这样的基础网络协议的编程性支持.如果想从协议的角度处理SSL通信或者想构建完整的SSL框架,那么.NET帮不上你,但是还有选择,许多第三方安全通信的项目提供了支持,比如OpenSSL.这不意味着我们在此领域将无所作为,第6章介绍了.NET中操作数字证书的两个类: q  System.Security.Cryptography.X509Cert

Agglomerated SSL 0.12.2发布 SSL/TLS协议界面

Agglomerated SSL 是一个为隐藏不理想的 http://www.aliyun.com/zixun/aggregation/9511.html">OpenSSL API 而进行编写的.它为程序员编写应用程序提供一个简单.理智的需要安全通信的SSL/TLS协议的界面.该程序的所有代码是采用ISC许可编写. Agglomerated SSL 0.12.2该版本支持加载文件中的证书时的libevent最新版本,建立基于Linux的版本,以配合支持BSD,其他次要代码清理和增强的函数调

SSL原理及应用(2)配置HTTPS

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以 安全为目标的HTTP通道,简单讲是HTTP的安全版.即在HTTP下加入SSL层,HTTPS 的安全基础是SSL.它是一个URI scheme(抽象标识符体系),句法类同 "http:体系".用于安全的HTTP数据传输. "https:URL"表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端 口及一个加密/身份验证层(在HTTP与T

AMH面板用SSL扩展给站点配置SSL域名证书教程

然对于普通的个人网站来说,到目前还没有说必须要使用SSL域名证书,但有些类似B2C之类的用户互动和账户安全类的站点还是必须要使用的,即便不是为了站点在搜索引擎中的体验需求,也需要对用户的信息负责.在之前的博文中,老左也有分享过几篇在其他常用环境中的SSL域名证书的配置. 老左之前简单的把常用的Apache.Nginx.LiteSpeed环境配置SSL分享过文章.这篇文章是基于AMH面板环境配置SSL的,在上周的时候有网友提出来需要解决这个问题,由于时间的问题今天才发布(大部分时候教程是非常麻烦的

Mina 在 Spring 中配置同时支持 SSL 加密连接和非 SSL 连接

iOS 的 socket ,那是在很久以前用过,当时编写确实费了一番周折,要忍受 SDK 的不完善. 之后,一直是 Web 服务器支撑着 http 与 https 实现 RestFul 或... 那么好吧,有需要,就行动,重新写一遍,也好过找那三块笔记本硬盘里成堆的工程代码, 目前 SSL 的证书转换学没搞定,需要将 Mina 中使用 keystore 转换成 iOS 可识别的格式,苹果的 APNS 确实使用的不是标准的东西,不能作为参考了, 所以,在研究出来之前,还是得确保链接正常使用,确保业

windows服务器中检测PHP SSL是否开启以及开启SSL的方法_php技巧

一.检测服务器是否开启了SSL 复制代码 代码如下: <?phpphpinfo();?> 检查页面的openssl栏目,如果该栏目的OpenSSL support的值为enabled就说明SSL处于开启状态了,否则是关闭状态. 二.开启SSL的方法 1. 打开php.ini  把:extension=php_openssl.dll把前面的符号去掉.2. 重新启动 apache 或 iis ,重新检查 SSL 开启状态.如果以上操作无效的话,则还需要进行下一步操作(这一步在很多情况下不是必须的,