基于SSL协议的双向认证 - SSL协议 [1]

时间:2022-09-01 21:30:26

1  概要说明

在互联网通信方式中,目前用的最广泛的是HTTPS配合SSL和数字证书来保证传输和认证安全了。

2  详细介绍

2.1    HTTPS

HTTPS全称:Hypertext Transfer Protocal over Secure Socket Layer,是以安全为目标的HTTP通信协议。

即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。SSL用于安全的HTTP数据传输,HTTPS:URL表明它使用了HTTPS,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统最初是网景公司进行,提供了身份验证与加密通讯方式,现在它被广泛用于万维网安全敏捷通讯,例如交易支付方面等。

1.  HTTP基础上提出的一种安全的HTTP协议,因此可以称为安全的超文本传输协议。

2.  HTTP协议需要通过CA(数字证书)申请证书。

3.  HTTP和HTTPS使用完全不用的链接方式,端口也不一样,前者是80,后者是443。

4.  HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。

2.2    SSL

SSL全称:SecureSocket Layer,是网景公司所研发,用以保证INTERNET上数据传输安全,利用数据加密技术,可确保数据在网络上传输过程中不会被截取及窃听。

SSL协议位于TPC/IP 协议与各种应用层协议之间,是一种国际标准的加密及身份认证通信协议,为TCP提供一个可靠的端对端的安全服务。为两个通讯个体之间提供保密性和完整性。

2.2.1   SSL协议分两层:

2.2.1.1  SSL记录协议(SSLRecord Protocol)

它建立在可靠的传输协议之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

2.2.1.2  SSL握手协议(SSLHandshake Protocol)

它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

2.2.2   SSL功能

1. 客户对服务器的身份认证:SSL服务器允许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心CA的证书,来确认服务器的合法性。

2. 服务器对客户的身份认证:也可以通过公钥技术和证书进行认证,也可以通过用户名和密码来认证。

3. 建立服务器与客户之间安全的数据通道:SSL要求客户与服务器之间的所有发送的数据都被发送端加密、接收端解密,同时还检查数据得完整性。

2.2.3   SSL协议工作的基本流程

1. 接通阶段:客户机通过网络向服务器打招呼,服务器响应。

2. 密码交换阶段:客户机与服务器之间交换双方认可的密码,一般选用RSA密码算法。

3. 会谈密码阶段:客户机器与服务器间产生彼此交谈的会谈密码。

4. 检验阶段:客户机检验服务器获得的密码。

5. 客户认证阶段:服务器验证客户机的可行度。

6. 结束阶段:客户机与服务器之间相互交换结束的信息。

2.2.4   SSL安全实现原理

SSL提供了用于启动TCP/IP连接的安全性“信号交换”:

1. 这种信号交换导致客户和服务器同意将使用的安全性级别,并履行连接的任何身份验证要求。

2. 通过数据签名和数字证书可实现浏览器和WEB服务器双向身份认证。

3. 在用数字证书对双方身份验证后,双方就可以用保密密钥进行安全会话了。

2.2.5   SSL协议结构

基于SSL协议的双向认证 - SSL协议  [1]

Ø  SSL协议定义了两个通信主题:客户(Client)和服务器(Server)。

Ø  在客户/服务器结构中,应用层从请求服务和提供服务的角度定义客户和服务器。

Ø  SSL协议则从建立加密参数的过程中所扮演的角色来定义客户和服务器。

Ø  SSL协议包含四个阶段:

(1). 建立安全能力;

(2). 服务器鉴别和密钥交换;

(3). 客户鉴别和密钥交换;

(4). 完成握手协议;

1.1.1   SSL协议工作基本流程

Ø  服务器认证阶段:

(1). 客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接。

(2). 服务器根据客户信息确认是否需要生成新的主密钥,如果需要则服务器响应客户的“Hello”信息时将包含生成主密钥所需的信息。

(3). 客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器。

(4). 服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

Ø  用户端认证阶段:

(1). 在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户端的认证。经认证的服务器发送一个提问给客户,客户则返回数字签名后的提问和其公开密钥,从而向服务器提供认证。

基于SSL协议的双向认证 - SSL协议  [1]

1.1.1   SSL流程图

Ø  流程图

基于SSL协议的双向认证 - SSL协议  [1]

Ø  身份验证

基于SSL协议的双向认证 - SSL协议  [1]

Ø  发明密语规则

基于SSL协议的双向认证 - SSL协议  [1]

Ø  密语规则共享

基于SSL协议的双向认证 - SSL协议  [1]

Ø  进行安全通信

基于SSL协议的双向认证 - SSL协议  [1]

1.1.1  SSL详细说明

基于SSL一般都使用单向认证,如果应用场景要求对客户来源做验证也可以实现双向认证。

以下重点介绍SSL协议的握手协议。SSL协议即用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术速度快,可是公钥加密数据提供了更好的身份认证技术。SSL的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下:

(1). 客户端的浏览器向服务器传送客户单SSL协议的版本号,加密算法种类,产生的随机数,以及其他服务器和客户端之间通信所需要的各种信息。

(2). 服务器向客户端传送SSL协议版本号,加密算法种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书(也就是公钥)。

(3). 客户利用服务器传送过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开,如果合法性验证通过,将继续进行第四步。

(4). 用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥对其机密,然后加密后的“预主密码”传给服务器。

(5). 如果服务器要求客户的身份认证(也就是要双向认证,在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。

(6). 如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的CA是否可靠,发行CA的公钥能否正确解开客户证书的发行CA的数字签名,检查客户的证书是否在证书废止列表(CRL)中,检验如果没有通过,通讯立刻中断,如果验证通过,服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同相同的主通讯密码)。

(7). 服务器和客户端用相同的密码即“通话密码”,一个对称密钥用于SSL协议的安全通讯的加解密通讯。同时在SSL通讯过程中还要保证通讯的完整性,防止数据通讯中产生任何变化。

(8). 客户端向服务器端发送信息,指明后面的数据通讯将使用步骤7的主密码为对称密钥,同时通知服务器客户端的握手过程结束。

(9). 服务器向客户端发出信息,指明后面的数据通讯将使用步骤7中的主密码为对称密钥,同时通知客户端服务器的握手过程结束。

(10). SSL的握手部分结束,SSL安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行通讯,同时进行通讯完整性的检验。

1.1.2   SSL双向认证具体过程

如果是双向认证,就会有三个私钥和三个证书,分别是ca.key,ca.crt,server.key,server.crt,client.key,client.crt。

如果使用有CA证书的单向认证,证书和私钥就是ca.key,ca.crt,server.key,server.crt。

如果使用无CA证书的单向认证,证书和私钥就是server.key,server.crt。

双向认证SSL协议的具体通讯过程如下,在这个情况下服务器和用户双方都需要有证书,单向认证SSL部需要客户拥有CA证书,具体的过程相对于下面的步骤,只需要将服务器验证客户证书过程去掉,以及在协商对称密码方案,对称通话密钥时,服务器发送给客户的是没有加过密的密码方案。

(1). 浏览器发送一个连接请求给安全服务器。

(2). 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器。

(3). 客户浏览器检查服务器过来的证书是否是自己信赖的CA中心所签发的,如果是,就继续执行协议。如果不是,客户浏览器就给客户一个警告消息,警告客户这个证书不是信赖的,询问客户是否需要继续。

(4). 接着客户浏览器会比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。

(5). 服务器要求客户发送客户自己的证书,收到后,服务器验证客户的证书,如果没有通过验证,拒绝链接。如果通过验证,服务器获得用户的公钥。

(6). 客户浏览器告诉服务器自己所能够支持的通讯对称密码方案。

(7). 服务器从客户发送过来的密码方案中,选择一种加密程序最高额密码方案,用客户的公钥加过密通知浏览器。

(8). 浏览器针对这个密码方案,选择一个通话密钥,接着用服务器的公钥加过密后发送给服务器。

(9). 服务器接收到浏览器传送过来的消息,用自己的私钥解密,获得通话密钥。

(10).服务器、浏览器接下来的通讯都是用对称密码方案,对称密钥是加过密的。

基于SSL协议的双向认证 - SSL协议 [1]的更多相关文章

  1. 基于SSL协议的双向认证 - 双向认证 [3]

    1      SSL双向认证的实现 这里是基于SSL和Tomcat配置实现的,配置方法如下: 1.1    生成CA数字证书 首先需要配置OPENSSL环境变量. 我的OPENSSL配置文件路径是“D ...

  2. HTTPS 中双向认证SSL 协议的具体过程

    HTTPS 中双向认证SSL 协议的具体过程: 这里总结为详细的步骤: ① 浏览器发送一个连接请求给安全服务器.② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器.③ 客户浏览器检查服务器送 ...

  3. ssl介绍以及双向认证和单向认证原理

    SSL安全证书可以自己生成,也可以通过第三方的CA(Certification Authority)认证中心付费申请颁发. SSL安全证书包括: 1.       CA证书,也叫根证书或中间级证书.单 ...

  4. Centos 7 环境下,如何使用 Apache 实现 SSL 虚拟主机 双向认证 的详细教程:

    1. testing ! ... 1 1 原文参考链接: http://showerlee.blog.51cto.com/2047005/1266712 很久没有更新LAMP的相关文档了,刚好最近单位 ...

  5. Https:创建部署SSL证书进行双向认证

    一.前言 建立客户端与服务器的Https的连接需要证书进行双向验证后,才可访问.   二.证书类型 不同数字证书部署在服务器上后,用户浏览器访问网站时,展示如下: 1.无证书时 显示不安全标识. 2. ...

  6. 基于java的https双向认证,android上亦可用

    From: http://my.oschina.net/jjface/blog/339144 概述: 客户端,浏览器或者使用http协议和服务器通信的程序. 如: 客户端通过浏览器访问某一网站时,如果 ...

  7. 基于SSL协议的双向认证 - 数字证书 [2]

    1.1    数字证书 1.1.1   概念理解 一种文件的名称,例如一个机构或人的签名,能够证明这个机构或人的真实性.简而言之数字证书是一种网络上证明持有者身份的文件,同时还包括有公钥.证书是由国际 ...

  8. 使用mitmproxy嗅探双向认证ssl链接——嗅探AWS IoT SDK的mqtts

    亚马逊AWS IoT使用MQTTS(在TLS上的MQTT)来提供物联网设备与云平台直接的通信功能.出于安全考虑,建议给每个设备配备了证书来认证,同时,设备也要安装亚马逊的根证书:这样,在使用8883端 ...

  9. 双向认证SSL原理

    http://m.blog.chinaunix.net/uid-540802-id-3170984.html 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的 ...

随机推荐

  1. 【JVM】JVM系列之垃圾回收(二)

    一.为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收.除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此.所以,垃圾回收是必须的. 二. ...

  2. Dapper学习笔记(5)-存储过程

    一.无参存储过程 第一步:创建一个不带参数的存储过程,代码如下: CREATE PROCEDURE [dbo].[QueryRoleNoParms] AS BEGIN SELECT * FROM T_ ...

  3. python日常-list and dict

    什么是list: list 觉得算是python日常编程中用的最多的python自带的数据结构了.但是python重的list跟其他语言中的并不相同. 少年..不知道你听说过python中的appen ...

  4. A股回归牛市?

    A股回归牛市? 国际知名投行摩根士丹利(Morgan Stanley)预计,中国股市将恢复牛市大涨行情. 该行预计上证综指明年底将报4,400点,较目前的3,241点水平涨36%.预计每股盈余(EPS ...

  5. 命令行一键清除IE记录

    清除Internet临时文件 RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8 清除Cookies RunDll32.exe InetCpl.cpl, ...

  6. api接口

    目录(?)[-] 接口特点汇总 PHP Token令牌 先说第一个tokenapi_token 服务端接口校验PHP实现流程如下 再说第二个tokenuser_token 接口用例如下 接口特点汇总: ...

  7. 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- Demo分析

    如何创建工程 下载最新的Unity发布插件包. 打开Unity,新建一个项目 将插件包导入 在菜单中点击ASRuntime/Create ActionScript3 FlashDevelop HotF ...

  8. Springmvc和poi3.9导出excel并弹出下载框

    Springmvc 和 poi3.9 用java程序从数据库导出数据到excel(在博客园的第一篇原创博客) @RequestMapping(value = "/importexcel.ht ...

  9. Python中调用自然语言处理工具HanLP手记

    手记实用系列文章: 1 结巴分词和自然语言处理HanLP处理手记 2 Python中文语料批量预处理手记 3 自然语言处理手记 4 Python中调用自然语言处理工具HanLP手记 5 Python中 ...

  10. MVC应用程序,动态创建单选列表(RadioButtonList)

    单选列表是多个选项,让用户选择一个.MVC应用程序开发中,少之不了.下面就来练习之个小功能. 这个练习,Insus.NET想实现一个日期显示的格式.在MVC中,得需从model开始创建: 再创建一个E ...