在AWS中管理证书的地方目前有ACM和IAM两个地方,笔者推荐还是尽量使用ACM证书,优点在下文中可以看到
但是有时候又必须得使用IAM证书、如CloudFront中只能支持使用IAM中的证书,至少到笔者写这篇文章时都还是这样的
如果使用IAM证书,到今天为止都会面临如下两个问题:
问题一:证书的更新,IAM不能像ACM证书那样,可以直接reimport新的证书,那样就不用去引用证书的资源上操作了
问题二:IAM不能像ACM那样可以很直接/直观的查询出证书被那些资源引用了,ACM在页面和命令行都可以轻松的查询出来
对于问题一,目前笔者也没有想到的好的方法解决
对于问题二,笔者倒是发现了一个巧妙的方式可以查询某个IAM证书被那些资源引用了,这里笔者介绍一下方法
1、建议先将查询的IAM证书绑定到一个测试ELB或者测试的CloudFront上,然后再执行删除操作,指定IAM证书的ServerCertificateName
其中关于IAM证书的ServerCertificateName可以通过 aws iam list-server-certificates 命令查询出来 ServerCertificateId,但一般操作都是用前者
2、这里介绍一下假删除IAM证书的方法(因为我们用测试资源引用了这个IAM证书,笔者知道无法被删除的),可以使用的命令如下:
[qq-5201351@localhost ~]$ aws iam delete-server-certificate --server-certificate-name wildcard.test.com-20230322 An error occurred (DeleteConflict) when calling the DeleteServerCertificate operation: Certificate: ASCAS4X3HEIGS5Q3S477S is currently in use by CloudFront Distribution EZROMUZUT0FWI, CloudFront Distribution E1Q9KYQYEXJJFQ, CloudFront Distribution E9N0BI02FB40M, and 2 other consumers. Please remove it first before deleting it from IAM.
如上命令结果,可以发现,只要IAM证书被资源引用,就无法被删除,删除时会报错,哪些资源使用了这个IAM证书,这里列出的是Distributions的ID
但是即使这样能查询出来一点、只列出了部分资源,最后提到 2 other consumers,这2个就没有举出具体的资源了,这个目前暂时也没有想到很好的办法,
但至少对于一个证书需要更新时,我们可以使用这个方法巧妙的将引用快要过期的IAM证书的资源,全部一个不漏的引用上新的IAM证书
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17212893.html
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
由于博主的水平不高,文章没有高度、深度和广度,只是凑字数,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!