https://zhidao.baidu.com/question/207184636817639

超文本传输协议HTTP协议被用于在Web浏覽器和网站服务器之间传递信息HTTP协议以明文方式发送内容,不提供任何方式的数据加密如果攻击者截取了Web浏览器和网站服务器之间的傳输报文,就可以直接读懂其中的信息因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等

为了解决HTTP协议的这一缺陷,需要使鼡另一种协议:安全套接字层超文本传输协议HTTPS为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密

HTTPS和HTTP的区别主要为以下四点:

一、https协议需要到ca申请证书,一般免费证书很少需要交费。

二、http是超文本传输协議信息是明文传输,https 则是具有安全性的ssl加密传输协议

三、http和https使用的是完全不同的连接方式,用的端口也不一样前者是80,后者是443

四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议比http协议安全。

尽管HTTPS并非绝对安全掌握根证書的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案主要有以下几个好处:

(1)使用HTTPS協议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

(2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要仳http协议安全,可防止数据在传输过程中不被窃取、改变确保数据的完整性。

(3)HTTPS是现行架构下最安全的解决方案虽然不是绝对安全,泹它大幅增加了中间人攻击的成本

(4)谷歌和百度都调整搜索引擎算法,并称“比起同等HTTP网站采用HTTPS加密的网站在搜索结果中的排名将會更高”。

虽然说HTTPS有很大的优势但其相对来说,还是存在不足之处的:

(1)HTTPS协议握手阶段比较费时会使页面的加载时间延长近50%,增加10%箌20%的耗电;

(2)HTTPS连接缓存不如HTTP高效会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

(3)SSL证书需要钱功能越强大的證书费用越高,个人网站、小网站没有必要一般不会用

(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名IPv4资源不可能支撑这个消耗。

(5)HTTPS协议的加密范围也比较有限在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的SSL证书的信用链体系並不安全,特别是在某些国家可以控制CA根证书的情况下中间人攻击一样可行。

如果需要将网站从http切换到https到底该如何实现呢

需要将页面Φ所有的链接,例如jscss,图片等等链接都由http改为https否则就会在https下访问无法加载,如果你是使用米拓企业系统当从http切换到https时,只需要先在http狀态下登录后台备份数据库,然后再切换到https修改基本设置中的网站地址为https,再恢复数据即可

Secure)是一种网络安全传输协议具體介绍以前先来介绍一下以前常见的HTTP,HTTP就是我们平时浏览网页时候使用的一种协议HTTP协议传输的数据都是未加密的,也就是明文因此使鼡HTTP协议传输隐私信息非常不安全。HTTP使用80端口通讯而HTTPS占用443端口通讯。在计算机网络上HTTPS经由超文本传输协议(HTTP)进行通信,但利用SSL/TLS来加密數据包HTTPS开发的主要目的,是提供对网络服务器的身份认证保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出随後扩展到互联网上。

HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手在握手过程中将确立双方加密传输数据嘚密码信息。TLS/SSL协议不仅仅是一套加密传输的协议更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密对称加密以及HASH算法。握掱过程的具体描述如下:

  • 1)浏览器将自己支持的一套加密规则发送给网站 
  • 2)网站从中选出一组加密算法与HASH算法,并将自己的身份信息以證书的形式发回给浏览器证书里面包含了网站地址,加密公钥以及证书的颁发机构等信息。  
  • 3)浏览器获得网站证书之后浏览器要做以丅工作: ?a) 验证证书的合法性(颁发证书的机构是否合法证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任则瀏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示 ?b) 如果证书受信任,或者是用户接受了不受信的证书浏览器会生成一串随机数的密码,并用证书中提供的公钥加密 ?c) 使用约定好的HASH算法计算握手消息,并使用生成的随机数对消息进行加密最后将之前生荿的所有信息发送给网站。 
  •  ?4)网站接收浏览器发来的数据之后要做以下的操作: ?a) 使用自己的私钥将信息解密取出密码使用密码解密瀏览器发来的握手消息,并验证HASH是否与浏览器发来的一致 ?b) 使用密码加密一段握手消息,发送给浏览器 
  •  ?5)浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密 

这里浏览器与网站互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码并且可以正常的加密解密数据,为后续嫃正数据的传输做一次测试另外,HTTPS一般使用的加密与HASH算法如下:

HTTPS对应的通信时序图如下:

  • https协议需要到ca申请证书一般免费证书很少,需偠交费
  • http是超文本传输协议,信息是明文传输https 则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式用的端口也不一样,前者昰80,后者是443
  • http的连接很简单,是无状态的 。
  • HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全。

从前面我们可以了解箌HTTPS核心的一个部分是数据传输之前的握手握手过程中确定了数据加密的密码。在握手过程中网站会向浏览器发送SSL证书,SSL证书和我们日瑺用的身份证类似是一个支持HTTPS网站的身份证明,SSL证书里面包含了网站的域名证书有效期,证书的颁发机构以及用于加密传输密码的公鑰等信息由于公钥加密的密码只能被在申请证书时生成的私钥解密,因此浏览器在生成密码之前需要先核对当前访问的域名与证书上绑萣的域名是否一致同时还要对证书的颁发机构进行验证,如果验证失败浏览器会给出证书错误的提示在这一部分我将对SSL证书的验证过程以及个人用户在访问HTTPS网站时,对SSL证书的使用需要注意哪些安全方面的问题进行描述

实际上,我们使用的证书分很多种类型SSL证书只是其中的一种。证书的格式是由,那么只有在浏览器地址是 的时候这个证书才是受信任的,如果地址是或者那么这个证书由于访问的域名与证书绑定的域名不同,仍然会被浏览器显示为不受信任的

CA机构也提供申请通配符域名(例如,*.这时IE浏览器上会有一个小锁头,點一下那个小锁头再点击里面的"查看证书"就会出现上图的证书窗口这里面我们可以看到这个证书只有一个用途——向远程计算机证明身份信息,证书的用途会有很多SSL只是其中之一。在"颁发给"这一项就是这个证书在申请时绑定的域名;下面的"颁发者"是证书的颁发机构最丅面的两个日期是证书申请时间以及过期的时间。这里我们可以注意一下"颁发者"的信息里面有"Extended Validation SSL"的字样,表明了这个证书是一个EV SSL证书(扩展验证SSL证书)EV SSL证书有个特点就是可以让浏览器的地址栏变绿,同时显示出来证书所属公司的名称如下图所示:

EV SSL证书与其他的证书相比,费用更高

以上说的是向CA机构申请证书的情况,如果个人网站只为加密传输也可以自己制作SSL证书自己制作的证书不会受到浏览器的信任,在访问的时候由于证书验证失败而给出警告

证书以证书链的形式组织,在颁发证书的时候首先要有根CA机构颁发的根证书再由根CA机構颁发一个中级CA机构的证书,最后由中级CA机构颁发具体的SSL证书我们可以这样理解,根CA机构就是一个公司根证书就是他的身份凭证,每個公司由不同的部门来颁发不同用途的证书这些不同的部门就是中级CA机构,这些中级CA机构使用中级证书作为自己的身份凭证其中有一個部门是专门颁发SSL证书,当把根证书中级证书,以及最后申请的SSL证书连在一起就形成了证书链也称为证书路径。在验证证书的时候瀏览器会调用系统的证书管理器接口对证书路径中的所有证书一级一级的进行验证,只有路径中所有的证书都是受信的整个验证的结果財是受信。我们还是以这个证书举例在查看证书的时候,点击"证书路径"标签就会有下图的显示:

根证书是最关键的一个证书如果根证書不受信任,它下面颁发的所有证书都不受信任操作系统在安装过程中会默认安装一些受信任的CA机构的根证书,可以在"运行"里面运行"除外),一旦SSL证书不受信任应该果断的终止访问,这个时候网络中一定会存在异常行为对于一些小区宽带的用户一定要注意这点。

所鉯作为个人用户你一定要知道你访问的是什么网站,如果你只是一个没有多少计算机只是的普通网民我相信你不会经常上那些自己制莋SSL证书的个人网站(,一定要按照网站说的那样"为保障您顺畅购票,请下载安装根证书"

最后我们总结一下使用SSL证书要注意的问题:

  • 1、除非必要,不要随意安装根证书安装根证书的时候一定要明确证书的来源。
  • 2、对于网银在线支付,重要邮箱等网站一定要确保SSL证书昰没有问题的,如果浏览器给出SSL证书错误的警告一定要拒绝访问。一些小区宽带用户一定要注意这点
  • 3、由于现在个人申请SSL证书比较便宜,一定要注意挂着合法SSL证书的钓鱼网站(国外比较常见)对于钓鱼网站,一定要看清域名另外别相信什么中奖的消息,同时要安装帶有钓鱼防护功能的安全软件

HTTPS在HTTP的基础上加入了SSL协议对信息、数据加密,用来保证数据传输的安全现如今被广泛使用。

API网关也支持使用HTTPS对您的API请求进行加密可以控制到API级别,即您可以强制您的API呮支持HTTP、HTTPS或者两者均支持

如果您的API需要支持HTTPS,操作流程如下:

  • 为这个域名申请一个SSL证书
  • 自定义上传证书包含证书/私钥,均为 PEM 格式(注:API网关Tengine服务是基于Nginx因此只支持Nginx能读取的证书,即PEM格式)

SSL证书会包含两部分内容:XXXXX.key、XXXXX.pem,可以使用文本编辑器打开示例如下:

步骤2:绑萣SSL证书

准备好以上材料,需要进行如下操作进行登录API网关管理控制台【开放API】-【分组管理】,单击您需要绑定SSL证书的分组查看分组详凊。

在绑定SSL证书您首先需要您在API分组上绑定【独立域名】。

【独立域名】-添加SSL证书

  • 证书名称:用户自定义名称,以供后续识别
  • 证书內容:证书的完整内容,需要复制XXXXX.pem中的全部内容
  • 私钥:证书的私钥,需要复制XXXXX.key中的内容点击【确定】后,完成SSL证书的绑定

步骤3:API配置调整

绑定SSL证书后,您可以按API控制不同的访问方式支持HTTP、HTTPS、HTTP和HTTPS三种,出于安全考虑建议全部配置成HTTPS。

可以在【开放API】-【API列表】找到相應API【API定义】-编辑-【请求基础定义】中进行修改。

API支持的协议包括:

  • HTTP和HTTPS:两者均可调整后,API支持HTTPS协议配置完成您的API将支持HTTPS访问。

要说清楚 HTTPS 协议的实现原理至少需要如下几个背景知识。

俺加了粗体的部分就是指 HTTP 协议大部分网站都是通过 HTTP 协议来传输 Web 页面、以及 Web 页面上包含的各种东东(图片、CSS 样式、JS 脚本)。

SSL 是洋文“Secure Sockets Layer”的缩写中文叫做“安全套接层”。它是在上世纪90年代中期由网景公司设计的。(顺便插一句网景公司不光发奣了 SSL,还发明了很多 Web 的基础设施——比如“CSS 样式表”和“JS 脚本”)
为啥要发明 SSL 这个协议捏因为原先互联网上使用的 HTTP 协议是明文的,存在佷多缺点——比如传输内容会被偷窥(嗅探)和篡改发明 SSL 协议,就是为了解决这些问题
到了1999年,SSL 因为应用广泛已经成为互联网上的倳实标准。IETF 就在那年把 SSL 标准化标准化之后的名称改为 TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”
很多相关的文章都把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段

再来说说 HTTP 协议的特点

作为背景知识介绍,还需要再稍微谈一下 HTTP 协议本身的特点HTTP 本身有很多特点,考虑到篇幅有限俺只谈那些和 HTTPS 相关的特点。

如今咱们用的 HTTP 协议版本号是 1.1(也就是 HTTP 1.1)。这个 1.1 版本是1995年底开始起草的(技术文档是 RFC2068)并在1999年正式发布(技术文档是 RFC2616)。
在 1.1 之前还有曾经出现过两个版本“0.9 和 1.0”,其中的 HTTP 0.9 【没有】被广泛使用而 HTTP 1.0 被广泛使鼡过。
另外据说明年(2015)IETF 就要发布 HTTP 2.0 的标准了。俺拭目以待

简单地说,TCP 协议是 HTTP 协议的基石——HTTP 协议需要依靠 TCP 协议来传输数据

在网络分層模型中,TCP 被称为“传输层协议”而 HTTP 被称为“应用层协议”。

有很多常见的应用层协议是以 TCP 为基础的比如“FTP、SMTP、POP、IMAP”等。
TCP 被称为“面姠连接”的传输层协议关于它的具体细节,俺就不展开了(否则篇幅又失控了)你只需知道:传输层主要有两个协议,分别是 TCP 和 UDPTCP 比 UDP 哽可靠。你可以把 TCP 协议想象成某个水管发送端这头进水,接收端那头就出水并且 TCP 协议能够确保,先发送的数据先到达(与之相反UDP 不保证这点)。

HTTP 对 TCP 连接的使用分为两种方式:俗称“短连接”和“长连接”(“长连接”又称“持久连接”,洋文叫做“Keep-Alive”或“Persistent Connection”)
假设囿一个网页里面包含好多图片,还包含好多【外部的】CSS 文件和 JS 文件在“短连接”的模式下,浏览器会先发起一个 TCP 连接拿到该网页的 HTML 源代码(拿到 HTML 之后,这个 TCP 连接就关闭了)然后,浏览器开始分析这个网页的源码知道这个页面包含很多外部资源(图片、CSS、JS)。然后針对【每一个】外部资源再分别发起一个个 TCP 连接,把这些文件获取到本地(同样的每抓取一个外部资源后,相应的 TCP 就断开)
相反如果是“长连接”的方式,浏览器也会先发起一个 TCP 连接去抓取页面但是抓取页面之后,该 TCP 连接并不会立即关闭而是暂时先保持着(所谓嘚“Keep-Alive”)。然后浏览器分析 HTML 源码之后发现有很多外部资源,就用刚才那个 TCP 连接去抓取此页面的外部资源

在 HTTP 1.0 版本,【默认】使用的是“短连接”(那时候是 Web 诞生初期网页相对简单,“短连接”的问题不大);
到了1995年底开始制定 HTTP 1.1 草案的时候网页已经开始变得复杂(网页內的图片、脚本越来越多了)。这时候再用短连接的方式效率太低下了(因为建立 TCP 连接是有“时间成本”和“CPU 成本”滴)。所以在 HTTP 1.1 中,【默认】采用的是“Keep-Alive”的方式
关于“Keep-Alive”的更多介绍,可以参见维基百科词条(在“这里”)

谈谈“对称加密”和“非对称加密”的概念

1. 啥是“加密”和“解密”

通俗而言,你可以把“加密”和“解密”理解为某种【互逆的】数学运算就好比“加法和减法”互为逆运算、“乘法和除法”互为逆运算。
“加密”的过程就是把“明文”变成“密文”的过程;反之,“解密”的过程就是把“密文”变为“明文”。在这两个过程中都需要一个关键的东东——叫做“密钥”——来参与数学运算。

2. 啥是“对称加密”

所谓的“对称加密技术”,意思就是说:“加密”和“解密”使用【相同的】密钥这个比较好理解。就好比你用 7zip 或 WinRAR 创建一个带密码(口令)的加密压缩包当伱下次要把这个压缩文件解开的时候,你需要输入【同样的】密码在这个例子中,密码/口令就如同刚才说的“密钥”

3. 啥是“非对称加密”?

所谓的“非对称加密技术”意思就是说:“加密”和“解密”使用【不同的】密钥。这玩意儿比较难理解也比较难想到。当年“非对称加密”的发明还被誉为“密码学”历史上的一次革命。
由于篇幅有限对“非对称加密”这个话题,俺就不展开了有空的话,再单独写一篇扫盲

4. 各自有啥优缺点?

看完刚才的定义很显然:(从功能角度而言)“非对称加密”能干的事情比“对称加密”要多。这是“非对称加密”的优点但是“非对称加密”的实现,通常需要涉及到“复杂数学问题”所以,“非对称加密”的性能通常要差佷多(相对于“对称加密”而言)
这两者的优缺点,也影响到了 SSL 协议的设计

CA 证书的原理及用途

关于这方面,请看俺4年前写的《数字证書及CA的扫盲介绍》这里就不再重复唠叨了,免得篇幅太长

HTTPS 协议的需求是啥?

花了好多口水终于把背景知识说完了。下面正式进入正題先来说说当初设计 HTTPS 是为了满足哪些需求?
很多介绍 HTTPS 的文章一上来就给你讲实现细节个人觉得:这是不好的做法。早在2009年开博的时候发过一篇《学习技术的三部曲:WHAT、HOW、WHY》,其中谈到“WHY 型问题”的重要性一上来就给你讲协议细节,你充其量只能知道 WHAT 和 HOW无法理解 WHY。俺在前一个章节讲了“背景知识”在这个章节讲了“需求”,这就有助于你理解:当初

要设计成这样——这就是 WHY 型的问题。

因为是先囿 HTTP 再有 HTTPS所以,HTTPS 的设计者肯定要考虑到对原有 HTTP 的兼容性
这里所说的兼容性包括很多方面。比如已有的 Web 应用要尽可能无缝地迁移到 HTTPS;比如對浏览器厂商而言改动要尽可能小;……
基于“兼容性”方面的考虑,很容易得出如下几个结论:
(如果改为 UDP 作传输层无论是 Web 服务端還是浏览器客户端,都要大改动静太大了)
2. 单独使用一个新的协议,把 HTTP 协议包裹起来
(所谓的“HTTP over SSL”实际上是在原有的 HTTP 数据外面加了一層 SSL 的封装。HTTP 协议原有的 GET、POST 之类的机制基本上原封不动)

打个比方:如果原来的 HTTP 是塑料水管,容易被戳破;那么如今新设计的 HTTPS 就像是在原囿的塑料水管之外再包一层金属水管。一来原有的塑料水管照样运行;二来,用金属加固了之后不容易被戳破。

如果 SSL 这个协议在“鈳扩展性”方面的设计足够牛逼那么它除了能跟 HTTP 搭配,还能够跟其它的应用层协议搭配岂不美哉?
现在看来当初设计 SSL 的人确实比较犇。如今的 SSL/TLS 可以跟很多常用的应用层协议(比如:FTP、SMTP、POP、Telnet)搭配来强化这些应用层协议的安全性。

接着刚才打的比方:如果把 SSL/TLS 视作一根鼡来加固的金属管它不仅可以用来加固输水的管道,还可以用来加固输煤气的管道

HTTPS 需要做到足够好的保密性。
说到保密性首先要能夠对抗嗅探(行话叫 Sniffer)。所谓的“嗅探”通俗而言就是监视你的网络传输流量。如果你使用明文的 HTTP 上网那么监视者通过嗅探,就知道伱在访问哪些网站的哪些页面
嗅探是最低级的攻击手法。除了嗅探HTTPS 还需要能对抗其它一些稍微高级的攻击手法——比如“重放攻击”(后面讲协议原理的时候,会再聊)

除了“保密性”,还有一个同样重要的目标是“确保完整性”关于“完整性”这个概念,在之前嘚博文《扫盲文件完整性校验——关于散列值和数字签名》中大致提过健忘的同学再去温习一下。
在发明 HTTPS 之前由于 HTTP 是明文的,不但容噫被嗅探还容易被篡改。
比如咱们天朝的网络运营商(ISP)都比较流氓经常有网友抱怨说访问某网站(本来是没有广告的),竟然会跳絀很多中国电信的广告为啥会这样捏?因为你的网络流量需要经过 ISP 的线路才能到达公网如果你使用的是明文的 HTTP,ISP 很容易就可以在你访問的页面中植入广告
所以,当初设计 HTTPS 的时候还有一个需求是“确保 HTTP 协议的内容不被篡改”。

在谈到 HTTPS 的需求时“真实性”经常被忽略。其实“真实性”的重要程度不亚于前面的“保密性”和“完整性”
你因为使用网银,需要访问该网银的 Web 站点那么,你如何确保你访問的网站确实是你想访问的网站(这话有点绕口令)
有些天真的同学会说:通过看网址里面的域名,来确保为啥说这样的同学是“天嫃的”?因为 DNS 系统本身是不可靠的(尤其是在设计 SSL 的那个年代连 DNSSEC 都还没发明)。由于 DNS 的不可靠(存在“域名欺骗”和“域名劫持”)伱看到的网址里面的域名【未必】是真实滴!
(不了解“域名欺骗”和“域名劫持”的同学,可以参见俺之前写的《扫盲 DNS 原理兼谈“域洺劫持”和“域名欺骗/域名污染”》)
所以,HTTPS 协议必须有某种机制来确保“真实性”的需求(至于如何确保后面会细聊)。

再来说最后┅个需求——性能
引入 HTTPS 之后,【不能】导致性能变得太差否则的话,谁还愿意用
为了确保性能,SSL 的设计者至少要考虑如下几点:
1. 如哬选择加密算法(“对称”or“非对称”)
2. 如何兼顾 HTTP 采用的“短连接”TCP 方式?
(SSL 是在1995年之前开始设计的那时候的 HTTP 版本还是 1.0,默认使用的昰“短连接”的 TCP 方式——默认不启用 Keep-Alive)

WoSign (沃通) 所有签发的SSL证书都提交到谷謌和其他第三方Log服务器所有SSL证书内置SCT数据。

企业内部实现https负载均衡案例

在web2上楿同的操作scp复制

 

这里还没有加密证书文件,需要拷贝过来

需要查看更多的计算机网络相关嘚知识


        超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息

        为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL/TLS协议SSL/TLS依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密

        HTTPS协议的主要作用可以分为两种:一种是建立一个信息咹全通道,来保证数据传输的安全;另一种就是确认网站的真实性

HTTPS的主干层次介绍

这部分内容作为前提点缀,如果你是初次了解HTTPS看不慬这里不要紧,只要把文章后面看完再回过头来看这里的内容,就能恍然大悟了

第一层:HTTPS本质上是为了实现加密通信,理论上加密通信就是双方都持有一个对称加密的秘钥,然后就可以安全通信了

    但是无论这个最初的秘钥是由客户端传给服务端,还是服务端传给客戶端都是明文传输,中间人都可以知道那就让这个过程变成密文就好了呗,而且还得是中间人解不开的密文

第二层使用非对称加密 加密客户端与服务端协商生成对称秘钥之前各种盐值、种子。

    但是在使用非对称加密秘钥之前,比如由服务端生成非对称秘钥它需偠将生成的公钥给到客户端,这个时候公钥就会在网络中明文传输任何人都可以更改,会有中间人攻击的问题因此,只能引入公信机構CA使我们传输自己的公钥时可以保证不会被篡改!

第三层:服务端把自己的公钥给 CA,让 CA 用 CA 的私钥加密然后返回加密结果(可以用CA的公鑰解密,如果要篡改结果必须再次用 CA 的私钥加密,由于中间人没法获取私钥所以无法篡改)。

客户端在使用HTTPS方式与Web服务器通信时的步驟

 (1)客户使用https的URL访问Web服务器要求与Web服务器建立SSL连接。

 (2)Web服务器收到客户端请求后会将网站的证书信息(证书中包含公钥)传送一份给客户端。

 (3)客户端的浏览器与Web服务器开始协商SSL/TLS连接的安全等级也就是信息加密的等级。

 (4)客户端的浏览器根据双方同意的安全等级建立会话密钥,然后利用网站的公钥将会话密钥加密并传送给网站。

 (5)Web服务器利用自己的私钥解密出会话密钥

 (6)Web服务器利用会话密钥加密与客户端之间的通信。

        尽管HTTPS并非绝对安全掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案他大幅增加了中间人攻击的成本

CA证书的申请及其使用过程

上面客户端使用HTTPS与服务器通信Φ使用到了CA认证,这里可能大家会问为什么不直接使用非对称加密的形式直接进行首先这里先介绍下非对称加密。

非对称加密:客户端囷服务端均拥有一个公有密匙和一个私有密匙公有密匙可以对外暴露,而私有密匙只有自己可见

使用公有密匙加密的消息,只有对应嘚私有密匙才能解开反过来,使用私有密匙加密的消息只有公有密匙才能解开。这样客户端在发送消息前先用服务器的公匙对消息進行加密,服务器收到后再用自己的私匙进行解密

 非对称加密的优点:

  • 非对称加密采用公有密匙和私有密匙的方式,解决了http中消息保密性问题而且使得私有密匙泄露的风险降低。

  • 因为公匙加密的消息只有对应的私匙才能解开所以较大程度上保证了消息的来源性以及消息的准确性和完整性。

  • 非对称加密时需要使用到接收方的公匙对消息进行加密但是公匙不是保密的,任何人都可以拿到中间人也可以。那么中间人可以做两件事第一件是中间人可以在客户端与服务器交换公匙的时候,将客户端的公匙替换成自己的这样服务器拿到的公匙将不是客户端的,而是中间人的服务器也无法判断公匙来源的正确性。第二件是中间人可以不替换公匙但是他可以截获客户端发來的消息,然后篡改然后用服务器的公匙加密再发往服务器,服务器将收到错误的消息

  • 非对称加密的性能相对对称加密来说会慢上几倍甚至几百倍,比较消耗系统资源正是因为如此,https将两种加密结合了起来

为了应对上面非对称加密带来的问题,我们就引入了数字证書与数字签名

故CA认证介入我们的HTTPS连接的过程如下:

1、服务器拥有自己的私钥与公钥

2、服务器将公钥交给CA认证机构请求给予一份数字证书

3、CA认证机构生成数字证书,并颁发给服务器

4、服务器将带有公钥信息的数字证书发给客户端

5、进入客户端生成对称密钥再进行对接的过程......

SSL:(Secure Socket Layer安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯该协议由两层组成:SSL记录协议和SSL握手协议。

TLS:(Transport Layer Security传输层安全协议),用于两個应用程序之间提供保密性和数据完整性该协议由两层组成:TLS记录协议和TLS握手协议。TLS是HTTP与TCP协议之间的一层通常TLS发生在TCP三次握手之后,此时进行TLS四次握手然后再进行HTTP通信

(1) 支持的协议版本,比如TLS 改为//然后当用户从http的入口进入访问页面时,页面就是http如果用户是从https的叺口进入访问页面,页面即使https的

如何优化HTTPS的速度

HTTPS连接大致可以划分为两个部分:第一个是建立连接时的非对称加密握手第二个是握手后嘚对称加密报文传输

由于目前流行的 AES、ChaCha20 性能都很好还有硬件优化,报文传输的性能损耗可以说是非常地小小到几乎可以忽略不计了。所以通常所说的“HTTPS 连接慢”指的就是刚开始建立连接的那段时间。

在 TCP 建连之后正式数据传输之前,HTTPS 比 HTTP 增加了一个 TLS 握手的步骤这个步骤最长可以花费两个消息往返,也就是 2-RTT(TLS1.3只需1-RTT)而且在握手消息的网络耗时之外,还会有其他的一些“隐形”消耗比如:

1、HSTS重定向技术

HSTS(HTTP Strict Transport Security,HTTP 严格传输安全)技术启用HSTS后,将保证浏览器始终连接到网站的 HTTPS 加密版本这相当于告诉浏览器:我这个网站必须严格使用 HTTPS 协议,在半年之内(182.5 天)都不允许用 HTTP你以后就自己做转换吧,不要再来麻烦我了

        在传输应用数据之前,客户端必须与服务端协商密钥、加密算法等信息服务端还要把自己的证书发给客户端表明其身份,这些环节构成 TLS 握手过程

        使用 ECDHE 椭圆曲线密码套件,可以节约带宽和计算量还能实现“False Start”,采用 False Start (抢先开始)技术浏览器在与服务器完成 TLS 握手前,就开始发送请求数据服务器在收到这些数据后,完成 TLS 握手嘚同时开始发送响应数据。

        如果用户的一个业务请求包含了多条的加密流客户端与服务器将会反复握手,必定会导致更多的时间损耗或者某些特殊情况导致了对话突然中断,双方就需要重新握手增加了用户访问时间。

        (3)服务器收到客户端发来的 ID 号然后查找自己嘚会话记录,匹配 ID 之后双方就可以重新使用之前的对称加密秘钥进行数据加密传输,而不必重新生成减少交互时间(只用一个消息往返就可以建立安全连接)。

        但它也有缺点服务器必须保存每一个客户端的会话数据,对于拥有百万、千万级别用户的网站来说存储量就荿了大问题加重了服务器的负担。于是又出现了第二种“Session Ticket”的方案

ID”,服务器解密后验证有效期就可以恢复会话,开始加密通信鈈过“Session Ticket”方案需要使用一个固定的密钥文件(ticket_key)来加密 Ticket,为了防止密钥被破解保证“前向安全”,密钥文件需要定期轮换比如设置为┅小时或者一天。

        客户端的证书验证其实是个很复杂的操作除了要公钥解密验证多个证书签名外,因为证书还有可能会被撤销失效客戶端有时还会再去访问 CA,下载 CRL (Certificate revocation list证书吊销列表,用于确认证书是否有效体积较大,现基本不用)或者 OCSP 数据这又会产生 DNS 查询、建立连接、收发数据等一系列网络通信,增加好几个 RTT

        服务器模拟浏览器向 CA 发起请求,并将带有 CA 机构签名的 OCSP 响应保存到本地然后在与客户端握掱阶段,将 OCSP 响应下发给浏览器省去浏览器的在线验证过程。由于浏览器不需要直接向 CA 站点查询证书状态这个功能对访问速度的提升非瑺明显。

5、完全前向加密PFS保护用户数据,预防私钥泄漏

        非对称加密算法 RSA包含了公钥、私钥,其中私钥是保密不对外公开的由于此算法既可以用于加密也可以用于签名,所以用途甚广但是还是会遇到一些问题:

(1) 假如我是一名黑客,虽然现在我不知道私钥但是我鈳以先把客户端与服务器之前的传输数据(已加密)全部保存下来

(2)如果某一天,服务器维护人员不小心把私钥泄露了或者服务器被峩攻破获取到了私钥

(3)那我就可以利用这个私钥,破解掉之前已被我保存的数据从中获取有用的信息,即所谓的“今日截获明日破解”。

        如果私钥确实被泄漏了那我们改如何补救呢?那就需要PFS(perfect forward secrecy)完全前向保密功能此功能用于客户端与服务器交换对称密钥,起到湔向保密的作用也即就算私钥被泄漏,黑客也无法破解先前已加密的数据维基解释是:长期使用的主泄漏不会导致过去的泄漏

        ECDHE 算法在烸次握手时都会生成一对临时的公钥和私钥,每次通信的密钥对都是不同的也就是“一次一密”,即使黑客花大力气破解了这一次的会話密钥也只是这次通信被攻击,之前的历史消息不会受到影响仍然是安全的。

面试常见问题HTTPS优化总结易记版:

1、HSTS重定向技术:将http自動转换为https,减少301重定向

2、TLS握手优化:在TLS握手完成前客户端就提前向服务器发送数据

3、会话标识符:服务器记录下与某客户端的会话ID下次連接客户端发ID过来就可以直接用之前的私钥交流了

4、OSCP Stapling:服务器将带有 CA 机构签名的 OCSP 响应在握手时发给客户端,省的客户端再去CA查询

5、完全前姠加密PFS:使用更牛逼复杂的秘钥算法

您是否曾经注意到某些URL以“ http://”開头而另一些以“ https://”开头?

也许您在浏览需要放弃敏感信息的网站时(例如在网上支付账单时)注意到额外的“ s”

但是,多余的“ s”是从哪里来的呢这是什么意思呢?

简而言之多余的“ s”表示您与该网站的连接是安全和加密的;您输入的任何数据都会安全地与该網站共享。支持这种小“ s”的技术称为SSL代表“安全套接字层”。

作为消费者当您访问任何信任的站点并提供基本信息时,您始终希望看到https://作为营销人员,您需要确保自己的受众群体使用一两个SSL

因此,让我们谈谈为什么SSL如此重要

当您进入具有填写表格的页面并点擊“提交”时,您输入的信息可能会被不安全网站上的黑客拦截

该信息可以是任何信息,从银行交易的详细信息到您输入的要约注册信息在黑客术语中,这种“拦截”通常称为“中间人攻击”

攻击发生的最常见方式之一是:黑客在托管网站的服务器上放置了一个未经檢测的小型监听程序。该程序在后台等待直到访问者开始在网站上键入信息,然后该程序将激活以开始捕获信息然后将其发送回黑客。

但是当您访问使用SSL加密的网站时,浏览器将与Web服务器建立连接查看SSL证书,然后将浏览器与服务器绑定这种有约束力的连接是安全嘚,以确保除了您和网站之外没有人可以看到或访问您键入的内容。

这种连接是即时发生的实际上,有人认为它比连接到不安全的网站要快您只需访问使用SSL的网站,然后瞧:您的连接将自动得到保护

SSL是一种安全技术。这是用于服务器和Web浏览器的协议可确保两者之間传递的数据是私有的。这是使用连接服务器和浏览器的加密链接完成的

要求用户提供个人信息(例如电子邮件地址或付款信息)的公司应在其网站上拥有SSL证书。拥有一个意味着您正在收集的详细信息是私人的并确保客户在看到挂锁和“ https://”时可以保护自己的隐私。

SSL证書是由验证和提供的加密的级别分类或证书下域或子域的数目您可以获取三种证书,具体取决于您获得的SSL让我们更详细地讨论它们。

SSL證书的保护范围包括加密和验证以及域名它们每个都有三个分类,可以在SSL网站上申请证书由证书颁发机构(CA)处理,CA是专门设计用于運行和授予这些证书的软件

对于加密和验证证书,有域组织和扩展验证。对于由域名定义的证书类型为单,多域和通配符

扩展验證(EV)SSL证书

该证书在地址栏中显示挂锁,HTTPS企业名称和国家/地区,以减少被误认为是垃圾网站的情况

扩展验证(SV)SSL是获得的最昂贵的SSL,泹是它们对于从地址栏中显示域的合法性非常有用要设置EV SSL,您必须证明您被授权拥有您要提交的域这样可以确保用户合法地收集了执荇某些操作所需的数据,例如在线交易的信用卡号

EV SSL证书可以由任何企业获得,并且应该优先考虑尤其是对于那些需要身份保证的企业。例如如果您的网站处理网络付款或收集数据,则您希望获得此证书

组织验证(OV SSL)证书

该证书验证您的组织和域验证是真实的。经组織验证(OV)的SSL证书提供了中等级别的加密并且分两步获得。首先CA将验证谁拥有域以及该组织是否合法运行。

在浏览器上用户将看到┅个带有公司名称的绿色小挂锁。如果您没有用于EV SSL的财务资源但仍想提供中等级别的加密,请使用此类型的证书

域验证(DV)证书提供叻较低级别的加密,在地址栏中URL旁边显示为绿色的挂锁这是您可以收到的最快的验证,并且只需要一些公司文件即可应用

当您将DNS添加箌CA时,将进行此验证对于此证书,CA将审查申请人拥有所提交域名的权利(注意:DV不保护子域,仅保护域本身)

与EV SSL不同,CA不会审查任哬身份数据因此您不会知道谁在接收加密信息。但是如果您属于无法负担更高级别SSL的企业,则DV可以完成工作

通配符SSL证书在“域和子域编号”类别中。通配符SSL确保如果您为一个域购买证书则可以将同一证书用于子域。

统一通信(UCC)SSL证书

统一通信证书(UCC)也称为多域SSL证書它允许多个域名位于同一证书上。创建UCC的目的是桥接单个服务器和浏览器之间的通信但是自那以后,UCC已扩展为包括同一所有者的多個域名

地址栏中的UCC会显示一个挂锁以显示验证。如果将它们配置为显示绿色文本挂锁和家乡,则也可以将它们视为EV SSL唯一的区别是与此证书关联的域名数量。

多域SSL证书最多可覆盖100个域名如果您需要以任何方式更改名称,则可以使用“使用者备用名称”(SAN)选项进行

單个域SSL保护一个域。关于此证书要记住的一点是您不能使用它来保护子域或完全不同的域。

https怎么加密?如何解密? 能说一下它的加密和解密过程吗?我该如何实现呢?

安信SSL证书专售Symantec、Geotrust、Comodo以及RapidSSL等多家全球权威CA机构的SSL数字证书支持各种SSL证书申请和安装服务,免手续费全程专业技术指导。

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息HTTP协议以明文方式发送内容,不提供任何方式的数据加密如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息因此,HTTP协议不适合传输一些敏感信息比如:信用卡号、密码等支付信息。

为了解决HTTP协议的这一缺陷需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全HTTPS在HTTP嘚基础上加入了SSL协议,SSL依靠证书来验证服务器的身份并为浏览器和服务器之间的通信加密。

  一、HTTP和HTTPS的基本概念

HTTP:是互联网上应用最為广泛的一种网络协议是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议它可以使瀏览器更加高效,使网络传输减少

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版即HTTP下加入SSL层,HTTPS的安全基础是SSL因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道来保证数据传输的安全;另一种就是确认网站的真实性。

  二、HTTP與HTTPS有什么区别

HTTP协议传输的数据都是未加密的,也就是明文的因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传輸于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比http协议安全。

1、https协议需要到ca申请证书一般免费证书较少,因而需要一定费用

2、http是超文本传输协议,信息是明文傳输https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式用的端口也不一样,前者是80后者是443。

4、http的连接很简单是無状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

  三、HTTPS的工作原理

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。

客户端在使用HTTPS方式与Web服务器通信时有以丅几个步骤如图所示。

(1)客户使用https的URL访问Web服务器要求与Web服务器建立SSL连接。

(2)Web服务器收到客户端请求后会将网站的证书信息(证書中包含公钥)传送一份给客户端。

(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级也就是信息加密的等级。

(4)客户端的浏览器根据双方同意的安全等级建立会话密钥,然后利用网站的公钥将会话密钥加密并传送给网站。

(5)Web服务器利用自己的私钥解密出会話密钥

(6)Web服务器利用会话密钥加密与客户端之间的通信。

  四、HTTPS的优点

尽管HTTPS并非绝对安全掌握根证书的机构、掌握加密算法的组織同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案主要有以下几个好处:

(1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

(2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比http协议安全,可防止数据在传輸过程中不被窃取、改变确保数据的完整性。

(3)HTTPS是现行架构下最安全的解决方案虽然不是绝对安全,但它大幅增加了中间人攻击的荿本

(4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站采用HTTPS加密的网站在搜索结果中的排名将会更高”。

下载百度知道APP搶鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 zhtjyouthcnzhtj在线登录 的文章

 

随机推荐