0

当我升级到 6.6.3 时,我遇到了特定 HTTPS 获取调用的问题。我不确定这是否真的是真的,但似乎通过新的安全增强功能,meteor 似乎正在积极尝试对从中返回请求的 CA 进行身份验证。

我得到的错误是:UNABLE_TO_VERIFY_LEAF_SIGNATURE - 当我尝试通过 SSO 服务器登录时得到这个。

在与服务器管理员联系后,他们已将流星服务器可用于验证证书的 ca.pem 文件传递​​给我。我已经尝试了各种方法将其放入流星服务器运行的 node.js 配置中,但无济于事。所以我的问题有两个:

  1. Meteor 在尝试从服务器验证证书时会做什么?
  2. 如何将正确的 CA 提供给 Meteor 以便正确进行身份验证?
4

2 回答 2

1

你没有提供足够的信息,但我以前见过这个。如果您有一个运行 0.6.6.3 的流星服务器,并且您正尝试使用 node-ddp 之类的东西从 nodejs 脚本访问它?如果是这样,并且此错误作为套接字错误发出,则:

如果是这种情况,您不仅需要设置 CA 文件,还需要设置中间文件。Meteor 本身通常无法做到这一点,您需要一个代理来将 https 转换为 http,该代理将位于流星前面。

您拥有通常需要的 3 个文件之一。CA、您的密钥和中间链。通常UNABLE_TO_VERIFY_LEAF_SIGNATURE会出现,因为您没有指定链。

Meteor 不直接采用 CA 或处理 SSL。你必须使用你自己的代理,它可以是 nginx 之类的其他东西或类似这样的脚本。

如果您使用meteor deploy它应该没问题,只要您的域是*.meteor.com. 如果您使用自己的域,则域签名将不匹配,如果您想使用 SSL,则必须使用自己的主机

于 2013-12-12T20:02:13.523 回答
0

Akshat提供的答案是正确的。您需要提供中间证书。

UNABLE_TO_VERIFY_LEAF_SIGNATURE错误是 Node 告诉您它没有完整的信任链。如果出于测试目的你想解决这个问题,你可以使用环境变量NODE_TLS_REJECT_UNAUTHORIZED=0和 Node/Meteor 将忽略证书问题。

为了进一步澄清一些事情,例如,如果您使用 RapidSSL,那么您需要从这里获取中间证书。然后您需要将您的证书和中间证书附加在一起:

-----BEGIN CERTIFICATE-----
My Cert (issued by RapidSSL)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
RapidSSL Intermediate Cert (RSA SHA-1 SSL Certificates SO26462)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
RapidSSL Intermediate Cert (RSA SHA-2 SSL Certificates SO26457)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
RapidSSL Intermediate Cert (RSA SHA-2 SSL Certificates SO28351)
-----END CERTIFICATE-----

笔记!您需要将它们堆叠起来,就像我在上面显示的证书按降序排列一样。如果您以其他方式执行此操作,您可能会因奇怪的错误而失败。

于 2015-09-16T18:28:47.290 回答