gpt4 book ai didi

node.js - 在 NodeJS 中创建一个可以处理多个安全域的反向代理

转载 作者:搜寻专家 更新时间:2023-10-31 22:18:36 24 4
gpt4 key购买 nike

我正在尝试在 NodeJS 中创建反向代理。但是我一直在运行这个问题,因为即使我想为多个域提供服务,我也只能在同一端口 (443) 上提供一组证书/ key 对。我已经完成研究并不断遇到相同的障碍:

  • 可以从非安全本地源(http 本地访问和服务 https 公共(public))为多个域安全域提供服务的 Node 脚本
  • 让我通过域 header 动态服务器 SSL 证书
  • 例子:
    • https://www.someplace.com:443 将从 http://thisipaddress:8000 提取并使用 www.someplace.com 的证书和 key 文件
    • https://www.anotherplace.com:443 将从 http://thisipaddress:8080 提取并使用 www.anotherplace.com 的证书和 key 文件
    • 等等。
  • 我研究过使用 NodeJS 的 https.createServer(options, [requestListener])
    • 但此方法每个端口仅支持一对证书/ key
    • 我找不到根据域 header 动态切换证书的方法
    • 我不能要求我的人使用自定义 https 端口
    • 如果我为多个域名提供相同的 SSL 证书,即使它是安全的,我也会遇到浏览 SSL 证书错误
  • 我查看了 node-http-proxy 但据我所知它具有相同的限制
  • 我研究了 Apache mod-proxy 和 nginx,但我宁愿有一些我可以更直接控制的东西

如果有人可以向我展示使用 NodeJS 和 https.createServernode-http- 从相同端口号 (443) 为多个安全域提供服务的示例,每个域都有自己的证书代理我会感激你。

最佳答案

Let me dynamically server SSL certificates via domain header

没有域 header ,所以我猜你指的是 HTTP 请求中的主机 header 。但是,这是行不通的,因为

  • HTTPS 是封装在 SSL 中的 HTTP
  • 因此您首先必须执行 SSL 层(例如 SSL 握手,这需要证书),然后是 HTTP 层
  • 但 Host header 在 HTTP 层内 :(

在以前,每个 SSL 证书都需要一个 IP 地址。当前的浏览器确实支持 SNI(服务器名称指示),它发送已经在 SSL 层内的预期目标主机。看起来 node.js 确实支持这个,寻找 SNICallback。但是,请注意仍然有足够多的库,它们要么根本不支持客户端的 SNI,要么需要明确使用它的地方。但是,只要您只想支持浏览器,这应该没问题。

关于node.js - 在 NodeJS 中创建一个可以处理多个安全域的反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22889417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com