Kong - 验证上游ssl(ssl_proxy on)

时间:2017-11-02 12:28:37

标签: nginx lua openresty kong

我已经成功安装了kong网关,用于通过上游向多个目标(应用服务器)进行负载均衡的API。

现在,我的应用服务器有一个自签名证书,ssl握手应该在kong和目标之间失败。我推断kong不会验证上游证书。

经过一些研究,我发现nginx的ssl_proxy on;配置能够正确完成。

我想在openresty中找到相同的内容,以便验证上游的ssl证书。

解决方案可能是修改kong nginx配置以激活ssl_proxy,但在同一个实例上使用不同的目标会很糟糕。

3 个答案:

答案 0 :(得分:2)

我原本希望你这样做:让你的后端服务在联系你的服务时验证Kong有一个特定的SSL证书,这样实际上只有Kong可以连接到服务,结果,任何API客户都必须通过Kong进行连接。

我们使用Kong 0.11.0为wicked.haufe.io做了这个,你可以在这里找到一个合适的nginx_conf.lua文件:https://github.com/apim-haufe-io/wicked.kong/blob/master/templates/nginx_kong.lua

这里有趣的是:

proxy_ssl_certificate /root/proxy-cert.pem;
proxy_ssl_certificate_key /root/proxy-key.pem;

其中指定了nginx用于代理调用后端服务的证书和密钥。这是由Kong注意的。

通过检查我们为wicked.haufe.io的Kong docker图像做了什么,你应该能够适应你自己的需要;另一个有趣的位是startup.sh,其中证书/密钥从环境变量中提取并添加到/root/proxy-...pem文件中。

希望有帮助,马丁。

答案 1 :(得分:0)

请注意kong配置中对client_ssl的评论:

If 'client_ssl' is enabled, the absolute path to the client SSL certificate for the 'proxy_ssl_certificate directive. Note that this value is statically defined on the node, and currently cannot be configured on a per-API basis.

目前无法实现。

答案 2 :(得分:0)

通过设置以下环境变量,我设法使它与Kong 0.14.x一起使用: KONG_NGINX_HTTP_PROXY_SSL_VERIFY:“开启” KONG_NGINX_HTTP_PROXY_SSL_TRUSTED_CERTIFICATE:“ / mnt / certs / ca.crt” (将后者调整为指向您的自定义CA证书文件。)

这使用前缀“ KONG_NGINX_HTTP_”设置任意的nginx'http'设置。

这似乎不适用于Kong1.0.x。当前正在尝试为此找到解决方案...