【问题标题】:Is HTTPS option required when a remote REST API is HTTPS?远程 REST API 为 HTTPS 时是否需要 HTTPS 选项?
【发布时间】:2015-06-30 20:03:50
【问题描述】:

我想让我的 Bluemix 应用程序 (Liberty) 访问 SSL 中提供的远程 REST API。我需要使用网关的“TLS Mutual Auth option”。但是现在为了弄清楚在 SSL 中提供远程 REST API 时是否必须使用“HTTPS 选项”,我测试了两种情况,HTTPS 和 TLS Server Auth。 HTTPS 案例成功,TLS Server Auth 失败。

当远程 REST API 为 HTTPS 时,是否需要 HTTPS 选项才能在 SecureGatewayClient 重写 HTTP 标头?如果这是收集,我们不能使用 TLS 相互验证来保护网关吗?

1. HTTPS 选项:成功
此案取得成功。

2。 TLS 服务器身份验证选项:失败
本案以失败告终。 我只是将网关的选项从“HTTPS”更改为“TLS 服务器身份验证”,因此原因不是配置错误。

[Bluemix Liberty 应用程序的日志]
2015-07-01T04:17:58.64+0900 [RTR] OUT sampleapp.mybluemix.net
[ 30/06/2015:19:17:49 +0000] "GET /XXX HTTP/1.1" 200
2015-07-01T04:17:58.66+0900 [App/0] OUT res:404 Not Found: 请求的路由 ('cloudhost:cloudport') 不存在。

[SG 客户日志]
[2015-06-30 02:37:38.144] [INFO] 正在建立连接 #32 到 远程 REST API 的主机:443 [2015-06-30 02:37:38.227] [INFO] 连接 #32 已建立到 远程 REST API 的主机:443 [2015-06-30 02:37:52.535] [INFO] 到远程 REST API 主机的连接 #32:443 已关闭

【问题讨论】:

    标签: ibm-cloud websphere-liberty secure-gateway


    【解决方案1】:

    针对您帖子的这一部分:

    Is the HTTPS option required when a remote REST API is HTTPS in order to rewrite the HTTP header at SecureGatewayClient ?
    

    是的,如果连接到 https 远程 rest api,则需要 HTTPS。此外,如果您要连接到后端 HTTPS 服务器,则需要启用客户端 TLS。

    以下链接提供了有关在 Bluemix UI 中保护网关的更多信息:

    https://www.ng.bluemix.net/docs/services/SecureGateway/sg_022.html#sg_009

    针对您帖子的这一部分:

    Can't we protect the gateway with TLS Mutual Auth?
    

    是的,您可以使用 TLS:Mutual Auth,但您还需要上传自己的证书或选择自动生成以自动创建您可以下载的自签名证书/密钥对连同服务器证书。

    要使用通过选择 TLS:Mutual Auth 生成的证书,您还需要配置您的应用程序端 TLS 连接,可能还需要配置您的 客户端 TLS 连接。在客户端和 REST API 之间启用 TLS 安全性与应用程序端 TLS 是分开的。应用程序端 TLS 保护您的示例应用程序和定义的安全网关客户端之间的访问。您可以使用独立于应用程序端 TLS 的客户端 TLS 连接,反之亦然,或者一起使用以提供从示例应用到 REST API 的完整安全性。

    有关访问安全网关的更多信息,请参阅以下链接:

    https://www.ng.bluemix.net/docs/services/SecureGateway/sg_023.html

    【讨论】:

    • 感谢您的回复。您的答案似乎与下面亚历克斯的答案不同。 stackoverflow.com/questions/31150293/…
    • 如果您尝试连接的本地应用程序是 HTTPS REST API,您将需要启用客户端 TLS 并选择 HTTP/HTTPS 作为协议。选择 HTTP/HTTPS 作为协议将为您重写主机标头,然后客户端 TLS 将确保客户端与您的本地 REST API 之间的连接是 TLS,而不是 TCP。
    • 请看我上面修改过的帖子。感谢 Alex 指出“启用客户端 TLS”,我忘记了。
    • HTTPS +“启用客户端 TLS”运行良好。但是,TLS: Server Side + "enable client TLS" 出错了。当远程资源是 HTTPS REST API 时,协议必须是 HTTPS ,而不是 TLS: Server Side 或 TLS: Mutual Auth 吗?
    • 如果远程资源是 HTTPS REST API,您需要在目标上将协议设置为 HTTP 或 HTTPS。这是因为 TLS 协议不会尝试重写主机头。
    猜你喜欢
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2016-05-12
    • 2017-06-07
    • 2018-02-09
    • 1970-01-01
    相关资源
    最近更新 更多