我正在尝试加密EMR节点之间传输的TLS流量。 AWS网站上的示例使用自签名证书。
因为这全都在我的专用网络中,所以我生成了带有严格保护的私钥的根CA证书。然后,我获得了可以执行“密钥加密”,数字签名和服务器身份验证的派生证书。
我们将其称为根CA证书A,以及派生证书B。
EMR说,我需要将zipfile上传到s3,其中包含2个必需文件和一个可选文件:
privateKey.pem是必需的,
certificateChain.pem是必需的
和trustCertificates.pem是可选的
对于privateKey.pem,我假设我可以只使用与证书B关联的私钥。
对于certificateChain.pem,我是否需要与证书A串联的证书B的内容,还是仅需要证书A的内容?
对于trustCertificates.pem,我是否需要证书A或证书B的内容?
最佳答案
如果您按照文档遵循此AWS脚本,则会发现trustedCertificates.pem和certificateChain.pem是同一文件(通过文件副本)。
openssl req -x509 -newkey rsa:2048 -keyout privateKey.pem -out certificateChain.pem -days 365 -nodes -subj '/C=US/S=Washington/L=Seattle/O=MyOrg/OU=MyDept/CN=*.ec2.internal'
cp certificateChain.pem trustedCertificates.pem
zip -r -X certs.zip privateKey.pem certificateChain.pem trustedCertificates.pem
EMR Create Certificate Script
您正在通过创建根证书来使事情变得复杂,这是不必要的。请遵循有关在EMR上设置TLS的AWS文档:
Secure Amazon EMR with Encryption
您上载到S3的zip文件包含三个文件,privateKey.pem,certificateChain.pem和trustedCertificates.pem。其中两个是具有不同名称的同一文件。
[在对证书进行很长时间的评论后进行编辑]
创建自签名根证书时,它所签名的所有证书也是自签名的。通过验证到根的链上的每个证书来验证证书。如果根证书不受信任,则所有证书均不受信任。
AWS提供了证书管理服务,您可以在其中成为自己的CA。但是,这非常昂贵。如果您是大型公司,银行或金融机构等,则此AWS服务非常有用。
对于Amazon EMR,可以使用单个自签名证书。原因是您可以完全控制使用证书的系统。如果系统的任何部分正在提供公共访问权限,则您不想使用自签名证书。
混淆OP的一项是可信证书和证书链之间的区别。在他的示例中,由于它们仅是根证书而不是中间证书,因此受信链和链是同一项目。只有当他创建了另一个用于对最后一个证书进行签名的签名证书时,证书链才会不同(会有根证书和签名证书)。
关于amazon-web-services - 如何为Amazon EMR生成TrustedCertificates.pem和certificateChain.pem文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52227955/