【问题标题】:SSL in Bluemix and nginx configurationBluemix 和 nginx 配置中的 SSL
【发布时间】:2017-01-17 17:37:14
【问题描述】:

我在 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 请求的配置,而没有证书配置...

有人知道吗?

非常感谢。

问候。

【问题讨论】:

标签: ssl nginx https ibm-cloud


【解决方案1】:

如果你想让 NGINX 通过 SSL,你必须使用 stream 模块。

【讨论】:

    【解决方案2】:

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

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

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

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

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

    K.

    【讨论】:

      猜你喜欢
      • 2015-02-17
      • 2018-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      • 2021-07-30
      • 2014-12-17
      • 1970-01-01
      相关资源
      最近更新 更多