【问题标题】:stompit is nodejs module failed to connect with error ""Unable to verify the first certificate"stompit 是 nodejs 模块无法连接并出现错误““无法验证第一个证书”
【发布时间】:2019-10-03 16:48:33
【问题描述】:

我正在使用 stompit 模块连接到 AMQ。如果我将 ssl 设置为 true,那么它会失败并出现错误“无法验证第一个证书”。 如果我将 rejectUnauthorized 设置为 false 但代码不会从它刚刚连接的 AMQ 读取任何消息,它会起作用。

我尝试通过设置以下属性来使用证书,但得到相同的错误。

ssl: true,
    key:fs.readFileSync('path'),
    cert:fs.readFileSync('path'),
    ca: [fs.readFileSync('path')],

【问题讨论】:

    标签: node.js stomp


    【解决方案1】:

    如果您与 AMQ 的 TLS (SSL) 连接是通过反向代理(例如 Traefik),请确保在选项中传递 servername 属性。这可确保反向代理根据您尝试访问的服务器名称提供正确的证书。

    从 Stompi 的 connect 函数的code listings 可以看出使用了 NodeJS TLS 模块:

    if ('ssl' in options) {
      if (typeof options.ssl === 'boolean') {
        if (options.ssl === true) {
          transportConnect = tls.connect;
        }
      }
    

    传递给 Stompi 的连接函数的选项对象将被传递给 tls.connect。 tls.connect 的 Node 文档提到使用 servername 来确保启用 SNI:

    与 https API 不同,tls.connect() 不启用 SNI(服务器 Name Indication) 扩展名,这可能会导致某些服务器 返回不正确的证书或完全拒绝连接。 要启用 SNI,请在主机之外设置 servername 选项。

    【讨论】:

      猜你喜欢
      • 2015-10-18
      • 2020-03-29
      • 2021-12-14
      • 2019-02-20
      • 1970-01-01
      • 2022-09-25
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多