【问题标题】:Convert an existing http relay server currently deployed as a windows service to handle https requests将当前部署为 Windows 服务的现有 http 中继服务器转换为处理 https 请求
【发布时间】:2018-10-15 19:04:29
【问题描述】:

我在 VB.NET 中有一个自定义编码的中继服务器应用程序,该应用程序当前部署为 Windows 服务。

它使用 Tcp 侦听器接受来自客户端的 HTTP Web 请求,解析请求并通过套接字通信将其转发到另一个远程托管服务。然后,我的中继服务器将服务的结果作为 http 响应发送回原始客户端。

到目前为止,此功能运行良好,但我现在想升级我的中继服务器以接受 HTTPS 请求而不是 http。 我不确定如何在这种情况下继续前进。

我研究并找到了以下 2 个选项,但我不确定哪个更好和可行? 一,我明确升级我当前的代码以处理 https 握手、证书验证等(如果是,如何?)或第二个选项,我当前的应用程序是否可以托管在 IIS 上来处理这种情况(如果是,如何)?

提前致谢。

【问题讨论】:

    标签: vb.net sockets iis https windows-services


    【解决方案1】:

    一种可能的解决方案是使用带有应用程序请求路由 (ARR) 的 IIS 作为服务前面的反向代理(这样就无法在 IIS 中“托管”您的服务)。

    您可以使用证书和合适的 HTTPS 绑定设置 IIS/ARR,然后配置 ARR 以将 HTTPS 请求代理到您侦听 HTTP 的服务上。无需更改您的服务代码。

    看看下面的例子:https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/reverse-proxy-with-url-rewrite-v2-and-application-request-routing

    在您的情况下,您在端口 80 上侦听的服务与在 IIS 中运行的网站没有什么不同。上面的例子比你需要的更复杂(因为它基于 URL 的前缀反向代理 2 个网站),但它为你提供了一个起点。

    强制所有流量使用 HTTPS 的进一步可能步骤是更改您的服务使用的端口(例如改为 8080 而不是 80),然后设置 IIS 处理端口 80 以执行重定向到 443,然后使用 443和 ARR 将您的流量代理到 8080.2 上的服务

    【讨论】:

      猜你喜欢
      • 2011-12-04
      • 2022-09-23
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 2020-05-03
      • 1970-01-01
      相关资源
      最近更新 更多