我已经成功安装了kong网关,用于通过上游向多个目标(应用服务器)进行负载均衡的API。
现在,我的应用服务器有一个自签名证书,ssl握手应该在kong和目标之间失败。我推断kong不会验证上游证书。
经过一些研究,我发现nginx的ssl_proxy on;
配置能够正确完成。
我想在openresty中找到相同的内容,以便验证上游的ssl证书。
解决方案可能是修改kong nginx配置以激活ssl_proxy
,但在同一个实例上使用不同的目标会很糟糕。
答案 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。当前正在尝试为此找到解决方案...