在Meteor.js上定义证书颁发机构

时间:2013-12-12 18:16:33

标签: node.js ssl meteor certificate ca

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

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

在联系服务器管理员之后,他们已经将me.pem文件传递给我,流媒体服务器可以使用该文件来验证证书。我已经尝试了将它放入node.js的每一种方式配置流星服务器运行无济于事。所以我的问题有两个:

  1. 尝试从服务器验证证书时Meteor做了什么?
  2. 如何将正确的CA提供给Meteor,以便正确验证?

2 个答案:

答案 0 :(得分:1)

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

如果是这种情况,您不仅需要设置CA文件,还需要设置中间文件。流星本身一般不能这样做你需要一个代理来将https转换为http,它将位于流星前面。

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

Meteor不会直接使用CA或处理SSL。你必须使用你自己的代理,这可能是像nginx或脚本like this one

如果您使用的是meteor deploy,只要您的网址格式为*.meteor.com,就可以了。如果您使用自己的域名,域名签名将不匹配&如果你想使用SSL,你必须使用自己的主机

答案 1 :(得分:0)

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

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

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

-----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-----

请注意!您需要像我上面显示的那样堆叠它们,证书按顺序降序。如果你以其他方式做到这一点,你可能会因为奇怪的错误而失败。