Overview
在本指南中,您可以了解如何保护 MongoDB Kafka Connector 工作线程和 MongoDB cluster 之间的通信。
要保护连接,必须执行以下任务:
注意
If you host your MongoDB cluster on MongoDB Atlas or your cluster does not explicitly require certificates, you can already communicate securely and do not need to follow the steps in this guide.
先决条件
本指南要求您事先了解以下概念:
在工作线程上存储证书
将证书存储在密钥库和信任库中,以保护运行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 协议以及密钥库和信任库中的证书进行连接。