Bluemix和nginx配置中的SSL

时间:2017-01-17 17:37:15

标签: ssl nginx https ibm-cloud

我在Bluemix中添加了一个证书,发布了以下帖子:https://www.ibm.com/blogs/bluemix/2014/09/ssl-certificates-bluemix-custom-domains/

我可以在域标签中看到证书,这是我上传的证书。

现在我有一个运行nginx的容器,因为我们将它用作反向代理。以前它正在处理SSL配置,但现在它已经直接在Bluemix中完成,我们只想接受https请求,而不需要配置证书。

我们所做的是将http请求转发给https,就像帖子中建议的那样(虽然解释了如何为node.js做这件事)。我们得到这样的东西:

server {
    listen       80;
    server_name *hostname.domain*;
    return 301 https://$http_host$request_uri;
}

在443部分,我们只听,没有ssl部分:

server {
    listen       443;

    server_name *host.domain*;

    *other stuff for reverse proxy*
}

但是,在尝试访问它时,我在chrome中遇到一般错误:ERR_SSL_PROTOCOL_ERROR

Firefox提供了更多信息:

An error occurred during a connection to *host.domain*. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG

当我尝试从命令行检查证书时,我没有得到任何证书。

openssl s_client -connect *host.domain*:443
CONNECTED(00000003)
140250419918480:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:782:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 289 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1484673167
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

nginx日志中没有错误,我无法判断Bluemix方面或nginx配置中的问题,或者nginx是否允许这种配置,它必须处理https请求,没有证书配置......

有人有任何想法吗?

非常感谢。

问候。

2 个答案:

答案 0 :(得分:0)

如果您希望NGINX通过SSL,则必须使用stream模块。

答案 1 :(得分:0)

感谢您的回答。我无法检查您的解决方案,但我同时与IBM的技术专家交谈,这是我学到的。

关于SSL pass-thru,我们需要配置每个组件(在nginx后面)来处理SSL,因此它似乎更难管理。我不是专家,所以我只是报告我在这一点上的答案。

首先,通过删除我们的nginx容器的公共IP地址,我们想要的应该是可行的。 然后,通过创建从BM负载均衡器到我们的nginx容器的路由,我们应该解决这个问题。然后路由将配置为将端口443转发到端口80上的nginx(因为容器不公开,不需要处理80 AND 443)。

但是,Bluemix只允许路由容器组(现在?)。不幸的是,我们使用的docker-compose不允许(现在?)在BlueMix上创建容器组。

所以最好的解决方案是将ssl配置放回nginx中。证书在BlueMix域和nginx容器上。它工作正常,所以我们只是改进更新证书的程序,等到有需要,或者采用新方法......

ķ。