给阿里云OSS绑定域名并启用SSL
为什么要这么做?
-
问题描述:
- 当用户通过 OSS 域名访问文件时,OSS 会在响应头中增加
Content-Disposition: attachment
和x-oss-force-download: true
,导致文件被强制下载而不是预览。 - 这个问题特别影响在 2022/10/09 之后新开通 OSS 的用户。
- 当用户通过 OSS 域名访问文件时,OSS 会在响应头中增加
-
解决方案:
- 通过自定义域名访问对象,可以避免 OSS 返回强制下载头。
- 自定义域名需要指向阿里云 OSS,并且需要为这个域名获取 SSL 证书,以确保通过 HTTPS 安全访问。
-
步骤总结:
- 获取 SSL 证书:使用 Certbot 获取 SSL 证书,并通过 DNS 验证域名所有权。
- 配置自定义域名:在阿里云 OSS 控制台中配置自定义域名,并上传 SSL 证书。
- 启用 HTTPS:在阿里云 OSS 控制台中启用 HTTPS,并选择上传的证书。
自定义域名需要指向阿里云 OSS,并且你希望为这个域名获取 SSL 证书,可以使用 DNS 验证的方法来获取证书。以下是详细步骤:
关键前提:
关键是需要在阿里云控制台的域名 权威域名解析中添加子域名aliyuncs.xxx.com
使用 DNS 验证获取 SSL 证书
-
安装 Certbot: 确保你已经安装了 Certbot。如果没有安装,可以使用以下命令安装:
sudo apt-get update sudo apt-get install certbot
-
运行 Certbot 并选择 DNS 验证: 使用 Certbot 的
certonly
模式,并选择--manual
和--preferred-challenges dns
选项。这将要求你手动添加一个 DNS TXT 记录来验证域名所有权。sudo certbot certonly --manual --preferred-challenges dns -d aliyuncs.xxx.com
-
按照提示添加 DNS TXT 记录: Certbot 会生成一个 DNS TXT 记录,并要求你将其添加到你的域名的 DNS 配置中。以下是一个示例输出:
Please deploy a DNS TXT record under the name _acme-challenge.aliyuncs.xxx.com with the following value: abcdefghijklmnopqrstuvwxyz1234567890 Before continuing, verify the record is deployed.
-
添加 DNS TXT 记录: 登录到你的 DNS 提供商的管理控制台,找到
aliyuncs.xxx.com
的 DNS 配置,并添加一个 TXT 记录:- 主机记录:
_acme-challenge
- 记录类型:
TXT
- 记录值:Certbot 提供的值(例如
abcdefghijklmnopqrstuvwxyz1234567890
)
- 主机记录:
-
等待 DNS 记录生效: DNS 记录的生效时间可能需要几分钟到几小时。你可以使用以下命令检查 TXT 记录是否已经生效:
nslookup -q=txt _acme-challenge.aliyuncs.xxx.com
-
继续 Certbot 验证: 一旦确认 TXT 记录已经生效,返回到 Certbot 命令行并按 Enter 键继续。Certbot 将验证 DNS 记录并颁发证书。
-
证书生成成功: 如果验证成功,Certbot 会生成证书并保存到默认路径(通常是
/etc/letsencrypt/live/aliyuncs.xxx.com/
)。
配置阿里云 OSS 使用 SSL 证书
-
下载证书文件: 证书文件通常位于
/etc/letsencrypt/live/aliyuncs.xxx.com/
目录下,包括以下文件:fullchain.pem
:完整的证书链privkey.pem
:私钥
-
登录阿里云 OSS 控制台: 登录到阿里云 OSS 控制台,选择你的 Bucket。
-
配置自定义域名和 SSL 证书:
- 选择你的 Bucket,点击“域名管理”。
- 添加或选择
aliyuncs.xxx.com
作为自定义域名。 - 在“证书管理”中,上传
fullchain.pem
和privkey.pem
文件。
-
启用 HTTPS: 在阿里云 OSS 控制台中启用 HTTPS,并选择你上传的证书。