上传证书到IAM并配置中国区CloudFront服务

一、背景

2020年以前,AWS中国区没有上线Amazon Certificate Manager(ACM),因此无法直接签署证书,由此CloudFront上需要使用第三方证书上传到IAM服务。本文描述如何上传并启用证书服务。

二、创建仅HTTP的CDN服务

首先创建一个仅提供HTTP服务的CDN“分配”,或者英文叫做分发点“Distribution”。创建时候使用默认值,不开启SSL证书服务,输入要绑定的CNAME域名,然后创建完成。

创建完成后,系统会显示分配ID,例如“E318BF7RQO040L”这个就是分配ID。后续配置中将使用这个ID。

三、上传证书到IAM

上传的过程,需要AWS CLI才能操作。将证书复制到有权限操作CLI的环境上。

执行如下命令。

aws iam upload-server-certificate \
--server-certificate-name ExampleCertificate \
--certificate-body file://Certificate.pem \
--certificate-chain file://CertificateChain.pem \
--private-key file://PrivateKey.pem \
--path /cloudfront/DistributionName/

本命令中的参数解释:

  • 证书名字可以任意填写;
  • 第三方购买的证书,需要输入三个文件。但一般拿到证书是两个文件。这时候用文本编辑器打开Certificate文件,可以看到这个文件包含上下2个部分,中间有分割线,上半部分就是证书,下半部分就是证书链;
  • 最后的Cloudfront路径是前文步骤中创建的仅HTTP服务的CDN发布点,注意它的名字后边必须带有一个反斜杠。这个也就决定了,必须先去创建HTTP发布点,然后才能获得发布点的ID,再上传证书并指定ID。

以本文的测试为例,调整参数如下:

aws iam upload-server-certificate \
--server-certificate-name lxy \
--certificate-body file://lxy.crt \
--certificate-chain file://lxyChain.pem \
--private-key file://lxy.key \
--path /cloudfront/E318BF7RQO040L/

到CLI上执行,返回json字符串和ARN ID就表示操作成功。

至此上传证书操作完成。

四、修改现有CDN分发点启用HTTPS证书

重新修改本位一开始创建的仅HTTP服务的CDN发布点。

编辑分配点时候,可以发现一开始创建时候不能选择的SSL证书选项,现在不在是灰色,可以选择了。点击下拉框后,可以看到证书文件。如下截图。

点击保存,完成发布点更新。

在等待几分钟后,用浏览器去访问CDN绑定的域名,并使用https方式访问,再通过浏览器检查证书属性,即可确认设置是否成功完成。

五、参考文档

上传、修改、删除IAM证书

https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/id_credentials_server-certs.html

在CloudFront上使用IAM证书

https://aws.amazon.com/cn/premiumsupport/knowledge-center/custom-ssl-certificate-cloudfront/