SSL/TLS 和 X.509 证书
Overview
在本指南中,您可以了解如何保护 MongoDB Kafka Connector 工作线程和 MongoDB cluster 之间的通信。
要保护连接,必须执行以下任务:
注意
如果您在MongoDB Atlas上托管MongoDB 集群,或者您的集群没有明确要求证书,则已经可以安全地进行通信,无需遵循本指南中的步骤。
先决条件
本指南要求您事先了解以下概念:
在工作线程上存储证书
将证书存储在密钥库和信任库中,以保护运行connector工作实例的每台服务器的证书档案。
密钥库
您可以使用密钥库来存储私钥和身份证书。 密钥库使用密钥和证书向外部主机验证客户端的身份。
如果您的 SSL/TLS 配置需要客户端证书才能连接到工作线程实例,请生成安全私钥并包含与中间 CA 捆绑的客户端证书。 然后,使用以下 openssl
命令将此信息存储在密钥库中,生成 PKCS 12 文件:
openssl pkcs12 -export -inkey <your private key> \ -in <your bundled certificate> \ -out <your output pkcs12 file>
信任库
您可以使用信任库来存储来自 CA 的证书。 信任库使用证书来识别客户端信任方。 这些证书的一些示例包括根 CA、中间 CA 和 MongoDB 集群的最终实体证书。
使用以下keytool
命令将您信任方的证书导入信任库:
keytool -import -trustcacerts -import -file <your root or intermediate CA>
如果您的 SSL/TLS 配置需要 MongoDB cluster 的最终实体证书,请使用以下命令将其导入信任库:
keytool -import -file <your server bundled certificate> -keystore <your keystore name>
有关如何设置用于测试目的的客户端密钥库和信任库的更多信息,请参阅用于测试的 OpenSSL 客户端证书。
将档案添加到connector
connector工作线程处理KAFKA_OPTS
环境变量中的 Java虚拟机(JVM)选项。环境变量包含密钥库和信任库的路径和密码。
导出KAFKA_OPTS
变量中的以下 Java虚拟机(JVM)选项:
export KAFKA_OPTS="\ -Djavax.net.ssl.trustStore=<your path to truststore> \ -Djavax.net.ssl.trustStorePassword=<your truststore password> \ -Djavax.net.ssl.keyStore=<your path to keystore> \ -Djavax.net.ssl.keyStorePassword=<your keystore password>"
当工作线程处理 Java虚拟机(JVM) 选项时,connector会尝试使用 SSL/TLS 协议以及密钥库和信任库中的证书进行连接。