秒懂边缘云 | CDN基础入门:HTTPS配置
在使用HTTP协议进行内容传输时,内容都会以明文发送,不会提供任何方式的数据加密。
如果您希望业务的敏感数据在网络上传输时能够以密文传输,则需要使用HTTPS协议。HTTPS作为HTTP的安全版,将HTTP用SSL/TLS协议进行封装,其安全基础正是SSL/TLS协议。HTTPS提供了加密通讯方法,现在被广泛用于万维网上安全敏感的通讯,例如交易支付。
上个章节中,我们已经学习了如何添加CNAME解析来接入CDN加速。如果业务需要HTTPS访问,我们还需要在解析前后配置HTTPS功能,如果域名有业务正在服务,推荐解析添加前进行配置,完成灰度测试后再调整解析。
本章节我们共同学习「HTTPS相关功能及配置」,如果您的业务有相关访问诉求,欢迎关注下文的实践指导内容。
1.已创建完成的CDN域名。
2.登录您已购买SSL域名证书的厂商控制台,如未购买,推荐通过 阿里云控制台 - SSL证书(应用安全)申请购买。
根据您的情况,我们将操作流程分为三个部分介绍,您可以参考流程图根据自身情况选择配置:
步骤一:暂无证书时购买流程(可选)
步骤二:外部证书导入流程(可选)
步骤三:开启HTTPS安全加速
提示:在开启HTTPS安全加速后,如果您还需要对其他HTTPS相关配置项进行了解和配置,可以继续参考下文中HTTPS功能介绍的内容。
整体操作流程如下图所示:
域名开启HTTPS功能前,需要您准备可用于绑定该域名的证书文件,如果您尚未申请证书,推荐您通过阿里云的证书管理服务购买SSL证书(即 SSL证书控制台)。您可以根据自身需求在以下两种服务中进行选择:
a. 选择证书管理 - 购买证书,针对您的业务域名申请付费证书,适用于企业级、对安全等级要求较高的用户。
b. 选择 免费证书 - 创建证书 - 证书申请,适用于安全等级要求一般的用户。
证书申请过程中,为了验证域名所有权,您需要填写申请表单内的相关信息,并且完成DNS验证或文件验证用于确认域名所有权。
详细操作步骤您可以参考数字证书管理服务的产品文档引导:
https://help.aliyun.com/document_detail/188316.htm
如果您已经在其他平台购买了证书,可以在 阿里云控制台 - 数字证书管理服务 上传外部证书。
您需要登录外部证书后台,针对需要导出的域名进行证书下载,从第三方平台导出证书到本地时,可以指定服务器类型,推荐您选择 Nginx 类型 的证书文件下载以便于您后续上传证书。
证书下载到本地后,压缩包内至少会有2个文件,一个.key后缀文件(私钥)和 一个.pem 或 .crt后缀文件(公钥),不同厂商导出文件时,可能会有细微区别,以实际导出情况为主。
常规情况下,您购买的证书为国际标准证书,上传时选择国际标准即可,证书名称自定义填写,仅用于在平台上管理区分。我们需要将刚刚导出的公私钥文件上传到阿里云平台,例如:
· 证书文件:又称为证书公钥,填写证书文件内容的PEM编码,公钥文件的后缀为一般.pem或.crt,使用文本编辑器打开复制并粘贴,或直接点击上传按钮选择本地文件。
· 证书私钥:填写证书私钥内容的PEM编码。私钥证书的后缀为.key,使用文本编辑器打开复制并粘贴,或直接点击上传按钮选择本地文件。
证书上传完成/购买完成后,我们打开CDN控制台的HTTPS配置页面,开启HTTPS安全加速功能后,证书来源选择云盾(SSL)证书中心,点击确定后即可开启,操作示意图如下:
证书名称参考云盾控制台对应证书显示的即可,证书名称查看方式:
如果您确认证书已经签发或上传完成,但域名开启HTTPS时无可选证书时,常见原因如下:
如果域名申请时,选择的是单域名证书
证书绑定域名需要和您的CDN加速域名完全匹配才能进行绑定。例如 www.aliyun.com 的证书,无法用于绑定 cdn.aliyun.com。您需要为 cdn.aliyun.com 单独申请一张证书。
如果域名申请时,选择的是泛域名证书
证书绑定的泛域名需要是您的CDN加速域名同级才能进行绑定,例如 *.aliyun.com 的证书,只能用于绑定对应子域名,例如二级域名 cdn.aliyun.com,无法绑定三级域名 video.cdn.aliyun.com。如需绑定多级子域名,您可以申请 泛域名证书 *.cdn.aliyun.com 或 申请特定域名的单域名证书。
HTTPS相关功能配置项为非必要的优化功能,主要用于优化传输效率或调整安全限制策略,您可以根据业务诉求判断是否开启。
HTTP/2也被称为HTTP 2.0,相对于HTTP 1.1新增了多路复用、压缩HTTP头、划分请求优先级和服务端推送等特性,解决了在HTTP 1.1中一直存在的问题,优化了请求性能,同时兼容了HTTP 1.1的语义。目前,Chrome、Edge、Safari和Firefox等浏览器已经支持HTTP/2协议。
HTTP/2在业务中最大优势体现为提升了TCP多路复用效率,压缩header提升传输效率和速度。劣势体现为HTTP2在多路复用时,可能会由于底层窗口队头阻塞而导致更多上层HTTP请求受影响。
1. HTTP/2可以提升终端和节点间的效率,但在终端网络环境不佳的情况下,终端耗时表现可能会劣化。
2. 如期望提升HTTP内容的传输效率,建议开启HTTP/2;如您业务中存在较多弱网用户,建议关闭HTTP/2。
阿里云CDN支持配置HTTP和HTTPS强制跳转
场景一:HTTP协议(不安全)请求重定向为HTTS协议(安全)
针对已经配置了HTTPS证书的加速域名,可配置强制跳转后,默认通过301重定向方式,将客户端到CDN节点的HTTP请求强制跳转为HTTPS请求,HTTPS请求更安全。
场景二:HTTPS协议(安全)请求重定向为HTTP协议(不安全)
通过301重定向方式,将客户端到CDN节点的HTTPS请求强制跳转为HTTP请求,无需安全传输。
主要适用于业务中可能会触发HTTP请求,但期望客户端在请求中通过HTTPS协议传输数据的场景。
OCSP Stapling功能,可实现由CDN预先缓存在线证书验证结果并下发给客户端,无需浏览器直接向CA站点查询证书状态,从而减少用户验证时间。
启用OCSP Stapling功能后,OCSP信息查询的工作将由CDN服务器完成。CDN通过低频次查询,将查询结果缓存到服务器中(默认缓存时间60分钟)。当客户端向服务器发起TLS握手请求时,CDN服务器将证书的OCSP信息和证书一起发送到客户端,供用户验证,无需用户再向数字证书认证机构(CA)发送查询请求。极大地提高了TLS握手效率,节省了用户验证时间。
对TLS握手效率有优化需求时,可以开启该配置。
通过强制HTTPS跳转时,仍存在一次HTTP请求的传输过程,如果您希望完全不使用HTTP协议进行连接,并不允许客户接受不安全的证书,您可以开启HSTS功能,强制客户端(例如:浏览器)使用HTTPS与CDN节点创建连接,拒绝所有的HTTP连接并阻止用户接受不安全的SSL证书,降低用户的第一次时访问请求被恶意拦截的风险。
适用于对安全有强需求,需要阻止客户端发起HTTP连接,并要求客户端校验证书安全性的场景,可以开启该配置。
阿里云CDN提供TLS版本控制功能,您可以根据不同域名的需求,灵活地配置TLS协议版本,低版本的TLS协议将提供对老版本浏览器的支持,但是协议的安全性相对更差一些,高版本的TLS协议将提供更高的安全性,但是对老版本浏览器的兼容性相对差一些。
通常无需修改,如果您需要适配某些浏览器,或者增强TLS限制时,可以根据版本需要进行调整。
1. 确认证书已经签发或上传完成,但域名开启HTTPS时无可选证书是什么原因?
上传/购买的证书无法用于该加速域名的绑定,普遍为加速域名和证书绑定域名不匹配导致,详情可参考本文 配置接入 中 开启HTTPS安全加速 相关解释。
2. 已经配置了HTTPS,为什么客户端还是HTTP访问?
客户端是以HTTP访问还是HTTPS访问完全是客户端的行为,如果您希望客户端强制使用HTTPS访问,可以在CDN上开启强制HTTPS跳转,或业务代码中引用链接时使用HTTPS协议。
3. 部分浏览器访问HTTPS异常,但访问HTTP正常可能是什么原因?
证书链是由根证书、中间证书、用户证书组成。如果您上传的公钥文件中只有用户证书,部分浏览器无法校验证书合法性导致报错或加载异常(例如提示证书链不完整/无法获取中间证书/无法校验根证书等)。您可以通过证书链补全工具,对公钥的证书链进行补全后,重新上传并更新域名的证书信息即可。
4. 源站已经配置了HTTPS,CDN上还需要配置HTTPS吗?
HTTPS是客户端和服务端的交互,未使用CDN之前,是客户端直接和源站交互,因此源站需要配置HTTPS。使用CDN之后,是客户端和CDN交互,如果您需要以HTTPS的形式访问CDN,则必须在CDN上配置HTTPS证书。
5. 源站的HTTPS证书更新了,CDN上需要同步更新吗?
不需要。源站的HTTPS证书更新后不会影响CDN上的HTTPS证书,当您在CDN上配置的HTTPS证书将要到期或者已经到期时,您才需要在CDN上更新HTTPS证书。
6.开启CDN的HTTPS加速后会额外收费吗?
会额外收费。开启CDN的HTTPS加速,实际开启的是客户端到CDN边缘节点这段链路的HTTPS。因为SSL协议的握手和内容解密都需要计算,所以会增加CDN服务器的CPU资源损耗,但不会增加您源站服务器的资源损耗,因为CDN边缘节点到您源站这段链路使用的仍然是HTTP协议,不会额外增加您源站的损耗。
至此,「HTTPS的配置及相关功能」介绍内容已经结束。如果您在步骤一的灰度验证中访问时因HTTPS问题未达到预期,可在配置调整达到预期后再进行验证。
在下个章节中。我们将共同学习「CDN缓存的相关功能及配置」,合理地配置缓存能够提高您业务中CDN的访问效率,欢迎您继续关注本系列的实践指导。