HTTPS原理

HTTPS是什么

HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,及以安全为目标的HTTP通道,简单说就是HTTP的安全版本。

HTTPS其实是由两部分组成的:HTTP+TLS/SSL,即HTTP下加入TLS/SSL层,HTTPS的安全基础就是TLS/SSL。服务端和客户端的信息传输都会通过TLS/SSL进行加密,所以传输的数据都是加密之后的数据。TLS的前身就是SSL协议,因此没有特别说明TLS/SSL说的都是同一个东西。

HTTP在安全方面的缺陷

HTTP本身是明文传输的,没有经过任何安全处理。例如用户在百度搜索了一个关键字,比如”苹果手机”,中间者完全能够查到到这个信息,并且有可能打电话过来骚扰用户。也有一些用户投诉使用百度时,发现首页或者结果页浮了一个很长很大的广告,这也肯定是中间者往页面插的广告内容。如果劫持技术比较低劣的话,用户甚至无法访问百度。

这里提到的一些中间者主要指一些网络节点,使用户数据在浏览器和百度服务器之间传输必须要经过的节点,比如WIFI热点、路由器、防火墙、反向代理、缓存服务器等。

在HTTP协议下,中间者可以随意嗅探用户搜索内容,窃取隐私甚至篡改网页。不过HTTPS是这些劫持行为的克星,能够完全有效地防御。总体来说,HTTPS协议提供了三个强大的功能来对抗上述的劫持行为:

1、内容加密。浏览器到百度服务器的内容都是以加密形式传输的,中间者无法直接查看原始内容

2、身份认证。保证用户访问的是百度服务,即使被DNS劫持到了第三方站点,也会提醒用户没有访问百度服务

3、数据完整。防止内容被第三方冒充或篡改

HTTPS工作原理

用一张图表示一下HTTPS的工作原理,来自http://blog.csdn.net/sean_cd/article/details/6966130,这位网友将基本的HTTPS工作原理已经总结得挺好了,我在此文的基础上再做一些补充:

其工作过程大致是:

1、客户端发起HTTPS请求

浏览器里面输入一个HTTPS网址,然后连接到服务端的443端口上。注意这个过程中客户端会发送一个密文族给服务端,密文族是浏览器所支持的加密算法的清单。

2、服务端配置

采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。

这套证书其实就是一对公钥和私钥,可以这么理解,公钥就是一把锁头,私钥就是这把锁的钥匙,锁头可以给别人对某个东西进行加锁,但是加锁完毕之后,只有持有这把锁的钥匙才可以解锁看到加锁的内容。

前面说过客户端会传送密文族给服务端,服务端则会从这些密文族中,挑选出一个,比如百度采用的就是RSA公钥加密算法来区分证书签名和交换密钥,通过AES算法来加密数据,至于GCM,应该是用来校验信息的。

3、传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构、过期时间等等。

4、客户端解析证书

这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,如颁发机构、过期时间等等,如果发现异常则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密。

注意一下上面提到的”发现异常”。证书中会包含数字签名,该数字签名是加密过的,是用颁发机构的私钥对本证书的公钥、名称及其他信息做hash散列加密而生成的。客户端浏览器会首先找到该证书的根证书颁发机构,如果有,则用该根证书的公钥解密服务器下发的证书,如果不能正常解密,则就是”发现异常”,说明该证书是伪造的。

5、传送加密信息

这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,然后客户端和服务端的通信就可以通过这个随机值来进行加密和解密了。

6、服务端解密信息

服务端用私钥解密后,得到了客户端传过来的随机值,至此一个非对称加密的过程结束,看到TLS利用非对称加密实现了身份认证和密钥协商。然后把内容通过该值进行对称加密。

7、传输加密后的信息

这部分是服务端用随机值加密后的信息,可以在客户端被还原。

8、客户端解密信息

客户端用之前生成的随机值解密服务端传送过来的信息,于是获取了解密后的内容,至此一个对称加密的过程结束,看到对称加密是用于对服务器待传送给客户端的数据进行加密用的。整个过程即使第三方监听了数据,也束手无策。

时间: 2025-01-01 17:50:32

HTTPS原理的相关文章

【JAVA秒会技术之秒懂HTTPS】白话图解HTTPS原理

白话图解HTTPS原理         [前言]最近看过几篇文章,内容是关于"全民HTTPS"的.为什么HTTPS,突然会受到如此多业内人士的青睐呢?HTTPS究竟是什么呢?它与HTTP又有怎样的区别呢?     带着这个问题,我查看了很多网上的资料,但是太多的专业词汇,让我感到头疼,很难理解.按我个人的认知,这个世界上根本不存在任何高深的道理,尤其是西方讲究科学性的思维,再高深,也不可能高深过中国传统思想中的八个字"只可意会,不可言传",完全不该诉你,让你自己去领

HTTPS 原理浅析及其在 Android 中的使用

本文首先分析HTTP协议在安全性上的不足,进而阐述HTTPS实现安全通信的关键技术点和原理.然后通过抓包分析HTTPS协议的握手以及通信过程.最后总结一下自己在开发过程中遇到的HTTPS相关的问题,并给出当前项目中对HTTPS问题的系统解决方案,以供总结和分享. 1.HTTP协议的不足 HTTP1.x在传输数据时,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份,存在的问题如下: 通信使用明文(不加密),内容可能会被窃听; 不验证通信方的身份,有可能遭遇伪装; 无法证明报文的完整性,

HTTPS原理(转)

HTTPS是什么 HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,及以安全为目标的HTTP通道,简单说就是HTTP的安全版本. HTTPS其实是由两部分组成的:HTTP+TLS/SSL,即HTTP下加入TLS/SSL层,HTTPS的安全基础就是TLS/SSL.服务端和客户端的信息传输都会通过TLS/SSL进行加密,所以传输的数据都是加密之后的数据.TLS的前身就是SSL协议,因此没有特别说明TLS/SSL说的都是同一个东西

https原理:证书传递、验证和数据加密、解密过程解析

原文地址:http://blog.csdn.net/clh604/article/details/22179907   写的太好了,就是我一直想找的内容,看了这个对https立马明白多了 http://www.cnblogs.com/zhuqil/archive/2012/07/23/2604572.html 我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议. HTTPS简介 HTTPS其实是有两部分组成:HTTP

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

大型网站的 HTTPS 实践(一): HTTPS 协议和原理

大型网站的 HTTPS 实践(一): HTTPS 协议和原理 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.本文重点介绍 HTTPS 协议, 并简单介绍部署全站 HTTPS 的意义. 2 HTTPS 协议概述 HTTPS 可以认为是 HTTP + TLS.HTTP 协议大家耳熟能详了,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的. TLS 是传输层加密协议,它的前身是 SSL 协议,最早由 netscape 公司于 199

HTTP请求响应过程以及与HTTPS区别

HTTP协议笔记,干货 HTTP协议 HTTP协议主要应用是在服务器和客户端之间,客户端接受超文本. 服务器按照一定规则,发送到客户端(一般是浏览器)的传送通信协议.与之类似的还有文件传送协议(file transfer protocol,FTP),简单邮件传送协议(simple mail ttransfer protocol,SMTP)等. HTTP是在七层网络模型中的应用层的协议,由发送请求和接受响应构成,是一个标准的客户端服务器模型.与此同时,HTTP是一个无状态的协议.也就是说,不能通过

浅析Android系统中HTTPS通信的实现_java

前言最近有一个跟HTTPS相关的问题需要解决,因此花时间学习了一下Android平台HTTPS的使用,同时也看了一些HTTPS的原理,这里分享一下学习心得. HTTPS原理HTTPS(Hyper Text Transfer Protocol Secure),是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上进行传输的.HTTPS协议是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议.所以,研究HTTPS协议原理,最终就是研究S

如何搭建一个HTTPS服务端

关于 HTTPS 的基本原理大家都已经不再陌生,今天和大家说说如何搭建一个支持 HTTPS 的服务端. 服务端的 HTTPS HTTPS 已经几乎成为了当前互联网推荐的通信方式,它能最大化保证信息传输的安全,从去年苹果的强制 HTTPS ,到如今各大网站都支持了 HTTPS.它会越来越普及. 之前写过几篇关于 HTTPS 原理的文章,有用户留言希望了解一些如何在服务端搭建 HTTPS 服务的内容,这次就和大家聊聊这个话题. SSL 证书 搭建一个 HTTPS 站点,第一步要做的就是申请 SSL