实现HTTPS访问

访问OSS资源时,HTTP协议以明文方式传输数据,存在被窃取、篡改等安全风险,无法满足数据保护和合规要求。通过配置SSL证书启用HTTPS协议访问OSS,可实现数据加密传输,有效防范网络攻击,显著提升业务安全等级。

工作原理

OSS默认域名(如 example.oss-cn-hangzhou.aliyuncs.com)默认支持HTTPS协议访问,无需任何配置即可直接使用。

如果希望通过自定义域名实现HTTPS方式访问OSS,必须为该域名配置SSL证书,证书的配置位置取决于是否使用了CDN加速服务。

  • 未开启CDN加速:在OSS控制台为绑定的自定义域名配置证书托管。

  • 开启CDN加速:在CDN控制台为CDN加速域名配置HTTPS证书。

image

如何判断访问域名是否开启CDN加速?

方式一:通过OSS控制台查看

前往Bucket列表页面,单击目标Bucket,然后在左侧单击Bucket配置 > 域名管理。域名列表会展示该Bucket所有已配置的CDN加速域名,其HTTPS证书需在CDN控制台进行管理。

image

方式二:通过CDN控制台查看

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

image

获取证书

CDN加速域名或OSS自定义域名配置SSL证书前,请确保至少持有一个有效的SSL证书。可以通过以下途径获取证书:

  • 购买新证书:选购一个正式证书。

  • 申请免费证书:申请用于个人试用或测试用途的免费证书。

  • 上传第三方证书: 上传第三方证书服务商购买并签发的SSL证书。

    说明

    CDN加速域名可在配置时直接填写第三方证书信息,无需提前上传证书。

OSS自定义域名实现HTTPS访问

配置证书托管

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

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

    说明

    若无法选择目标证书,请前往SSL证书管理页面,确保证书满足以下条件:

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

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

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

    image

验证HTTPS访问

证书托管配置完成后,需要一段时间才能生效。配置生效后,可通过浏览器使用HTTPS协议访问资源以验证配置是否生效。

image

强制通过HTTPS进行访问

如需强制客户端通过HTTPS方式进行访问,请前往Bucket列表页面,单击目标Bucket,然后在左侧单击权限控制 > Bucket授权策略,选择按语法策略添加方式添加以下Bucket Policy。

添加策略时,请替换示例配置内的 bucketname。
{
	"Version": "1",
	"Statement": [{
		"Effect": "Deny",
		"Action": [
			"oss:*"
		],
		"Principal": [
			"*"
		],
		"Resource": [
			"acs:oss:*:*:bucketname",
			"acs:oss:*:*:bucketname/*"
		],
		"Condition": {
			"Bool": {
        		"acs:SecureTransport": [
					"false"
				]
			}
		}
	}]
}

配置Bucket Policy后,所有HTTP协议请求将被拒绝访问。

image

删除HTTPS证书

如果不再需要HTTPS加密访问,可以参照以下步骤删除HTTPS证书。

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

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

    image

CDN加速域名实现HTTPS访问

配置HTTPS访问

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

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

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

    • 云盾(SSL)证书中心:在证书名称右侧下拉选择证书。

      说明

      若无法选择目标证书,请前往SSL证书管理页面,确保证书满足以下条件:

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

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

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

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

    image

验证HTTPS访问

CDN加速域名的HTTPS配置下发大约需要1分钟,待配置生效后,可在浏览器通过HTTPS访问OSS资源(如 https://example.cn/dest.jpg,其中 example.cnCDN加速域名)验证配置是否生效。

image

强制通过HTTPS进行访问

配置并完成HTTPS验证后,可以通过配置强制跳转或开启HSTS强制客户端通过HTTPS进行访问。

配置强制跳转

前往CDN控制台页面,单击目标加速域名,然后单击HTTPS配置,在强制跳转旁边单击修改配置,并按下图所示配置强制跳转。配置完成后,CDN将通过301重定向方式,将客户端到CDN节点的HTTP请求强制跳转为HTTPS请求。

image

开启HSTS

前往CDN控制台页面,单击目标加速域名,然后单击HTTPS配置,在HSTS旁边单击修改配置,并按下图所示开启HSTS。配置完成后,客户端发起HTTP请求时将被强制转换为HTTPS请求。

image

关闭HTTPS安全加速

如果不再需要HTTPS加密访问,可以参照以下步骤停用此功能。

重要

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

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

  2. 按下图所示关闭HTTPS安全加速,然后单击确定

    image

计费说明

CDN中开启HTTPS功能后,将根据产生的静态HTTPS请求数单独计费,详情请参见静态HTTPS请求数费用说明

常见问题

证书更换或者过期了,如何进行更新?

更新证书方式与首次配置相同。

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

  • OSS自定义域名:前往Bucket列表,在目标Bucket域名管理的证书托管中选择新证书。

配置SSL证书后,为什么浏览器访问仍然提示“不安全”或“证书错误”?

请参考以下方法进行排查和处理。

  • 检查配置方式:确认访问域名是否开启了CDN加速访问。如果开启,必须在CDN控制台为加速域名进行HTTPS配置,OSS控制台的证书托管不会生效。

  • 清除浏览器缓存:浏览器可能会缓存旧的证书状态,请尝试清除浏览器缓存后再次进行访问。

  • 等待配置生效:在CDN进行HTTPS配置或在OSS控制台配置证书托管后,并非即时生效,请耐心等待配置下发生效后再次进行访问。

  • 检查证书链是否完整:中级机构颁发的证书文件包含多份证书,需要将服务器证书与中间证书拼接成一份完整的证书后再上传。通常情况下,证书颁发机构颁发证书时会有对应的说明,请注意查阅规则说明。

通过HTTPS访问OSS出现证书异常如何处理?

请参考以下方法进行排查和处理。

  • 证书未配置:浏览器打开链接报“您的连接不是私密连接”,报错信息:NET::ERR_SSL_PROTOCOL_ERROR。可能是证书未配置或配置方式错误,如开启了CDN加速,但是在OSS控制台配置了证书托管。请参考本文指导正确配置HTTPS访问。

  • 证书过期:浏览器打开链接报“您的连接不是私密连接”,报错信息:NET::ERR_CERT_DATE_INVALID。可能是域名绑定的证书已过期,过期时间可以通过浏览器查看。请重新购买或申请证书后参考本文指导配置新证书。

  • 证书不匹配:浏览器打开链接报“您的连接不是私密连接”,报错信息:NET::ERR_CERT_COMMON_NAME_INVALID。访问URL中的域名配置的证书范围没有包含当前域名,如访问域名为 cdn.example.cn,证书绑定域名为 oss.example.cn。请参考本文指导配置正确的证书。

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

可能是以下原因:

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

  • 证书不在当前账号下:请确认证书是否在当前阿里云账号下。如果不在,需要在SSL证书管理页面上传证书。

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

CDN配置HTTPS证书时提示“证书格式不对”,如何进行转换?

HTTPS配置仅支持PEM格式的证书,不同的证书颁发机构对证书内容的上传有不同的要求,具体格式要求请参见证书格式说明。如果证书不是PEM格式,请按证书格式说明文档内的指引完成格式转换后再上传。

如何通过命令行或API更新证书?