SSL/TLS 和 X.509 证书
概述
在本指南中,您可以学习如何确保您的MongoDB Kafka Connector工作进程与MongoDB集群之间的通信安全。
为确保连接安全,您必须执行以下任务:
注意
如果您在MongoDB Atlas上托管您的MongoDB集群或您的集群没有明确要求使用证书,您已经可以安全地进行通信,无需遵循本指南中的步骤。
先决条件
本指南需要以下概念的先验知识:
在Worker上存储证书
将您的证书存储在 密钥库 和 信任库 中,以保护您在每个运行连接器工作进程实例的服务器上的证书凭据。
密钥库
您可以使用密钥库来存储私钥和身份证书。密钥库使用密钥和证书来验证客户端的身份,以便外部主机。
如果您的SSL/TLS配置需要客户端证书来连接到您的worker实例,请生成一个安全的私钥,并包含与中间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集群的端实体证书,请使用以下命令将其导入信任库
keytool -import -file <your server bundled certificate> -keystore <your keystore name>
有关如何设置用于测试目的的客户端密钥库和信任库的更多信息,请参阅测试用的OpenSSL客户端证书。
将凭据添加到连接器
连接器工作进程从您的 KAFKA_OPTS
环境变量中处理 JVM 选项。该环境变量包含您的密钥库和受信任库的路径和密码。
在您的 KAFKA_OPTS
变量中导出以下 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>"
当工作进程处理 JVM 选项时,连接器将尝试使用 SSL/TLS 协议和密钥库中的证书与受信任库进行连接。