我正在 node
中构建一个 HTTPS 代理。基本上,我允许人们为我的代理机器(设置了通配符 DNS)设置一个 DNS CNAME 别名,并将他们的 SSL 证书导入到我的应用程序中(就像 AWS Elastic Load Balancer 那样),这样他们的 CNAME 主机名在每个请求中都得到适当的保护和识别。
现在我在代理端工作,我正在尝试找到一种在与客户端进行 SSL 握手之前动态加载正确证书的方法。工作流程是:
- 服务器收到一个新的请求
- 获取客户端请求的主机名(即用户设置的DNS CNAME别名)
- 加载属于该主机名的正确证书
- 在当前请求中使用加载的证书 (这里需要帮助)
- 握手(使用加载的证书 - 因请求而异)
有办法吗?
最佳答案
开始吧:使用 SNI in node应该让它发挥作用。
问题是并不是所有的客户端(浏览器或库)都支持它。
关于Node.js - 在运行时动态更改 HTTPS 服务器的 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7924770/