针对Facebook-messenger bot应用程序设置webhhok的自签名证书问题

时间:2016-07-25 10:53:12

标签: node.js windows openssl ssl-certificate facebook-messenger

当我尝试为facebook messenger bot设置webhook网址时出现此错误:

  

无法验证网址。回调验证失败,出现以下错误:curl_errno = 60; curl_error = SSL证书问题:证书链中的自签名证书; HTTP状态代码= 200; HTTP消息=已建立连接

首先我创建了证书。

1)我使用了this config file并创建了certificete权限:

openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-crt.pem

2)我生成了私钥

openssl genrsa -out server-key.pem 4096

然后我使用this configuration file

生成证书签名请求
openssl req -new -config server.cnf -key server-key.pem -out server-csr.pem

之后我执行了命令:

openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -in server-csr.pem -CA ca-crt.pem -CAkey ca-key.pem -CAcreateserial -out server-crt.pem

我没有在配置文件中输入任何属性。 然后通过this way

在Windows服务器上安装我的证书

在我的Node.js应用程序中,我使用以下选项创建了https服务器:

var server = https.createServer({
    ca: fs.readFileSync('sslcert/ca-crt.pem', 'utf8'),
    key: fs.readFileSync('sslcert/server-key.pem', 'utf8'),
    cert: fs.readFileSync('sslcert/server-crt.pem', 'utf8')
}, app); server.listen(port);

当我试图设置webhook时,我遇到了上述错误。如果我在浏览器上打开我的webhook网址

NET::ERR_CERT_AUTHORITY_INVALID

如果忽略此错误应用程序控制台显示状态200

2 个答案:

答案 0 :(得分:1)

没错,URL无法验证,因为您的自签名证书位于证书链中。这是预期的行为。

自签名证书只适用于加密连接,但他们没有传达证明第三方验证的另一个重要部分,即提供者是他们所说的人,这就是验证。

您需要获取带有此验证的证书才能验证您的回调网址。您可以从信誉良好的供应商那里购买一个,或者您可以使用像StartSSL这样的服务免费获得一个服务(我没有以任何方式与他们联系,我只是有很好的经验它们)。

答案 1 :(得分:1)

您关注THIS并使用letsencrypt之后您将获得这四个文件 1.cert.pem
2.chain.pem
3.fullchain.pem
3.privkey.pem
chain.pem 是CA文件。

Here我还写了一个小代码片段来使用它们。