第10章 网络安全(3)_安全套接字层SSL
4. 安全套接字层
4.1 安全套接字层(SSL)和传输层安全(TLS)
(1)SSL/TLS提供的安全服务
①SSL服务器鉴别,允许用户证实服务器的身份。支持SSL的客户端通过验证来自服务器的证书,来鉴别服务器的真实身份,并获取服务器的公钥。
②SSL客户鉴别,允许服务器证实客户身份。这个信息对服务器很重要的。例如,当银行把有关财务的保密信息发送给客户时,就必须检验接收者的身份。
③加密的SSL会话,客户和服务器交互的所有数据都在发送方加密,在接收方解密。第三方无法窃听。同时SSL具有校验机制,一旦被篡改,通信双方会立刻发现。
(2)SSL/TLS协议
①IETF将Netscape公司的SSL(安全套接字,Secure Socket Layer)作了标准化,并将其称为TLS(传输层安全, Transport Layer Security)。从技术上讲,TLS1.0与SSL3.0的差异非常微小。
②浏览器默认支持SSL/TLS:IE→“Internet选项”→“高级”中可以看到默认己经选中了“使用SSL2.0”和“使用SSL3.0”等项。
③安全套接字层的常见协议与端口
协议 |
端口 |
https |
443 |
imaps |
993 |
pop3s |
995 |
smtps |
465 |
4.2 安全套接字层的工作过程(以使用https协议为例)
(1)浏览器A将自己支持的一套加密算法发送给服务器B。
(2)服务器B从中选出一组加密算法和哈希算法,并将自己的身份信息以证书的形式发回给客户端浏览器。证书里包含了网站域名、加密公钥以及证书颁发机构等信息。
(3)客户端验证证书的合法性(是否信任证书颁发机构,证书中包含的网站域名地址是否与正在访问的地址一致,证书是否过期等)。如果证书受信任,浏览器栏里会显示一个小锁图标,否则会给出证书不受信任的提示。如果证书受信任或用户接受了不受信任的证书(这说明A可以不必事先信任该证书颁发机构!),浏览器会产生秘密数,客户端使用双方协商的算法将秘密数转换成会话密钥。同时使用B提供的公钥加密秘密数,然后发送给服务器B
(4)服务器B用私钥解密秘密数,根据双方协商的算法产生会话密钥,这和浏览器A产生的会话密钥相同。
(5)安全数据传输。双方用会话密加密和解密它们之间传送的数据并验证其完整性。
4.3 证书颁发机构层次
(1)证书的层次结构
①CA认证中心是一个负责发放和管理数字证书的权威机构。认证中心通常采用多层次的分级结构。上级认证中心负责签发(或签名)和管理下级认证中心的证书,最下一级的认证中心直接面向最终用户发放证书。
②顶层CA称为根CA,根CA的子CA称为从属CA。从属CA也可以给它的下级发证,即给下级CA数字证书签名。
③互联网中的用户只需信任根证书颁发机构,就能信任其所有从属CA,然后验证所有从属CA颁发的用户证书或服务器证书。
(2)使用根CA的公钥验证完整证书的过程
①客户端首先使用根CA公钥验证子CA的证书是否是根CA颁发的。(注意,验证子CA之前要求客户端要先信任根CA。可以通过IE→“Internet选项”→“内容”→“证书”→“受信任的根证书颁发机构”中查看到!微软在安装操作系统时就己经将那些知名的证书颁发机构添加到这里!)
②验证通过,再使用子CA的公钥验证Web证书是否是子CA颁发的。所以客户端只要信任了根证书颁发机构,就能验证其所有从属CA,以及由从CA颁发的用户证书或服务器证书。
4.4 实战:配置网站使用https通信
(1)实验环境:三个虚拟机(Win2003Web服务器(192.168.80.20)、Win2003证书颁发机构(192.168.80.100)和一个WinXP作为浏览器。)
(2)申请Web服务器证书
①为Web站点创建证书申请文件。IIS→“默认网站”→“属性”→“目录安全性”中点击“服务器证书”。
②在“新建证书”中,输入相关信息。但要注意的是当出现“站点公用名称”对话框时,输入的网站域名要与用户访问该网站的域名相同,否则用户在访问该网站时会出现安全警告。最后,将证书申请文件保存在桌面。
③登录Win2003CA提供的页面(http://192.168.80.100/certsrv)去申请Web服务器证书:“申请一个证书”→“高级证书申请”→“使用base64编码的CMC或PKCS#10文件提交一个证书。申请,或使用base64编码的PKCS#7文件续订证书”→在“保存的申请”框中将之前保存在桌面的申请文件导入进来→“提交”。注意,要登录Win2003CA服务器审核刚才Web服务器的证书申请,然后“颁发”。
④然后回到Win2003Web服务器刚刚申请证书的首页,查看“挂起的证书申请状态”并下载证书保存到桌面。
(2)配置Web站点使用https通信
①将证书与Web站点绑定。IIS→“默认站点”→“属性”→“目录安全性”→“服务器证书”→“处理挂起的请求并安装证书”→浏览到刚保存的证书→SSL端口号保留默认值(443)。
②查看证书:可以看出MyWeb服务器证书己颁发下来,但前面有个红色的“×”。说明目前5ieduCA这个证书颁发机构仍不是我们信任的机构。可以在“5ieduCA”→“查看证书”→“安装证书”→在“证书存储”→选择“本地计算机”,完成证书导入。
③强制使用SSL安全协议:“目录安全性”→“编辑”→“安全通信”→勾选“要求安全通道(SSL)”,这样就只允许使用https协议访问了。否则即可以通过https,也可以通过http协议和IP地址直接访问。
③在Win2003Web服务器上配置DNS,使得www.5iedu.net指向Web服务器。同时将WinXP虚拟机的DNS设置为192.168.80.20,然后在WinXP上打开IE使用https协议浏览https://www.5iedu.net站点。如果直接使用IP或http协议访问时则无法访问。(注意观察浏览器右下访有一个小锁的图标,可以双击查看证书及有效期。如果出现根证书机构未被信任,说明客户端未信任根证书颁发机构,客户要自己确认该站点的合法性!)
第10章 网络安全(3)_安全套接字层SSL的更多相关文章
- 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接
由于项目中必须得用JDK6来作为Java环境,于是连接SQLServer时出现了com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安 ...
- JDBC连接数据库遇到的“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
要从旧算法列表中删除3DES: 在JDK 8及更早版本中,编辑该 /lib/security/java.security文件并3DES_EDE_CBC从jdk.tls.legacyAlgorithms ...
- 第10章 网络安全(4)_网络层安全IPSec
5. 网络层安全IPSec 5.1 IPSec协议 (1)前面使用Outlook进行数字签名和数字加密是应用层实现的安全.安全套接字实现的安全是在应用层和传输层之间插入了一层来实现数据通信安全.而IP ...
- 第10章 网络安全(5)_访问控制列表ACL
6. 访问控制列表ACL 6.1 标准访问控制列表 (1)标准ACL ①标准ACL是基于IP数据包的源IP地址作为转发或是拒绝的条件.即,所有的条件都是基于源IP地址的. ②基本不允许或拒绝整个协议组 ...
- 《mysql必知必会》学习_第10章_20180731_欢
第10章,计算字段. P64 select concat (vend_name,'(',vend_country,')') from vendors order by vend_name; # 拼接, ...
- Linux就这个范儿 第10章 生死与共的兄弟
Linux就这个范儿 第10章 生死与共的兄弟 就说Linux系统的开机.必须经过加载BIOS.读取MBR.Boot Loader.加载内核.启动init进程并确定运行等级.执行初始化脚本.启动内核模 ...
- JavaScript高级程序设计(第三版)学习笔记8、9、10章
第8章,BOM BOM的核心对象是window,具有双重角色,既是js访问浏览器的一个接口,又是ECMAScript规定的Global对象.因此,在全局作用域中声明的函数.变量都会变成window对象 ...
- 【安富莱】【RL-TCPnet网络教程】第10章 RL-TCPnet网络协议栈移植(FreeRTOS)
第10章 RL-TCPnet网络协议栈移植(FreeRTOS) 本章教程为大家讲解RL-TCPnet网络协议栈的FreeRTOS操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移植就 ...
- <<Python基础教程>>学习笔记 | 第10章 | 充电时刻
第10章 | 充电时刻 本章主要介绍模块及其工作机制 ------ 模块 >>> import math >>> math.sin(0) 0.0 模块是程序 一个简 ...
随机推荐
- css易错点总结
传智老师说:找工作要问调不调IE6,同样的工作待遇,如果不用调IE6开12000工资,要调IE6,直接加价到15000,因为调IE6能累死人,气死人. 行高要在字体后面,如下: 正确:font:400 ...
- egg-init 知识点
Create a simple type application $ egg-init --type simple [dest]
- thinkphp5 怎么获取当前的模块,控制器和方法名
//当前模块url地址 $request= Request::instance(); $module_name=$request->module(); $controller_name=$req ...
- centos服务器上部署javaweb项目(转)
本文总体参照http://blog.csdn.net/u011019141(然后更据自己情况进行更改) 一.安装JDK 1.首先要查看服务器的系统版本,是32位还是64位 #getconf LONG_ ...
- py-day1-6 python 5个灰魔法 【len,index索引,for循环,切片】
# 索引,下标,获取字符串中的某一个字符. test = 'MuMingJun' v = test[3] print(v) i # 切片 test = 'MuMingJun' v = test[0:- ...
- Sqoop 导入及导出表数据子集命令详解
Sqoop命令详解 1.import命令 案例1:将mysql表test中的数据导入hive的hivetest表,hive的hivetest表不存在. sqoop import --connect j ...
- Spring Cloud(Dalston.SR5)--Eureka 常用配置
配置参数 默认值 说明 服务注册中心配置 Bean类:org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean eu ...
- Star Schema and Snowflake Schema
在设计数据仓库模型的时候,最常见的两种是星型模型与雪花模型.选择哪一种需要根据业务需求以及性能的多重考量来定. 星型模型 在星型模型当中,一张事实表被若干张维度表所包围.每一个维度代表了一张表,有主键 ...
- Fabric Engine2.0的自定义节点功能
Fabric Engine是一个多用途的引擎,针对maya等软件写节点写功能很方便.尤其是canvas节点编辑面板,提供了大量现有的功能供用户调用,当然这些节点功能都是可被用户编辑修改的,除此之外还提 ...
- 注册表项关于start参数的说明
start = {0,1,2,3,4}0 == 由核心装载器装载1 == 由I/O子系统装载2 == 自动启动3 == 手工启动4 == 禁止启动