当我尝试为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
生成证书签名请求
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
答案 0 :(得分:1)
没错,URL无法验证,因为您的自签名证书位于证书链中。这是预期的行为。
自签名证书只适用于加密连接,但他们没有传达证明第三方验证的另一个重要部分,即提供者是他们所说的人,这就是验证。
您需要获取带有此验证的证书才能验证您的回调网址。您可以从信誉良好的供应商那里购买一个,或者您可以使用像StartSSL这样的服务免费获得一个服务(我没有以任何方式与他们联系,我只是有很好的经验它们)。
答案 1 :(得分:1)
您关注THIS并使用letsencrypt之后您将获得这四个文件
1.cert.pem
2.chain.pem
3.fullchain.pem
3.privkey.pem
chain.pem 是CA文件。
Here我还写了一个小代码片段来使用它们。