博客园  :: 首页  :: 管理

在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