【CDN】AWS Starter通过CLI为CloudFront上传SSL证书

发布于 / 信息应用 / 16 条评论

最近对CloudFront的兴趣很浓,不仅仅是和Lightsail的免费额度有关,还有就是通过它的香港IPv6节点中转是CERNET走HKIX出网最低价的选择了。

如果光说中转那个用途,也用不上绑定自定义的域名,给你分配的那个默认域名就足够了。但是你要绑定自定义的域名的话,就需要用到ACM(AWS证书管理器),而恰好Starter在控制台没有这个权限,所以包括博主在内很多人都以为残废的Starter根本没法绑定域名。

直到昨天在loc有人提到可以使用CLI上传证书文件,今天早上查阅了一下AWS的文档,很快就找到了相关的内容:

Install CLI v2 Windows
Custom SSL Certificate CloudFront


一、安装AWS-CLI

博主是选择Windows上手,就不提Linux下的操作了,除了安装之外大同小异,你可以跟着官方文档去做。

下载地址:https://awscli.amazonaws.com/AWSCLIV2.msi

正确安装好之后打开cmd输入aws --version即可看到CLI返回的版本信息。


二、设置账户信息

Starter的账户CLI登录信息在Vocareum的控制台上,点击Account Details即可看到;注意这个登录信息是一次性的,一段时间后就会失效,如果再次需要使用请重新填写相关的信息。

他上面的指示让你复制到对应的目录,实际上用不着,直接执行aws configure然后输入对应的信息即可,注意Starter的ACM地区对应是弗吉尼亚北部us-east-1,返回信息填写json即可

因为Vocareum设置了Token,所以我们还要执行一句命令将Token写进CLI


三、上传证书

首先要将签发好的证书拆成证书、密钥、证书链三段的格式,如果你签发的证书有Apache使用的格式直接拿来用就可以了;如果是Nginx的格式的话,证书需要自己拆分成证书和证书链。

用文本编辑器如npp等打开证书文件,你可以看到以BEGIN CERTIFICATE为首END CERTIFICATE为尾的两段或几段证书(取决于你证书链的长度),一般情况下其中的第一段就是证书,后面的一段或几段就是证书链,复制下来放入新的文件即可。然后执行上传的指令即可,修改命令中证书的路径以及你要设置的证书名称CertificateName和CDN项目名称YourDistributionName(当然这个名称无所谓)

上面红框忘了框选CertificateName,注意这个值每个证书必须是唯一的,上传多个证书的话一定要修改这个参数;再就是评论有提到删除证书,我尝试了一下Starter账户甚至没有delete-certificate这个权限,传上去就留在上面吧。


四、设置CDN

剩下域名的设置就简单了,在备用域名里面填上你自己的域名,然后选择刚才上传的证书,最后把自己的域名CNAME到AWS给你那个默认域名就完事了。

当然我知道某些人想干啥,如果要干那啥需要设置一下源请求策略,如图添加一条新的。因为默认AWS不会完全继承源站请求头,导致upgrade请求头未能传递而无法建立连接。

部属完成后访问自定义的域名便已经正常了


AWS的Starter申请门槛很低,在校的朋友们都可以尝试使用自己的邮箱去申请,即使被拒了也可以通过给AWS客服发送学生证通过验证。CLI如果要登入其他的账户直接从头开始即可覆盖之前的信息,其他关于AWS的CDN之前那一篇对网络选择已经做了一个简单的解释,这里就不再提了:

【CDN】AWS Lightsail CDN测试(免费一年)

前几天在上管理Lightsail的时候偶然看到上面的广告写了个Lightsail CDN,AWS的一贯机翻没有让人失望,博主在这里愣了一小会才反应过来…… AWS自己家的CDN就 ...
https://luotianyi.vc/4324.html

*原创文章,转载请注明出处

转载原创文章请注明,转载自: Luminous' Home » 【CDN】AWS Starter通过CLI为CloudFront上传SSL证书

  1. 请问Starter账号不能用Lightsail,可不可以用CLI来创建Lightsail?

    1. @tzchz 这个是做不到的,Starter支持的内容中包含CloudFront,而ACM对API开的权限也是很有限的,比如上传证书后是没办法删除的;Lightsail这样完全没有支持的功能,显然是彻底没有对子账户开放。
  2. 文章说的很好,学习了

  3. 写的不错哦,加油

  4. An error occurred (InvalidClientTokenId) when calling the UploadServerCertificate operation: The security token included in the request is invalid
    这是什么情况?

    1. @你才到碗里去 检查一下自己输入的登录信息是否正确,除了两个认证信息外还有一个token,你可以尝试刷新你的Vocareum页面来获取新的认证信息再重新输入
      1. @Luminous 嗯嗯,我又检查了一遍,是缺少token,谢谢大佬
  5. 好文章,再请研究一下。一、如何 删除已经上传的证书。二、证书到期后如何更新

    1. @磊 参考https://docs.aws.amazon.com/cli/latest/reference/acm/delete-certificate.html,使用delete-certificate指令配合并附上ARN参数即可删除;至于更新,直接上传新证书重新部署到CDN即可。Starter寿命不长,证书删不删都一样,传上去能用就行了,普通账号进入ACM控制台这些操作都是非常简单的。
      1. @Luminous 还是搞不定,这个ARN参数搞不出来。 CLI只能上传一个证书吗,我再上传其他网站证书的时候就报错了,那岂不是一个号只能做一个站的CDN?
        1. @磊 请注意上传命令最后有一个--path /cloudfront/YourDistributionName/参数,其中YourDistributionName是需要你自己设置并且不能重复的,你是没修改这个参数直接复制的别人的吧
          1. @Luminous 第一次上传时我就改了YourDistributionName,第二次上传也用不了不同的YourDistributionName。但提示An error occurred (EntityAlreadyExists) when calling the UploadServerCertific operation: The Server Certificate with name CertificateName already exists. 证书的名称我也都用的不一样的
            1. @磊 这可能是个无解的问题,Starter无法执行list-certificates获取证书arn,也不能像s3一样使用通配符进行操作
              1. @Luminous 那一个帐号就只能上传一次证书?过期了也没办法了啊
                1. @磊 我这里测试是可以上传多个证书的,证书名不重复即可;另外delete-certificate子账户也没有这个权限
                  1. @Luminous my god 我没改certificatename这个名称,你真是太厉害了,佩服.你在论坛叫什么啊,加个好友吧,我叫 l516q