HTTPS是什么意思?HTTP与HTTPS的区别,以及HTTPS配置方法

1 什么是HTTPS?

HTTPS协议(Hyper Text Transfer Protocol over Secure Socket Layer,即超文本传输安全协议)。按照维基百科的定义,HTTPS 是基于 HTTP 的扩展,用于计算机网络的安全通信,已经在互联网得到广泛应用。

在 HTTPS 中,原有的 HTTP 协议会得到 TLS (安全传输层协议) 或其前辈 SSL (安全套接层) 的加密。因此HTTPS 也常指 HTTP over TLS 或 HTTP over SSL。
从定义可以看出,HTTPS 并非独立的通信协议,而是对 HTTP 的扩展,用于保证通信安全。要理解 HTTPS,首先需要了解 HTTP 协议以及 TLS 协议。

HTTP协议(HyperText Transfer Protocol,超文本传输协议),是客户端浏览器或其他程序与 Web 服务器之间的应用层通信协议。
SSL/TLS 协议,TLS(Transport Layer Security,传输层安全性协议)及其前身 SSL(Secure Sockets Layer,安全套接层)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。

网景公司(Netscape)在1994年推出首版网页浏览器时,推出 HTTPS 协议,以 SSL 进行加密,这是SSL的起源。IETF 将 SSL 进行标准化,1999年公布 TLS 1.0标准文件(RFC 2246)。

随后又公布TLS 1.1(RFC 4346,2006年)、TLS 1.2(RFC 5246,2008年)和TLS 1.3(RFC 8446,2018年)。在浏览器、电子邮件、即时通信、VoIP、网络传真等应用程序中,广泛使用这个协议。目前已成为互联网上保密通信的工业标准。

TLS 的握手过程如下:

TLS 的握手过程


从上图可以看出,TLS 协议用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。

这个会谈密钥是用来将通信两方交换的资料做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。下面介绍下 HTTPS 协议涉及到的一些关键概念:

1)对称加密
对称密钥算法(Symmetric-key algorithm)是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通信联系。

优点:
算法公开、计算量小、加密速度快、加密效率高,适合加密比较大的数据。

缺点:
交易双方需要使用相同的密钥,也就无法避免密钥的传输,而密钥在传输过程中无法保证不被截获,因此对称加密的安全性得不到保证。
每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一密钥,这会使得发收信双方所拥有的钥匙数量急剧增长,密钥管理成为双方的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。

2)非对称加密
非对称式密码学(Asymmetric cryptography)是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;公钥用作加密,私钥则用作解密。使用公钥把明文加密后所得的密文,只能用相对应的私钥才能解密并得到原本的明文,最初用来加密的公钥不能用作解密。

由于加密和解密需要两个不同的密钥,故被称为非对称加密;不同于加密和解密都使用同一个密钥的对称加密。公钥可以公开,可任意向外发布;私钥不可以公开,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。其优缺点如下:

优点:
算法公开,加密和解密使用不同的钥匙,私钥不需要通过网络进行传输,安全性很高。

缺点:
计算量比较大,加密和解密速度相比对称加密慢很多。通过加密传输的方式,可以有效避免传输内容被第三方篡改,但并未解决身份认证的问题。

3)证书颁发机构
数字证书认证机构(Certificate Authority,CA),是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。它负责产生、分配并管理所有参与网上交易的个体所需的数字证书,因此是安全电子交易的核心环节。

2. HTTPS和HTTP的区别?

HTTPS 相比 HTTP最大的不同就是多了一层 SSL (Secure Sockets Layer 安全套接层)或 TLS (Transport Layer Security 安全传输层协议)。有了这个安全层,就确保了互联网上通信双方的通信安全。

3. 配置HTTPS前的准备?

HTTPS配置前需要向证书颁发机构申请对应域名的证书,用户可以在腾讯云SSL证书控制台购买证书或申请免费的单域名证书。

申请证书时,证书颁发结构(CA)需要验证申请者是否是域名的所有者,常用的验证方式有dns验证,文件验证。

在申请证书后,需要按照指引配置对应的dns解析或在用户源站放置CA要求的文件以供CA校验,验证通过后,就可以获取到对应的证书和私钥。
图片

4. 怎么在控制台配置HTTPS?
在腾讯云cdn控制台的证书管理页面可以配置 HTTPS。支持单个域名或批量部署证书,用户可以自己上传要配置的证书,或者先将证书托管在腾讯云上,然后再部署到CDN控制台。

5. 怎么配置强制跳转?

配置好域名的HTTPS证书后,可以在CDN控制台的域名管理页面,进入到对应域名的配置页里,选择HTTPS配置,可以配置强制跳转。

6. 常见问题

1)开启强制跳转后,出现API请求导致post请求丢失参数怎么办?
开启HTTPS强制跳转后,302/301跳转只是将HTTP转换为HTTPS,如果客户端不继续推送请求那么就会丢失参数,导致没有响应,在浏览器内访问正常是因为浏览器会在收到302响应之后重新提交一次参数然后响应成功。

这是客户端请求的行为,客户端收到301、302响应后,再次请求需要带上相应的参数才会有响应。

2)配置了CDN,HTTPS无法访问怎么排查?
a、CDN域名配置问题:

在保证证书配置已经完成的情况下,首先需要查看自己的加速域名是否有正确的cname解析到CDN的cname上。如果对应的cname域名没有正确解析,那么节点上部署的SSL证书是不会生效的,可以通过dig或者nslookup命令来检测对应的域名是否有正确的解析。

b、浏览器没有生效:

一种情况是部分低版本的浏览器没有正常生效配置的CA证书。
图片
在这种情况下,我们通常会查看对应的证书内容。这里查看证书生效的域名。CDN本身的SSL服务是通过SNI技术来实现的,而SNI的技术主要是针对于在同一台服务器或者同一个节点上部署多个域名证书的一项技术。

有部分的客户端浏览器会对这种技术有一些限制,进而就会出现一些低版本浏览器无法兼容SNI。针对于这种情况,建议升级客户端的浏览器版本(有时候也包括操作系统版本)来兼容SNI协议。

CA机构包括ROOT CA,包括中间CA,那像我们向中间CA申请的这种证书都会包括对应的证书链,如果我们在证书提交中缺失了这一部分中间证书,那就会导致部分的浏览器出现无法识别或者兼容的情况。针对于这种场景,我们需要把对应的证书链补全,保证对应的证书链在所有的浏览器中都兼容。

第三种情况,证书配置已经生效,但是仍然出现一些浏览器或者所有的浏览器都无法兼容的情况。出现这个错误,是由于我们配置的SSL证书与对应的加速域名不匹配。因为我们向CA机构申请的证书是有对应的适用范围的,是针对于特定的域名或特对特定的泛域名提供的服务。

如果域名不属于对应范围内的的话,就会出现这样的错误。值得注意的是申请的泛域名证书只适用其一级子域名,比如申请的是*.test.com的证书,只能给一级子域名a.test.com适用,不能给a.b.test.com适用。

所以客户在申请证书的时候,需要保证证书对应的范围与我们实际使用的加速域名是完全一致的,这样才能规避这种问题。

c、添加了证书以后,使用HTTPS访问出现504错误?

出现这种故障,基本上是由于CDN回源配置异常,导致了源站无法正常响应。

常见的一种情况是由于配置了协议跟随回源,顾名思义就是如果客户端使用的是HTTPS协议,那回源也走对应的HTTPS协议,走对应的443端口。这个时候就要求源站也配有对应的证书,并且443端口也能够正常地提供HTTPS协议的内容。如果源站不支持HTTPS协议的话,那这种情况下是不能开启协议跟随回源的,因此会导致504错误。

如若转载,请注明出处:https://www.zhangchenghui.com/652.html