我正在尝试在 NodeJS 中创建反向代理。但我一直遇到这样的问题:即使我想为多个域提供服务,我也只能在同一端口(443)上提供一组证书/密钥对。我已经完成了研究并不断遇到同样的障碍:
- 可以从非安全本地源(http 本地访问和服务 https 公共)为多个域安全域提供服务的节点脚本
- 让我通过域标头动态服务器 SSL 证书
- Example:
- https://www.someplace.com:443 将从 http://thisipaddress:8000 提取并使用 www.someplace.com 的证书和密钥文件
- https://www.anotherplace.com:443 将从 http://thisipaddress:8080 提取并使用 www.anotherplace.com 的证书和密钥文件
- ect.
- I have looked at using NodeJS's https.createServer(options, [requestListener])
- 但此方法仅支持每个端口一个证书/密钥对
- 我找不到根据域标头动态切换证书的方法
- 我无法要求我的员工使用自定义 https 端口
- 如果我为多个域名提供相同的 SSL 证书,即使它是安全的,我也会遇到浏览 SSL 证书错误
- 我在看节点 http 代理但据我所知它也有同样的局限性
- 我研究了 Apache mod-proxy 和 nginx,但我宁愿拥有一些我可以更直接控制的东西
如果有人可以向我展示一个使用 NodeJS 为多个安全域提供服务的示例,每个安全域都有来自同一端口号 (443) 的自己的证书https.createServer or 节点 http 代理我会感激你的。
让我通过域标头动态服务器 SSL 证书
没有域标头,所以我猜您指的是 HTTP 请求中的 Host 标头。
但是,这行不通,因为
- HTTPS 是将 HTTP 封装在 SSL 中
- 因此,您首先必须执行 SSL 层(例如 SSL 握手,这需要证书),然后是 HTTP 层
- 但 Host 标头位于 HTTP 层内部:(
以前,每个 SSL 证书都需要一个 IP 地址。当前的浏览器确实支持 SNI(服务器名称指示),它发送已在 SSL 层内的预期目标主机。看起来node.js确实支持这个,寻找SNICallback
。
但是,请注意,仍然有足够的库,它们要么根本不支持客户端的 SNI,要么需要显式使用它。但是,只要您只想支持浏览器,这应该没问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)