是 CA 的 SSL MQTT 所需的密钥和证书

is key and cert required with CA for SSL MQTT

当我尝试连接到 elixir 中的库代理时,我使用 CA、证书和密钥启动了带有 SSL 的 mosquitto 代理 tortoise 要求我将密钥和证书与 certifi 放在一起。当我查看 certifi 时,它显示了 CA 列表,我们可以使用这个自签名的吗?

Tortoise.Supervisor.start_child(
    client_id: "smart-spoon",
    handler: {Tortoise.Handler.Logger, []},
    server: {
      Tortoise.Transport.SSL,
      host: host, port: port,
      cacertfile: :certifi.cacertfile(),
      key: key, cert: cert
    },
    subscriptions: [{"foo/bar", 0}])

我应该把密钥和证书和客户端放在一起吗??我认为这非常糟糕,因为密钥是秘密的,请帮助我了解它是如何工作的

对于 "normal" SSL 连接,客户端想要证明代理是他们声称的客户端,应该只需要一个 CA 证书列表来检查代理提供的证书。对于这种情况,您通常应该将 keycert 字段留空

如果您正在执行相互验证的 SSL,其中客户端也向经纪人证明他们是谁,那么您需要向客户端提供它自己的 certificate/key(而不是来自经纪人的 certificate/key但可能[但不要求]由同一 CA 签名)