深入了解HTTPS客户端双向认证的工作原理
一、引言
随着互联网技术的不断发展,网络安全问题日益受到关注。
HTTPS作为一种安全通信协议,广泛应用于Web浏览器与服务器之间的数据传输。
其中,HTTPS客户端双向认证技术为提高通信安全性提供了重要保障。
本文将详细介绍HTTPS客户端双向认证的工作原理及其过程。
二、HTTPS概述
HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议。
它是在HTTP协议基础上添加了SSL/TLS加密层,实现对传输数据的加密和保护。
HTTPS的主要目标是确保Web浏览器与服务器之间的通信内容不被窃取和篡改。
三、HTTPS客户端双向认证原理
HTTPS客户端双向认证是指在HTTPS通信过程中,除了服务器对客户端进行身份验证外,客户端也对服务器进行身份验证。
这种双向认证机制有助于提高通信安全性,确保双方都在与预期的对象进行交互。
其原理主要基于公钥基础设施(PKI)和SSL/TLS证书。
1. 公钥基础设施(PKI)
公钥基础设施是一种公钥管理解决方案,它提供公钥加密和数字证书服务。
在PKI中,每个实体(如Web服务器或客户端)都有一个公钥和私钥。
公钥用于加密信息,私钥用于解密信息。
数字证书是包含实体身份信息、公钥以及证书颁发机构(CA)签名的电子文档。
2. SSL/TLS证书
SSL(Secure Socket Layer)和TLS(TransportLayer Security)证书是用于HTTPS通信的安全凭证。
它们包含了服务器的公钥、证书颁发机构(CA)的签名以及服务器的身份信息。
当客户端与服务器进行通信时,通过SSL/TLS证书进行身份验证。
四、HTTPS客户端双向认证过程
1. 客户端发起请求
当客户端(如Web浏览器)发起HTTPS请求时,会向服务器发送包含客户端支持的加密套件信息的数据包。
这些数据包会经过SSL/TLS加密以确保通信安全。
2. 服务器响应并发送证书
服务器接收到客户端的请求后,会响应并发送自己的SSL/TLS证书。
这个证书包含了服务器的公钥、证书颁发机构的签名以及服务器的身份信息。
3. 客户端验证服务器证书
客户端接收到服务器证书后,会验证证书的合法性。
客户端会检查证书是否由受信任的证书颁发机构签发。
客户端会验证证书中的服务器身份信息是否与访问的域名相符。
如果验证通过,说明服务器是合法的,可以继续通信。
否则,客户端会终止通信并提示用户存在安全风险。
4. 客户端发送证书
在验证服务器证书通过后,客户端会发送自己的SSL/TLS证书给服务器。
这个证书包含了客户端的公钥和身份信息。
5. 服务器验证客户端证书
服务器接收到客户端证书后,同样会验证证书的合法性。
服务器会检查证书是否由受信任的证书颁发机构签发,以及证书中的客户端身份信息是否与预期相符。
如果验证通过,说明客户端是合法的,可以继续通信。
否则,服务器会终止通信并可能报告错误。
6. 双方建立安全通信通道
一旦服务器和客户端都通过了彼此的身份验证,他们就会协商并选择一个共同的加密套件,然后建立一条安全的通信通道。
这条通道使用协商好的加密套件进行数据加密和解密,确保双方之间的通信内容不会被窃取和篡改。
五、结论
HTTPS客户端双向认证技术通过引入客户端对服务器的身份验证,提高了HTTPS通信的安全性。
这种双向认证机制利用公钥基础设施(PKI)和SSL/TLS证书实现,确保双方都在与预期的对象进行交互。
在实际应用中,HTTPS客户端双向认证广泛应用于需要高安全性的场景,如银行、电子商务等。
由于引入双向认证会增加通信的复杂性和延迟,因此在某些场景下可能不适用。
因此,在实际应用中需要根据具体需求进行选择和使用。
SSL双向认证和单向认证的区别是什么?
SSL单向认证只要求站点部署了ssl证书就行,任何用户都可以去访问(IP被限制除外等),只是服务端提供了身份认证。
双向认证则是需要服务端与客户端提供身份认证,只能是服务端允许的客户能去访问,安全性相对于要高一些。
如何配置 Notes 客户端通过双向认证访问 Web 站点
双向认证的概述传统的单项认证可以让客户端对于服务器的身份进行鉴别,一旦认证通过用户就可以通过用户名和密码这种表单或其他认证形式通过服务器端的认证。
如果用户的登录账户信息被泄露了,那么服务器端对此便无能为力了。
但是,如果 Web 站点的管理员启用了双向认证那么除了用户表单,客户端还需向服务器端提供用户的客户端证书,从而使得用户的个人信息和资源得到更好的保护。
免费下载:IBM Notes 客户端下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。
从技术的层面上来讲,双向认证就是指服务器和客户端在没有用户干预的情况下分别对彼此的身份进行认证。
双向 SSL 会强制要求用户提供客户端证书,服务器会通过数字签名对用户的信息的真实性进行验证。
不过,由于双向认证的复杂性、花费和有效性等问题,目前大部分 Web 应用并没有采用这种认证方式,强制要求用户提供客户端证书。
在 Windows 2008 server 上添加标准 CA 角色接下来让我们以 Windows 2008 R2 Server 为例具体介绍如何在服务器端开启 SSL 和双向认证方式。
1. 准备一台装有 Windows 2008 2 系统的服务器,可以安装在物理机上也可以是虚拟机。
进入系统后右键点击我的电脑->管理,进入服务器管理器。
选中“角色”栏,在右侧面板选择添加角色。
图 1. 服务器管理器页面图 1. 服务器管理器页面2. 在添加角色向导中选择“下一步”。
3. 选择“Active Directory 证书服务”和“Web 服务器(IIS)”,点击下一步。
在这里为了简便,我们将申请证书所需的 CA 和提供 Web 服务的 IIS 安装在了一台 Windows 2008 上。
4. 忽略 Active Directory 证书服务简介,直接点击下一步。
5. 在“选择角色服务”中会默认选择“证书颁发机构”,在这里我们手动将“证书颁发机构 Web 注册”添加进来,在添加时会根据所需服务的依赖情况建议同时安装某些服务和角色,我们选择“添加所需的角色服务”,点击下一步。
图 2. 添加所需的角色服务页面图 2. 添加所需的角色服务页面6. 保持“指定安装类型”的默认选项–独立,点击下一步。
7. 在“指定 CA 类型”页,选择“根 CA”选项。
8. 在“设备私钥”页,选择“新建私钥”,点击下一步。
9. 在“为 CA 配置加密”页,选择默认值。
10. 在“配置 CA 名称”页,根据具体情况键入 CA 的公用名称,点击下一步。
11. 在“设置有效期”页,根据自身情况设置 CA 生成证书的有效期,点击下一步。
12. 在“配置证书数据库”页保持默认值,点击下一步。
13. 在“Web 服务器(IIS)”页,点击下一步。
14. 在“选择角色服务”页,保持默认选项,点击下一步。
15. 在“确认安装选择”页,确认安装选项准确无误并点击安装。
16. 在“安装结果”页,查看安装结果成功后点击关闭。
图 3. 安装结果页面图 3. 安装结果页面至此,AD 证书服务和 IIS Web 服务就安装完毕了,重启服务器以确保新安装的服务能够生效。
配置 IIS Web 站点使用 SSL待服务器重启完毕后,通过浏览器访问 IIS Web 站点,确保 HTTP 服务已经启动。
在开启 SSL 时,网站的管理员可以通过 IIS 本身的服务器证书功能快速创建服务器端自签名证书,具体步骤如下:1. 从开始->所有程序->管理工具,选中 Internet 信息服务(IIS)管理器。
图 4. 管理工具页面图 4. 管理工具页面2. 在树状控制面板中选中带有计算机名称的根节点,在右侧主面板中双击“服务器证书”。
图 5. 服务器证书页面图 5. 服务器证书页面3. 点击创建自签名证书链接。
图 6. 创建自签名证书图 6. 创建自签名证书4. 为证书添加证书名称。
5.确认自签名证书添加成功。
6. 在左侧连接面板选中默认站点节点,然后在右侧操作栏中选择“绑定”链接。
7. 在网站绑定框中点击“添加”按钮。
图 7. 网站绑定页面图 7. 网站绑定页面8. 从“类型”中选择 https,在 SSL 证书中选择在第四步中创建的自签名证书,点击确定。
图 8. 添加网站绑定页面图 8. 添加网站绑定页面9. 打开 Web 浏览器,输入 h/主机名,访问测试站点 SSL 是否开启。
如果看到如下图,证明 SSL 已经开启成功。
图 9. 测试站点页面图 9. 测试站点页面向 CA 申请带有私钥的个人证书打开 Web 浏览器,输入测试网站的证书申请网址,如:/测试服务器域名/certsrv/。
待下面网页加载后点击其中的“申请证书”。
图 10. 测试网站证书申请网址页面图 10. 测试网站证书申请网址页面选择“高级证书申请”链接。
图 11. 选择证书类型页面图 11. 选择证书类型页面选择创建并向此 CA 提交一个申请链接。
在高级证书申请中填写相关信息并在证书类型中选择“客户端认证证书”。
图 12. 高级证书申请填写页面一图 12. 高级证书申请填写页面一注意:一定要在密钥选项中选择“标记密钥为可导出”单选框,其他值保持默认即可。
ssl,set,shttp各是什么协议,它们的区别是什么
相同点:三种都是网络安全协议。
都能保证交易数据的安全性、保密性和完整性。
区别:SSL叫安全套接层协议,是国际上最早用的,已成工业标准,如果在Web服务器上使用了SSL安全套接层协议,就会使原来的http(超文本传输协议)转换为“https”(可以称之为“超文本安全传输协议”)。
SSL在传输层对网络连接进行加密,除了https这一应用外,还可以应用于B/S架构的应用程序。
它的基点是商家对客户信息保密的所采用的措施,于商家与用户仅实现安全性、保密性和完整性,无法做到防止交易抵赖。
在使用前先认证商家,在商家真正使用后,只认证用户,属于单身认证。
SET叫安全电子交易协议,是为了在互联网上进行在线交易时保证信用卡支付的安全而设立的一个开放的规范。
因它的对象包括消费者、商家、发卡银行、收单银行、支付网关、认证中心,所以对消费者与商家同样有利。
为了达到商家在合法验证持卡人支付指令和银行在合法验证持卡人订购信息的同时不会侵犯顾客的私人隐私这一目的,SET协议采用了双重签名技术来保证顾客的隐私不被侵犯,通常需要双向认证。
S-HTTP全称Secure Hypertext Transfer Protocol,即安全超文本传输协议。
是工作于应用层的协议,所以可提供基于消息的抗抵赖性。
不过目前的成熟度不高。