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加密流程:
- 客户端发起HTTPS请求。
- 服务端生成公钥和私钥(可以自己制作,也可以向专业组织申请)。
- 服务端把相应的公钥证书传送给客户端。
- 客户端解析证书的正确性。
- 如果证书正确,则会生成一个随机数(密钥),并用公钥该随机数进行加密,传输给服务端。
- 如果证书不正确,则SSL握手失败。
说明 正确性包括:证书未过期、发行服务器证书的 CA可靠、发行者证书的公钥能够正确解开服务器证书的发行者的数字签名、服务器证书上的域名和服务器的实际域名相匹配。 - 服务端用之前的私钥进行解密,得到随机数(密钥)。
- 服务端用密钥对传输的数据进行加密。
- 客户端用密钥对服务端的加密数据进行解密,拿到相应的数据。
HTTPS注意事项
配置相关
- 支持开启HTTPS安全加速功能的业务类型包括:图片小文件加速、大文件下载加速、视音频点播加速、直播流媒体加速。
- 支持泛域名HTTPS服务。
- 支持HTTPS安全加速的启用和停用:
- 启用:您可以修改证书,系统默认兼容用户的HTTP和HTTPS请求。您也可以自定义对原请求方式设置强制跳转。
- 停用:停用后,系统不再支持HTTPS请求且将不再保留证书或私钥信息。再次开启证书,需要重新上传证书或私钥。
- 您可以查看证书,但由于私钥信息敏感,不支持私钥查看。请妥善保管证书相关信息。
- 你可以更新证书,但请谨慎操作。更新HTTPS证书后1分钟内全网生效。
计费相关
HTTPS安全加速属于增值服务,开启后将产生HTTPS请求数计费,当前计费标准详见 HTTPS计费详情。
证书相关
- 开启HTTPS安全加速功能的加速域名,您需要上传证书,包含证书和私钥,均为
PEM
格式。说明 由于CDN采用的Tengine服务基于Nginx,因此只支持Nginx能读取的证书,即PEM
格式)。具体方法,请看参考证书格式说明及转化方法。 - 只支持携带SNI信息的SSL/TLS握手。
- 您上传的证书需要和私钥匹配,否则会校验出错。
- 不支持带密码的私钥。
HTTPS安全加速操作步骤
- 购买证书。您需要具备匹配加速域名的证书才能开启HTTPS安全加速。您可以在云盾控制台快速申请免费的证书或购买高级证书。
- 登录CDN控制台,进入CDN域名管理页。选择域名,单击管理。
- 在修改配置。
- 在HTTPS设置对话框中,开启HTTPS安全加速。
- 选择证书。您可以选择的证书类型包括:云盾、自定义和免费证书。目前仅支持
PEM
的证书格式。- 您可以选择云盾。若证书列表中无当前适配的证书,您可以选择自定义上传。您需要在设置证书名称后,上传证书内容和私钥,该证书将会在阿里云云盾的证书服务中保存。您可以在我的证书里查看。
- 您也可以选择免费证书,即阿里云的Digicert免费型DV版SSL证书。CDN的免费证书的只适用于CDN的HTTP安全加速业务,因此您无法在阿里云云盾控制台管理该证书,也无法查看到公钥和私钥。设置免费证书后,大约需要等候10分钟生效。
- 验证证书是否生效。证书生效后(约1小时),使用HTTPS方式访问资源。如果浏览器中出现绿色HTTPS标识,表明当前与网站建立的是私密连接,HTTPS安全加速生效。
说明 关于更换证书:
- 如果您想更换为免费证书或阿里云云盾证书,直接在HTTPS设置页选择想替换的目标证书类型(即云盾或免费证书)即可。
- 如果您想更换为自定义证书,在HTTPS设置页,选择自定义,然后将新证书的名称和内容填入对应框内,提交信息即可。
HTTPS安全加速证书格式要求
CA 机构提供的证书一般包括以下几种。其中阿里云CDN使用的是 Nginx (.crt为证书,.key为私钥):
- 如果证书是通过 root CA机构颁发,则您的证书为唯一的一份。
- 如果证书是通过中级CA机构颁发的证书,则您的证书文件包含多份证书,需要手工将服务器证书与中间证书拼接后,一起上传。说明 拼接规则为:服务器证书放第一份,中间证书放第二份,中间不要有空行。一般情况下,机构在颁发证书的时候会有对应说明, 请注意规则说明。
示例
请确认格式正确后上传。
Root CA机构颁发的证书
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有巨大区别。
- 二进制协议:相比于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 。
操作步骤
- 在 域名管理页面,选择域名,单击 配置。
- 在
说明 开启HTTP/2前,请确保HTTPS的证书已经配置成功。
- 若您是第一次配置HTTPS证书,需要等证书配置完成且生效后,才能打开HTTP/2。
- 若您已经开启了HTTP/2,但是又关闭了HTTPS证书功能,HTTP/2会自动失效。
栏进行配置。
- 打开后保存即可。
如果您的加速域名开启了HTTPS安全加速,您可以自定义设置,将终端用户的原请求方式进行强制跳转。
操作步骤
- 进入域名管理页面,选择需要设置的域名,单击管理。
- 在
跳转类型 说明
默认 同时支持HTTP和HTTPS方式的请求。 强制HTTP跳转 用户的请求将强制重定向为HTTP请求。 强制HTTPS跳转 用户的请求将强制重定向为HTTPS请求。 说明 您只有在启用 HTTPS安全加速功能后才能设置强制跳转。同时支持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 之后,一旦网站证书错误,在缓存时间。
- 登录CDN控制台。
- 在左侧导航栏,单击域名管理。
- 在准备配置的域名后,单击管理。
- 在左侧导航栏,单击HTTPS设置。
- 在HTST栏,单击修改配置。完成配置即可。