通过HTTPS协议访问OSS

更新时间:
复制为 MD 格式

OSS提供的访问域名默认支持HTTPS访问。当通过自定义域名访问OSS时,需要为该域名配置SSL证书以启用HTTPS加密传输,保障数据安全并满足合规要求。

工作原理

HTTPS协议通过TLS/SSL加密机制对数据进行端到端加密,同时利用证书链验证服务器身份,确保数据传输的机密性、完整性和身份认证。HTTPS访问OSS的实现基于在正确位置为访问域名配置有效的SSL证书,根据域名类型,支持方式有所不同:

  • OSS Bucket域名:格式如<bucket-name>.oss-<region-id>.aliyuncs.com,由阿里云统一管理SSL证书,原生支持HTTPS,无需额外配置,直接使用https://前缀即可访问。

  • 自定义域名:需要用户为域名配置SSL证书。

开启HTTPS访问

证书的配置位置取决于是否启用了CDN加速。

  • 未开启CDN:流量直接到达OSS,需在OSS控制台为自定义域名配置证书托管。

  • 已开启CDN:流量先经CDN节点再转发至OSS,需在CDN控制台为CDN加速域名配置HTTPS证书。

可通过以下任一方式判断自定义域名是否启用了CDN加速:

OSS控制台

  1. 前往Bucket列表,单击目标Bucket。

  2. 在左侧菜单栏单击Bucket 配置 > 域名管理

    域名列表会展示该Bucket已绑定的域名。如果阿里云 CDN 加速显示已配置,其HTTPS证书需在CDN控制台管理。

CDN控制台

前往CDN域名列表,查看已配置且生效的CDN加速域名及其源站Bucket信息。

步骤一:配置SSL证书

根据自定义域名的访问链路,选择对应的方式配置SSL证书。

OSS自定义域名

适用于自定义域名CNAME解析到OSS Bucket访问域名的场景。

重要

开始配置前,需确保已绑定自定义域名,并通过购买新证书申请免费证书上传第三方证书的方式,在数字证书管理服务中持有一个与该域名匹配的有效SSL证书。

  1. 前往Bucket列表,单击目标Bucket,然后在左侧单击Bucket 配置 > 域名管理

  2. 在目标自定义域名操作列单击证书托管,然后在证书名称右侧下拉选择证书。

  3. 单击上传,完成证书托管配置。

CDN加速域名

适用于通过CDN加速域名回源到OSS Bucket的场景。

重要

开始配置前,需确保已配置CDN加速并将加速域名作为访问入口,并通过购买新证书申请免费证书上传第三方证书的方式持有与该域名匹配的有效SSL证书。也可在后续配置步骤中直接填写第三方证书内容和私钥。

  1. 前往CDN控制台,单击目标加速域名,然后单击HTTPS配置,在HTTPS证书旁边单击修改配置

  2. 勾选HTTPS安全加速,阅读计费提醒并确认

  3. 根据证书来源,选择SSL证书或填写第三方证书信息。

    • 数字证书管理服务:在证书名称右侧下拉选择证书。

    • 自定义上传(证书+私钥):按页面提示填写证书名称证书(公钥)私钥

  4. 单击确定,完成HTTPS证书配置。

说明

若无法选择目标证书,请前往数字证书管理服务控制台确认证书满足以下条件:

  • 证书已签发并在有效期限内。

  • 证书的绑定域名包含当前要配置的域名。

步骤二:验证HTTPS访问效果

配置完成后,等待配置生效(CDN HTTPS配置约需1分钟),然后通过浏览器验证HTTPS访问:

OSS自定义域名

  1. 前往Bucket列表,单击目标Bucket名称。

  2. 单击目标文件的文件名或操作列的详情域名选择自定义域名,并在下拉框中选择绑定的自定义域名,然后单击复制文件 URL

CDN加速域名

CDN加速域名构造访问URL,如https://example.com/example.jpg,其中example.comCDN加速域名。

在浏览器中访问该URL,验证浏览器地址栏显示安全锁图标,表明连接已加密保护。

强制使用HTTPS访问

生产环境建议强制所有客户端使用HTTPS协议访问,防止数据在传输过程中被窃取或篡改。根据域名类型选择对应的配置方式。

OSS自定义域名

前往Bucket列表,单击目标Bucket,然后在左侧单击权限控制 > Bucket 授权策略,选择按语法策略添加方式添加以下Bucket Policy来拒绝所有HTTP请求。

说明

请将示例中的<bucket-name>替换为实际的Bucket名称,如存在存量Policy,请在原有Policy上添加Statement。

{
    "Version": "1",
    "Statement": [{
        "Effect": "Deny",
        "Action": ["oss:*"],
        "Principal": ["*"],
        "Resource": [
            "acs:oss:*:*:<bucket-name>",
            "acs:oss:*:*:<bucket-name>/*"
        ],
        "Condition": {
            "Bool": {
                "acs:SecureTransport": ["false"]
            }
        }
    }]
}

CDN加速域名

通过以下任一方式强制客户端使用HTTPS访问:

  • 配置强制跳转

    1. 前往CDN控制台,单击目标加速域名,然后单击HTTPS配置

    2. 协议重定向旁边单击修改配置,选择HTTP - > HTTPS,然后单击确定

      配置完成后,CDN将通过301重定向将HTTP请求强制跳转为HTTPS请求,详情请参见配置协议重定向

  • 开启HSTS

    1. 前往CDN控制台,单击目标加速域名,然后单击HTTPS配置

    2. HSTS旁边单击修改配置并打开HSTS开关,然后单击确定

      配置完成后,浏览器将自动将HTTP请求转换为HTTPS请求,详情请参见配置HSTS

证书生命周期管理

查看证书到期时间

OSS自定义域名

  1. 前往Bucket列表,单击目标Bucket,然后在左侧单击Bucket 配置 > 域名管理

  2. 单击目标域名的证书详情,查看证书到期时间。

CDN加速域名

前往CDN控制台,在左侧导航栏单击证书服务,查看证书过期时间。

更新证书

证书更新操作与首次配置相同,根据域名类型和更新方式选择对应的路径。

控制台

  • OSS自定义域名:前往Bucket列表,在目标BucketBucket 配置 > 域名管理中,单击证书托管并选择新证书。

  • CDN加速域名:前往CDN控制台,在目标加速域名的HTTPS配置中选择或上传新证书。

命令行工具与API

自动续期

SSL证书有固定有效期,过期将导致访问中断。建议提前30天进行证书更新。

  • 阿里云SSL证书开启证书托管可实现自动续期,减少人工干预。

  • 第三方证书:建立定期更新流程和责任人制度,确保及时续签。

关闭HTTPS访问

当不再需要HTTPS加密访问时,可按以下方式关闭。

OSS自定义域名

  1. 前往Bucket列表,单击目标Bucket,然后在左侧单击Bucket 配置 > 域名管理

  2. 单击目标域名证书详情旁的删除图标,然后单击确定

CDN加速域名

重要

为避免访问中断,在关闭HTTPS前,必须先将强制跳转类型恢复为默认,并关闭HSTS功能。

  1. 前往CDN控制台,单击目标加速域名,然后单击HTTPS配置,在HTTPS证书旁边单击修改配置

  2. 关闭HTTPS安全加速,然后单击确定

应用于生产环境

性能优化

现代浏览器和CDN普遍支持HTTP/2协议,相比HTTP/1.1具有多路复用、头部压缩等优势。在CDN配置中配置HTTP/2Gzip压缩,可在保证安全性的同时优化传输效率。

风险防范

  • 备用证书机制:准备备用SSL证书以应对主证书失效或CA机构故障。对于关键业务,建议使用不同CA的证书作为备份,在主证书出现问题时快速切换。

  • HTTP回退策略:在证书配置出现严重问题且无法快速修复时,建立标准应急流程,临时允许HTTP访问,同时加强监控确保及时恢复。

计费说明

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。访问域名不在证书的绑定域名范围内(如访问cdn.example.com但证书绑定的是oss.example.com),需为该域名配置正确的证书。

为什么在选择证书时下拉列表中找不到目标证书?

  • 证书与域名不匹配:系统只列出与当前域名匹配的证书。如为oss.example.com配置证书时,无法选择颁发给cdn.example.com的证书。

  • 证书不在当前账号下:需在SSL证书管理页面上传证书。

  • 泛域名证书层级不匹配:泛域名证书仅支持同级别域名,如*.example.com可匹配www.example.comoss.example.com,但无法匹配cdn.oss.example.com

CDN配置HTTPS证书时提示"证书格式不对",如何转换?

CDN HTTPS配置仅支持PEM格式证书。如果证书不是PEM格式,请参见证书格式说明完成格式转换后再上传。

相关文档