2015-10-07 172 views
0

我使用resty.http module。但是使用了这些数据。对于通常的http或https没有验证的所有作品。lua nginx ssl证书设置

local http = require("resty.http").new() 
local res, err = http:request_uri(url, { 
    method = method, 
    headers = headers, 
    body = body, 
    ssl_verify = false 
}) 

但是,如果我不使用ssl_verify它不会与错误的工作:

lua ssl certificate verify error: (20: unable to get local issuer certificate),

我发现使用谷歌认为lua_ssl_trusted_certificate可以提供帮助。但我不知道它如何提供帮助。我已经测试过这样的命令:lua_ssl_trusted_certificate /etc/ssl/certs/GlobalSign_Root_CA.pem;但它对我没有帮助。

如何以正确的方式验证https?

+0

证书通常是'.crt'文件 – hjpotter92

+0

@ hjpotter92,lua_ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt;给出相同的错误行为 – Vyacheslav

回答

0

在你nginx.conf您需要配置

lua_ssl_verify_depth 2; 
lua_ssl_trusted_certificate /pathto-ca-certs.pem; 

在我的情况,我的服务器调用出来只有一个外部HTTPS端点。所以我用完整的链导出证书(通过Firefox中的导出证书导出)并导入到PEM文件中。这是我上面提供的.pem文件。

我使用lua-resty-http进行https调用,并且工作正常。您可以使用像wireshark/fiddler这样的工具来监控传出连接,以查看请求是否以您想要的方式进行。