【问题标题】:"tlsv1 alert unknown ca" in node.jsnode.js 中的“tlsv1 警报未知 ca”
【发布时间】:2014-12-25 15:06:05
【问题描述】:

在过去的 5 天里,我的应用日志中有很多奇怪的错误。这是堆栈跟踪:

Error: 140428615087936:error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:../deps/openssl/openssl/ssl/s3_pkt.c:1234:SSL alert number 48 
  at CleartextStream._pusher (tls.js:674:24) 
  at SlabBuffer.use (tls.js:217:18) 
  at CleartextStream.CryptoStream._push (tls.js:501:33) 
  at SecurePair.cycle (tls.js:898:20) 
  at EncryptedStream.CryptoStream.write (tls.js:285:13) 
  at Socket.ondata (stream.js:38:26) 
  at Socket.EventEmitter.emit (events.js:96:17) 
  at TCP.onread (net.js:397:14)

所有这些错误都是一样的。 Node.js 版本是 0.8.24。 有人知道为什么会这样吗?

【问题讨论】:

  • 如果您必须继续使用 v0.8,您是否尝试至少升级到 v0.8.28?
  • @mscdex 这是个好主意。我将尝试将节点升级到 v0.8.28。
  • 请提供相关代码您要连接的服务器,以便我们测试服务器配置。
  • @jww 抱歉,我不能提供更多细节。
  • @schfkt - 这可能意味着该问题应该被关闭为无法复制。我说“可以”是因为社区必须这样做。如果社区由于缺少信息而决定不对问题采取行动,那么您可能会得到答案。 (无关个人。只是给你可能的结果)

标签: node.js openssl


【解决方案1】:

我们已经解决了这个问题。发生这种情况是因为我们的其他 API 服务器(node.js 与之通信)上的 SSL 证书配置错误。

要检查您的 SSL 配置,您可以使用 SSL Labs 的one service。在我们的例子中,有这个警告(不完整的链问题):

要修复它,您应该执行以下操作(摘自nginx docs):

某些浏览器可能会抱怨由知名人士签署的证书 证书颁发机构,而其他浏览器可能会接受证书 没有问题。发生这种情况是因为发证机构已签署 服务器证书使用的中间证书不是 存在于知名可信证书的证书库中 与特定浏览器一起分发的权限。在这个 如果当局提供了一系列链式证书, 应该连接到签名的服务器证书。服务器 证书必须出现在链式证书之前 合并文件:

$ cat www.example.com.crt bundle.crt > www.example.com.chained.crt

应在 ssl_certificate 指令中使用生成的文件:

server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.chained.crt;
    ssl_certificate_key www.example.com.key;
    ...
}

关键部分是证书文件的串联。在我们进行更改后,node.js 应用程序中的错误就消失了。

【讨论】:

    猜你喜欢
    • 2021-11-20
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 2018-04-10
    • 1970-01-01
    相关资源
    最近更新 更多