Python连接AWS DocumentDB时TLS PEM证书相关问题咨询
AWS DocumentDB 证书使用相关问题解答
问题1:PEM证书文件不允许存入代码仓库,推荐的存储位置是什么?
不要将凭证类文件提交到代码仓库是正确的安全实践,你可以根据自己的使用场景选择以下推荐存储方案:
- 首选
AWS Secrets Manager:将PEM文件内容作为密钥存储,在Fargate任务定义中直接配置将密钥内容注入为容器环境变量,或是服务启动时通过任务角色的权限调用SDK拉取内容后写入容器本地临时路径,全程不需要把证书固化到代码或镜像中,还支持后续证书的自动轮转配置。 - 次选
AWS Systems Manager Parameter Store的安全字符串类型:用法和Secrets Manager基本一致,存储成本更低,适合存放这类公开信任、不需要高频轮转的根证书文件。 - 注意不要将PEM文件打包到容器镜像内,避免镜像分发过程中出现凭证泄露风险。
问题2:服务全部部署在VPC内部,为什么仍然需要使用PEM证书?
TLS证书的作用是验证服务端身份、加密传输链路,和你服务是否部署在VPC内部没有关联:
- 开启TLS是DocumentDB的默认安全基线,即使是VPC内部的流量,也可能存在中间人攻击风险(比如ARP欺骗、流量劫持等),TLS机制可以保证你连接的是官方真实的DocumentDB集群,而非伪造的恶意服务。
- PEM文件是AWS签发DocumentDB服务证书的根CA凭证,没有这个根证书,你的客户端无法校验服务端返回的证书是否合法,默认就会终止连接,这一校验逻辑和网络位置无关。
问题3:AWS GovCloud中创建的DocumentDB集群,需要单独的PEM文件吗?
AWS GovCloud属于合规隔离的特殊区域,使用独立的CA根证书体系,通用区域的证书包没有包含GovCloud对应的根证书,你需要单独下载适配GovCloud环境的PEM文件使用,用通用区域的证书会直接校验失败。
问题4:使用AWS Linux 2实例部署服务,还需要使用PEM文件吗?
仍然需要。AWS Linux 2的系统默认信任证书库中没有收录DocumentDB专属的CA根证书,不管你是直接在EC2实例部署服务,还是在Fargate中使用AWS Linux 2作为基础镜像,都需要额外配置对应的PEM文件才能通过TLS校验,除非你手动关闭了连接的TLS验证选项。
内容的提问来源于stack exchange,提问作者Teebs
相关产品推荐
相关产品推荐

