访问OSS资源时,HTTP协议以明文方式传输数据,存在被窃取、篡改等安全风险,无法满足数据保护和合规要求。通过配置SSL证书启用HTTPS协议访问OSS,可实现数据加密传输,有效防范网络攻击,显著提升业务安全等级。
工作原理
HTTPS访问OSS的实现基于在正确位置为指定访问域名配置有效的SSL证书。HTTPS协议通过TLS/SSL加密机制对HTTP数据报文进行端到端加密,同时利用证书链验证服务器身份,确保数据传输过程中的机密性、完整性和身份认证。
根据使用的访问域名类型,需要在不同位置进行SSL证书配置,具体配置方式如下:
OSS Bucket域名
如
example.oss-cn-hangzhou.aliyuncs.com
。此类域名由阿里云统一管理并维护SSL证书,原生支持HTTPS协议,无需进行任何配置,直接使用https://
前缀即可实现安全访问,简化了证书管理复杂度。自定义域名
对于通过自定义域名访问OSS,SSL证书的配置位置由是否启用CDN加速服务决定,这种设计确保证书配置与流量路径保持一致。
未开启CDN:流量直接访问OSS,需在OSS控制台为绑定的自定义域名配置证书托管,具体操作请参考OSS配置证书托管实现HTTPS访问。
已开启CDN:流量先经过CDN节点再转发至OSS,需在CDN控制台为CDN加速域名配置HTTPS证书,具体操作请参考CDN配置HTTPS证书实现HTTPS访问。
OSS配置证书托管实现HTTPS访问
为绑定到OSS Bucket的自定义域名启用HTTPS安全访问,实现数据加密传输和身份验证,保障访问安全性。
开始配置前,需确保已将自定义域名绑定至OSS Bucket,并通过购买新证书、申请免费证书或上传第三方证书的方式,在数字证书管理服务中持有一个与该域名匹配的有效SSL证书。
步骤一:配置证书托管
将SSL证书托管至OSS服务,使OSS能够为自定义域名提供HTTPS加密访问能力。
步骤二:验证HTTPS访问效果
证书托管配置完成后,需要等待配置生效。配置生效后,通过浏览器访问资源验证HTTPS加密是否正常工作,确保数据传输安全性得到保障。
前往Bucket列表,单击目标Bucket名称。
单击需要访问的目标文件操作列的详情。
选择域名为自定义域名并在下拉框中选择绑定的自定义域名,然后单击复制文件URL。
在浏览器中访问URL,验证HTTPS加密访问效果。浏览器地址栏应显示安全锁图标,表明连接已加密保护。
CDN配置HTTPS证书实现HTTPS访问
为已开启CDN加速的自定义域名启用HTTPS安全访问,通过CDN全球节点提供加速的同时确保数据传输安全。
开始配置前,需确保已为OSS Bucket配置CDN加速并将加速域名作为访问入口,并通过购买新证书、申请免费证书的方式,在数字证书管理服务中持有一个与该域名匹配的有效SSL证书。也可以上传第三方证书,或在后续配置步骤中直接填写第三方证书内容和私钥。
步骤一:配置CDN HTTPS证书
在CDN控制台为加速域名配置SSL证书,启用HTTPS安全加速功能。
步骤二:验证CDN HTTPS访问效果
CDN加速域名的HTTPS配置下发大约需要1分钟,待配置生效后,可在浏览器通过HTTPS访问OSS资源(如https://example.com/dest.jpg
,其中example.com
为CDN加速域名)验证配置是否生效。成功访问时,浏览器地址栏将显示安全锁图标,表明数据传输已加密保护。
应用于生产环境
生产环境中的HTTPS配置需要考虑安全性、可靠性和性能等多个维度,通过合理的配置策略和风险防范措施,确保业务的持续稳定运行。
最佳实践
强制HTTPS访问:配置访问控制策略
生产环境建议强制所有客户端使用HTTPS协议访问,防止数据在传输过程中被窃取或篡改,同时满足数据保护合规要求。
对于OSS自定义域名,通过配置Bucket Policy拒绝所有HTTP请求。
对于CDN加速域名,通过配置强制跳转或开启HSTS强制客户端通过HTTPS进行访问,提升整体安全等级。
自动续期管理:建立证书生命周期管理
SSL证书有固定有效期,过期将导致访问中断和业务损失。建立证书到期监控告警机制,提前30天进行证书更新,确保有充足时间进行测试和部署。对于阿里云SSL证书,开启证书托管可减少人工干预;对于第三方证书,建立定期更新流程和责任人制度,确保业务连续性。
性能优化:启用HTTP/2和压缩传输
现代浏览器和CDN普遍支持HTTP/2协议,相比HTTP/1.1具有多路复用、头部压缩、服务器推送等技术优势,可显著提升页面加载速度。在CDN配置中启用HTTP/2协议和Gzip压缩,在保证安全性的同时优化传输效率,减少带宽消耗并提升用户体验。
风险防范
证书故障应急:建立备用证书机制
准备备用SSL证书以应对主证书失效、误删除或CA机构故障等突发情况。对于关键业务系统,建议使用多个证书颁发机构(CA)的证书作为备份,在主证书出现问题时快速切换,最大程度降低服务中断风险,确保业务连续性。
访问降级策略:紧急情况下的HTTP回退
虽然HTTPS是安全最佳实践,但在证书配置出现严重问题且无法快速修复时,需要有紧急的HTTP访问回退方案。建立标准应急流程和操作手册,在故障排除期间临时允许HTTP访问,同时加强监控和日志记录,确保及时发现问题并快速恢复正常状态。
OSS 根证书升级
根证书是SSL/TLS信任链的根基,用于验证服务器证书的可信性。浏览器和操作系统内置根证书库,当服务器证书由受信任的根证书签发时才被认为安全可信。
升级背景
为确保网络安全环境的持续可靠性,Mozilla于2023年初实施了新的根证书信任策略。根据此策略,所有用于服务器身份验证、且签发日期超过15年的根证书,将不再获得Mozilla的信任。受此策略影响,GlobalSign发布根证书升级通知,明确GlobalSign Root R1根证书将于2025年4月15日起失效。详情请参见Mozilla更新根证书信任策略的通知和GlobalSign根证书升级通知。
OSS应对策略
针对根证书信任策略变更,阿里云对象存储OSS采取以下应对策略,确保服务平滑过渡和持续可用。详情请参见阿里云对象存储 HTTPS 根证书升级公告。
证书更新计划
自2024年7月1日起,OSS新颁发的证书将使用GlobalSign Root R3,确保与最新安全标准兼容,避免因根证书信任策略变更导致的访问中断。
交叉证书兼容方案
为保障过渡期间的广泛兼容性,OSS现有证书通过交叉证书机制实现从GlobalSign Root R1到GlobalSign Root R3的平滑迁移。基于GlobalSign Root R1的交叉证书有效期至2028年1月28日,考虑到证书需要在到期前13个月提交申请,建议在2026年12月28日前完成所有相关根证书的更新准备工作。
未来规划和建议
考虑到长远发展,GlobalSign Root R3虽为当前解决方案,但也将于2027年4月15日起不再被Mozilla信任,并最终于2029年3月18日到期。因此,强烈建议客户端及时升级根证书,同时确保根证书列表中包含GlobalSign R1、R3、R6和R46等多个权威根证书,以应对未来证书轮替需求。
用户应对方式
对于绝大多数用户,无需进行任何操作。现代操作系统(如Windows 7+、macOS 10.12.1+、主流Linux发行版近5年版本)和浏览器(Chrome、Firefox、Safari等)都会自动更新其内置的根证书库,自动获得对新根证书的信任支持。
仅当在老旧的操作系统、嵌入式设备或未及时更新的自定义客户端上,通过HTTPS访问OSS遇到证书错误时,才需要参照以下步骤进行排查和更新。
步骤一:检查是否存在“GlobalSign Root CA - R3”根证书
Windows
按下Win + R键,输入
certmgr.msc
并回车,打开证书管理器。在左侧导航栏展开
。在右侧列表中,查找“颁发给”为GlobalSign,“友好名称”为GlobalSign Root CA - R3的证书。
Linux
以Ubuntu为例,打开终端,执行以下命令,查看系统证书目录中是否存在GlobalSign相关证书。
ls /etc/ssl/certs/ | grep GlobalSign
macOS
打开访达,搜索“钥匙串访问”,双击打开。
单击系统根证书,在右上角的搜索框中输入“GlobalSign”,双击证书可查看证书详情。
步骤二:安装缺失的根证书
如果经过检查,确认系统中确实缺少该根证书,请根据操作系统选择对应的根证书安装方式。
Windows:如何在Windows系统安装根证书或中间证书
macOS:如何在macOS系统安装根证书
Linux:如何在Linux系统中安装根证书
计费说明
在CDN中开启HTTPS功能后,将根据产生的静态HTTPS请求数单独计费,详情请参见静态HTTPS请求数费用说明。
常见问题
证书更换或者过期了,如何进行更新?
证书更新操作方式与首次配置相同,根据域名类型选择对应的更新路径。
配置SSL证书后,为什么浏览器访问仍然提示“不安全”或“证书错误”?
当配置完成后仍出现安全警告,可按以下方法排查处理。
检查配置位置:确认访问域名是否开启了CDN加速。如果开启,必须在CDN控制台为加速域名进行HTTPS配置,OSS控制台的证书托管不会生效。
清除浏览器缓存:浏览器可能缓存旧的证书状态,清除浏览器缓存后重新访问。
等待配置生效:CDN HTTPS配置或OSS证书托管配置需要一定时间下发生效,请耐心等待。
检查证书链完整性:中级CA颁发的证书文件包含多份证书,需要将服务器证书与中间证书拼接成完整的证书链后上传。证书颁发机构通常会提供拼接说明,请仔细查阅相关文档。
通过HTTPS协议访问OSS出现证书异常如何处理?
根据不同的证书异常类型,采用对应的处理方法。
证书未配置:浏览器显示"连接不是私密连接",报错信息:
NET::ERR_SSL_PROTOCOL_ERROR
。可能是证书未配置或配置位置错误,如开启了CDN加速但在OSS控制台配置了证书托管。按照正确的配置方式重新设置HTTPS访问。证书过期:浏览器显示"连接不是私密连接",报错信息:
NET::ERR_CERT_DATE_INVALID
。域名绑定的证书已过期,过期时间可在浏览器中查看。重新购买或申请证书后按照配置流程更新证书。证书不匹配:浏览器显示"连接不是私密连接",报错信息:
NET::ERR_CERT_COMMON_NAME_INVALID
。访问URL中的域名不在证书的绑定域名范围内,如访问域名为cdn.example.com
,但证书绑定域名为oss.example.com
。为访问域名配置正确的证书。
为什么在选择证书时下拉列表中找不到目标证书?
下拉列表中无法找到目标证书可能由以下原因导致:
证书与域名不匹配:系统只会列出与当前配置域名相匹配的证书。如为域名
oss.example.com
配置证书时,无法选择颁发给cdn.example.com
的证书。证书不在当前账号下:确认证书是否在当前阿里云账号下。如果不在,需要在SSL证书管理页面上传证书。
泛域名证书层级不匹配:泛域名证书仅支持同级别域名,如
*.example.com
可以匹配www.example.com
、oss.example.com
,无法匹配cdn.oss.example.com
。
CDN配置HTTPS证书时提示“证书格式不对”,如何进行转换?
CDN HTTPS配置仅支持PEM格式的证书,不同证书颁发机构对证书内容的上传要求有所不同。如果证书不是PEM格式,请参见证书格式说明,按照文档指引完成格式转换后再上传。
如何通过命令行或API更新证书?
CDN加速域名:通过阿里云CLI设置CDN域名证书,详情请参见阿里云CLI集成示例和设置CDN域名证书API。
OSS自定义域名:通过ossutil为自定义域名绑定证书,详情请参见put-cname命令。