HTTPS安全加速原理及设置方式

HTTPS安全超文本传输协议(Hyper Text Transfer Protocol over Secure Socket Layer,简称HTTPS),是以安全为目标的HTTP通道。简单来说,HTTPS是HTTP的安全版,即将HTTP用SSL/TLS协议进行封装,HTTPS的安全基础是SSL/TLS协议。

功能优势

  • 传输过程中对用户的关键信息进行加密,防止类似Session ID或者Cookie内容被攻击者捕获造成的敏感信息泄露等安全隐患。
  • 传输过程中对数据进行完整性校验,防止DNS或内容遭第三方劫持、篡改等中间人攻击(MITM)隐患,了解更多使用HTTPS防止流量劫持。

阿里云CDN提供HTTPS安全加速方案,您只需要开启HTTPS后上传证书和私钥。此外,阿里云CDN还支持对证书进行查看、停用、启用、编辑操作。

HTTPS工作原理

在阿里云CDN控制台开启的HTTPS,将实现用户和阿里云CDN节点之间请求的HTTPS加密。而CDN节点返回源站获取资源的请求仍按您源站配置的方式进行。建议您源站也配置并开启HTTPS,实现全链路的HTTPS加密。

以下是HTTPS加密流程:

  1. 客户端发起HTTPS请求。
  2. 服务端生成公钥和私钥(可以自己制作,也可以向专业组织申请)。
  3. 服务端把相应的公钥证书传送给客户端。
  4. 客户端解析证书的正确性。
    • 如果证书正确,则会生成一个随机数(密钥),并用公钥该随机数进行加密,传输给服务端。
    • 如果证书不正确,则SSL握手失败。
    说明 正确性包括:证书未过期、发行服务器证书的 CA可靠、发行者证书的公钥能够正确解开服务器证书的发行者的数字签名、服务器证书上的域名和服务器的实际域名相匹配。
  5. 服务端用之前的私钥进行解密,得到随机数(密钥)。
  6. 服务端用密钥对传输的数据进行加密。
  7. 客户端用密钥对服务端的加密数据进行解密,拿到相应的数据。

HTTPS注意事项

配置相关

  • 支持开启HTTPS安全加速功能的业务类型包括:图片小文件加速、大文件下载加速、视音频点播加速、直播流媒体加速。
  • 支持泛域名HTTPS服务。
  • 支持HTTPS安全加速的启用停用
    • 启用:您可以修改证书,系统默认兼容用户的HTTP和HTTPS请求。您也可以自定义对原请求方式设置强制跳转
    • 停用:停用后,系统不再支持HTTPS请求且将不再保留证书或私钥信息。再次开启证书,需要重新上传证书或私钥。
  • 您可以查看证书,但由于私钥信息敏感,不支持私钥查看。请妥善保管证书相关信息。
  • 你可以更新证书,但请谨慎操作。更新HTTPS证书后1分钟内全网生效。

计费相关

HTTPS安全加速属于增值服务,开启后将产生HTTPS请求数计费,当前计费标准详见 HTTPS计费详情。

说明 HTTPS根据请求数单独计费,费用不包含在CDN流量包内。请确保账户余额充足再开通HTTPS服务,以免因HTTPS服务欠费影响您的CDN服务。

证书相关

  • 开启HTTPS安全加速功能的加速域名,您需要上传证书,包含证书和私钥,均为 PEM 格式。
    说明 由于CDN采用的Tengine服务基于Nginx,因此只支持Nginx能读取的证书,即 PEM格式)。具体方法,请看参考证书格式说明及转化方法。
  • 只支持携带SNI信息的SSL/TLS握手。
  • 您上传的证书需要和私钥匹配,否则会校验出错。
  • 不支持带密码的私钥。

HTTPS安全加速操作步骤

  1. 购买证书。您需要具备匹配加速域名的证书才能开启HTTPS安全加速。您可以在云盾控制台快速申请免费的证书或购买高级证书。
  2. 登录CDN控制台,进入CDN域名管理页。选择域名,单击管理
  3. HTTPS设置 > HTTPS证书,单击修改配置
  4. HTTPS设置对话框中,开启HTTPS安全加速
  5. 选择证书。您可以选择的证书类型包括:云盾自定义免费证书。目前仅支持 PEM 的证书格式。
    • 您可以选择云盾。若证书列表中无当前适配的证书,您可以选择自定义上传。您需要在设置证书名称后,上传证书内容和私钥,该证书将会在阿里云云盾的证书服务中保存。您可以在我的证书里查看。
    • 您也可以选择免费证书,即阿里云的Digicert免费型DV版SSL证书。CDN的免费证书的只适用于CDN的HTTP安全加速业务,因此您无法在阿里云云盾控制台管理该证书,也无法查看到公钥和私钥。设置免费证书后,大约需要等候10分钟生效。

  6. 验证证书是否生效。证书生效后(约1小时),使用HTTPS方式访问资源。如果浏览器中出现绿色HTTPS标识,表明当前与网站建立的是私密连接,HTTPS安全加速生效。

说明 关于更换证书:

  • 如果您想更换为免费证书或阿里云云盾证书,直接在HTTPS设置页选择想替换的目标证书类型(即云盾或免费证书)即可。
  • 如果您想更换为自定义证书,在HTTPS设置页,选择自定义,然后将新证书的名称和内容填入对应框内,提交信息即可。

HTTPS安全加速证书格式要求

CA 机构提供的证书一般包括以下几种。其中阿里云CDN使用的是 Nginx (.crt为证书,.key为私钥):

  • 如果证书是通过 root CA机构颁发,则您的证书为唯一的一份。
  • 如果证书是通过中级CA机构颁发的证书,则您的证书文件包含多份证书,需要手工将服务器证书与中间证书拼接后,一起上传。
    说明 拼接规则为:服务器证书放第一份,中间证书放第二份,中间不要有空行。一般情况下,机构在颁发证书的时候会有对应说明, 请注意规则说明。

示例

请确认格式正确后上传。

Root CA机构颁发的证书

证书格式为linux环境下 PEM 格式为:

证书规则为:

  • 请将开头-----BEGIN CERTIFICATE-----和结尾 -----END CERTIFICATE-----一并上传;
  • 每行64字符,最后一行不超过64字符。

中级机构颁发的证书链:

-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----

证书链规则:

  • 证书之间不能有空行;
  • 每一份证书遵守第一点关于证书的格式说明。

RSA私钥格式要求

rsa私钥规则:

  • 本地生成私钥:openssl genrsa -out privateKey.pem 2048 其中privateKey.pem为您的私钥文件。

  • -----BEGIN RSA PRIVATE KEY-----开头, -----END RSA PRIVATE KEY----- 结尾;请将这些内容一并上传。

  • 每行64字符,最后一行长度可以不足64字符。

如果您并未按照上述方案生成私钥,得到如 -----BEGIN PRIVATE KEY-----

-----END PRIVATE
      KEY-----

这种样式的私钥,您可以按照如下方式转换:

openssl rsa -in old_server_key.pem -out new_server_key.pem

然后将new_server_key.pem的内容与证书一起上传。

证书格式转换方式

CDN HTTPS安全加速只支持 PEM 格式的证书,其他格式的证书需要转换成 PEM 格式,建议通过openssl 工具进行转换。下面是几种比较流行的证书格式转换为 PEM 格式的方法。

DER 转换为 PEM:

DER格式一般出现在java平台中。

  • 证书转化:
    openssl x509 -inform der -in certificate.cer -out certificate.pem
  • 私钥转化:
    openssl rsa -inform DER -outform pem -in privatekey.der -out privatekey.pem

P7B 转换为 PEM:

P7B格式一般出现在windows server和tomcat中。

  • 证书转化:
    openssl pkcs7 -print_certs -in incertificat.p7b -out outcertificate.cer

    获取outcertificat.cer里面-----BEGIN CERTIFICATE-----, -----END CERTIFICATE-----的内容作为证书上传。

  • 私钥转化:P7B证书无私钥,因此 只需在CDN控制台只需填写证书部分,私钥无需填写。

PFX 转换为 PEM:

PFX格式一般出现在windows server中。

  • 证书转化:
    openssl pkcs12 -in certname.pfx -nokeys -out cert.pem
  • 私钥转化:
    openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes

免费证书

CDN免费证书,即阿里云的Digicert免费型DV版SSL证书。CDN的免费证书的只适用于CDN的HTTPS安全加速业务,因此您无法在阿里云云盾控制台管理该证书,也无法查看到公钥和私钥。

  • 免费证书申请需要5-10分钟。等待期间,您也可以重新选择上传自定义证书或者选择托管证书。
  • 无论您启用的是自定义证书/托管证书,还是免费证书,都可以相互切换。
  • 免费证书有效期为1年,到期后自动续签。
  • 在您使用过程中,如果关闭Https设置后,再次开启使用免费证书时,会直接使用已经申请过但未过期的证书。若开启时证书已过期,会重新申请免费证书。

其他证书相关

  • 您可以停用、启用和修改证书。停用证书后,系统将不再保留证书信息。再次开启证书时,需要重新上传证书或私钥。请参考HTTPS安全加速设置。
  • 只支持带SNI信息的SSL/TLS“握手”。
  • 请确保上传的证书和私钥匹配。
  • 更新证书的生效时间为10分钟。
  • 不支持带密码的私钥。

HTTP/2

HTTP/2也被称为HTTP 2.0,是最新的HTTP协议。目前,Chrome、 IE11、Safari以及Firefox 等主流浏览器已经支持 HTTP/2协议。HTTP/2优化了性能,兼容了HTTP/1.1的语义,与SPDY相似,与HTTP/1.1有巨大区别。

说明 SPDY是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级以及HTTP报头压缩,与HTTP/2相似。
HTTP/2的优势
  • 二进制协议:相比于HTTP 1.x 基于文本的解析,HTTP/2将所有的传输信息分割为更小的消息和帧,并对它们采用二进制格式编码。基于二进制可以让协议有更多的扩展性,比如引入了帧来传输数据和指令。
  • 内容安全:HTTP/2基于HTTPS,因此天然具有安全特性。通过HTTP/2的特性可以避免单纯使用HTTPS的性能下降。
  • 多路复用(MultiPlexing):通过该功能,在一条连接上,您的浏览器可以同时发起无数个请求,并且响应可以同时返回。另外,多路复用中支持了流的优先级(Stream dependencies)设置,允许客户端告诉服务器哪些内容是更优先级的资源,可以优先传输。
  • Header压缩(Header compression):HTTP请求头带有大量信息,而且每次都要重复发送。HTTP/2 采用HPACK格式进行压缩传输,通讯双方各自缓存一份头域索引表,相同的消息头只发送索引号,从而提高效率和速度。
  • 服务端推送(Server push):同SPDY一样,HTTP/2 也具有客户端推送功能。目前,有大多数网站已经启用HTTP/2,如淘宝。使用Chrome浏览器登陆控制台,您可以查看是否启用 HTTP/2 。

操作步骤

  1. 在 域名管理页面,选择域名,单击 配置
  2. 在 HTTPS配置 > HTTP/2设置 栏进行配置。

    说明 开启HTTP/2前,请确保HTTPS的证书已经配置成功。

    • 若您是第一次配置HTTPS证书,需要等证书配置完成且生效后,才能打开HTTP/2。
    • 若您已经开启了HTTP/2,但是又关闭了HTTPS证书功能,HTTP/2会自动失效。
  3. 打开后保存即可。

如果您的加速域名开启了HTTPS安全加速,您可以自定义设置,将终端用户的原请求方式进行强制跳转。

操作步骤

  1. 进入域名管理页面,选择需要设置的域名,单击管理
  2. HTTPS设置 > 强制跳转开启功能。

     
    跳转类型 说明
    默认 同时支持HTTP和HTTPS方式的请求。
    强制HTTP跳转 用户的请求将强制重定向为HTTP请求。
    强制HTTPS跳转 用户的请求将强制重定向为HTTPS请求。
    说明 您只有在启用 HTTPS安全加速功能后才能设置强制跳转。同时支持HTTP和HTTPS方式的请求。

示例

当您开启 强制HTTPS跳转后,终端用户发起一个HTTP请求,服务端返回302重定向响应,原来的HTTP请求强制重定向为HTTPS请求,如图所示:

设置TLS

为了保障您互联网通信的安全性和数据完整性,阿里云CDN提供TLS版本控制功能。您可以根据不同域名的需求,灵活地配置TLS协议版本。

TLS(Transport Layer Security)即安全传输层协议,在两个通信应用程序之间提供保密性和数据完整性。最典型的应用就是HTTPS。HTTPS,即HTTP over TLS,就是安全的HTTP,运行在HTTP层之下,TCP层之上,为HTTP层提供数据加解密服务。

目前,TLS主要有4个版本:

  • TLSv1.0:RFC2246,1999年发布,基于SSLv3.0,该版本易受各种攻击(如BEAST和POODLE),除此之外,支持较弱加密,对当今网络连接的安全已失去应有的保护效力。不符合PCI DSS合规判定标准。支持的主流浏览器: IE6+、Chrome 1+、Firefox 2+。
  • TLSv1.1:RFC4346,2006年发布,修复TLSv1.0若干漏洞。支持的主流浏览器:IE11+、Chrome22+、Firefox24+、Safri7+。
  • TLSv1.2:RFC5246,2008年发布,目前广泛使用的版本。支持的主流浏览器:IE11+、Chrome30+、Firefox27+、Safri7+。
  • TLSv1.3:RFC8446,2018年发布,最新的TLS版本,支持0-RTT模式(更快),只支持完全前向安全性密钥交换算法(更安全)。支持的主流浏览器:Chrome 70+和Firefox 63+。

HSTS

HSTS (HTTP Strict Transport Security),RFC6797,其作用是强制客户端(如浏览器)使用 HTTPS 与服务器创建连接。

当您网站全站使用 HTTPS后,必须要将所有 HTTP 请求 301/302 重定向到 HTTPS。如果您从浏览器输入 HTTP 链接,或在他处点击了 HTTP 链接,则服务器则将该 HTTP 请求 301/302 重定向到 HTTPS。但是这个过程可能被劫持,导致重定向后的请求没有到期服务器,这个问题可以通过 HSTS 来解决。

HSTS 是一个响应头: Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload] ,各参数说明如下:

  • max-age:单位是秒。
  • Strict-Transport-Security: 在浏览器缓存的时间,浏览器处理域名的 HTTP 访问时,若该域名的 Strict-Transport-Security 没有过期,则在浏览器内部做一次 307 重定向到 HTTPS,从而避免浏览器和服务器之间 301/302 重定向被劫持的风险。
  • includeSubDomains,可选参数,如果指定这个参数,表明这个域名所有子域名也适用上面的规则。
  • preload,可选参数,支持 preload 列表。

说明

  • HSTS 生效前仍然需要第一次 301/302 重定向到 HTTPS;
  • HSTS 响应头在 HTTPS 访问的响应中有效,在 HTTP 访问的响应中无效;
  • 仅对 443 端口有效,对其他端口无效;
  • 仅对域名有效,对 IP 无效;
  • 启用 HSTS 之后,一旦网站证书错误,在缓存时间。
  1. 登录CDN控制台。
  2. 在左侧导航栏,单击域名管理
  3. 在准备配置的域名后,单击管理
  4. 在左侧导航栏,单击HTTPS设置
  5. HTST栏,单击修改配置。完成配置即可。

点赞

发表评论