升级到6.6.3时,我遇到了特定HTTPS get调用的问题。我不确定这是否真的如此,但似乎通过新的安全增强功能,似乎meteor正在积极尝试验证从中返回请求的CA.
我得到的错误是:UNABLE_TO_VERIFY_LEAF_SIGNATURE - 当我尝试登录SSO服务器时,我得到了这个。
在联系服务器管理员之后,他们已经将me.pem文件传递给我,流媒体服务器可以使用该文件来验证证书。我已经尝试了将它放入node.js的每一种方式配置流星服务器运行无济于事。所以我的问题有两个:
答案 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-----
请注意!您需要像我上面显示的那样堆叠它们,证书按顺序降序。如果你以其他方式做到这一点,你可能会因为奇怪的错误而失败。