【问题标题】:Use aws ca path certificates in mqtt在 mqtt 中使用 aws ca 路径证书
【发布时间】:2025-11-25 14:10:01
【问题描述】:

我需要知道如何在 node.js ssl 选项中指定存在于 aws 证书管理器中的证书。我需要在 mqtt 的实现中使用该证书。

现在我已经创建了自签名证书,但是那个证书出错了

Error: self signed certificates

一旦我将选项rejectUnauthorized 设置为false,它就可以工作,但如果设置为true,它会引发错误。

mqtt.connect('mqtts://domainname.com', {
                    clientId: clientId,
                    connectTimeout: config.connectTimeout,
                    rejectUnauthorized: false,
                    key: KEY,
                    cert: CERT,
                    ca: TRUSTED_CA
          });

我需要知道的是

  1. rejectUnauthorized 是删除错误的唯一方法:自签名证书吗?
  2. 我们如何在上述选项中使用 aws 证书管理器证书(作为通用 capath)?

【问题讨论】:

    标签: node.js amazon-web-services ssl mqtt


    【解决方案1】:

    您不能将来自 AWS Certificate Manager (ACM) 的 SSL 证书用于您自己的服务器。您只能将托管证书用于与 ACM 集成的受支持的 AWS 托管服务。支持的服务包括 Elastic Load Balancer、CloudFront 和 API Gateway。

    AWS 还有另一项服务,AWS 证书管理器私有证书颁发机构。您可以使用此服务创建和管理自己的证书。您支付月费(目前为 400.00 美元)和每份证书费用(0.75 美元)。

    【讨论】:

    • 这意味着AWS中没有用于公共ssl证书的默认证书?这样做的原因是我需要使用mqtts,并且会有很多经纪人,所以rejectUnauthorized:false可以使用吗?
    • 没有默认 SSL 证书这样的东西。 SSL 证书绑定到names,例如域名或机器名。您可以拥有诸如*.google.com 之类的通配符证书,但不能拥有*.com。查看让我们加密。他们的证书是免费的,并且支持通配符,例如*.mydomain.com
    • 我会研究letsencrypt。由于有许多经纪人将使用我们的系统,是否可以使用 rejectUnauthorized: false 进行测试?
    • 我还有一个问题在我当前的机器上,我使用 openssl 创建了证书,用于在我的机器上进行测试,使用 mqttfx 我可以成功运行它,但使用上面代码中提到的 node.js 我得到错误:自签名证书,并且使用 mosquitto cmd 出现 TLS 错误,您能告诉我这些的解决方案吗?
    • 我会得到一个有效的受支持的 SSL 证书并放弃尝试处理错误。
    【解决方案2】:

    rejectUnauthorized 是删除错误的唯一方法:自签名证书吗?

    如果您想消除错误,您可以让受信任的 CA 签署您的证书(您可以通过 Let's Encrypt 进行此操作)。

    或者,如果您只是为了测试目的而需要删除错误,那么您可以设置“ca”参数以匹配自签名证书。这记录在https://nodejs.org/api/tls.html#tls_tls_createsecurecontext_options

    对等方的证书必须可链接到服务器信任的 CA,才能对连接进行身份验证。当使用不能链接到知名 CA 的证书时,必须将证书的 CA 明确指定为受信任的,否则连接将无法进行身份验证。如果对等方使用的证书不匹配或链接到默认 CA 之一,请使用 ca 选项提供对等方的证书可以匹配或链接到的 CA 证书。 对于自签名证书,证书是自己的 CA,必须提供。

    【讨论】:

    最近更新 更多