如何为 Amazon EMR 生成 trustedCertificates.pem 和 certificateChain.pem 文件?

How do I generate a trustedCertificates.pem and certificateChain.pem file for Amazon EMR?

我正在尝试加密 EMR 节点之间传输的 TLS 流量。 AWS网站上的示例使用的是自签名证书。

因为这一切都在我的私人网络中,所以我已经生成了一个带有私钥的根 CA 证书,该证书受到严格保护。然后我有一个可以执行密钥加密、数字签名和服务器身份验证的派生证书。

我们称根CA证书为A,派生证书为B。

EMR 说我需要将一个 zip 文件上传到 s3,其中包含 2 个必需文件和一个可选文件:

对于 privateKey.pem,我假设我可以只使用与证书 B 关联的私钥。

  1. 对于certificateChain.pem,我需要证书B的内容和证书A的内容还是只需要证书A的内容?
  2. 对于 trustedCertificates.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,可以使用单个自签名证书。原因是您可以完全控制使用该证书的系统。如果系统的任何部分提供 [​​=38=] 访问权限,您将不想使用自签名证书。

让 OP 感到困惑的一个项目是可信证书和证书链之间的区别。在他的示例中,由于它们只是根证书而不是中间证书,因此受信任和链是同一项目。只有当他创建了另一个用于签署上一个证书的签名证书时,证书链才会不同(会有根证书和签名证书)。