Hostname Based SSL(单个IP上的多个SSL虚拟主机)背后的技术是什么?

众所周知的PaaS提供商Heroku为SSL问题提供了多种解决scheme。 其中之一是一个名为Hostname Based SSL的产品

这不是SNI。 他们声称它可以在任何configuration的每一个浏览器上工作,但是还有其他的缺点,主要是(引用文档):

使用这个定制构build解决scheme,Heorku可以在一个IP地址上提供多个SSL站点,并声称它可以跨越任何东西。

任何人都可以解释这个产品背后的技术方面和技术?

这不是你所想的。 Heroku没有在单个IP地址上提供多个SSL证书。 例如,如果您针对不同的主机名SSL部署执行nslookup,则会发现它们都指向不同的Amazon ELB 。 那是秘密的酱汁。

当客户请求基于主机名的SSL时,会为其提供ELB,并要求客户将CNAME指定给该ELB的主机名。 那些ELB适当地连接回Heroku路由网格。

我希望能清除一些东西。 随意问更多的问题。

我不知道,所以我不得不推测。 这可以作为Heroku自己的DNS服务器和HTTP服务器之间的交互的结果。 stream程可能是这样的:

  1. 客户正在请求https://www.yourdomain.com
  2. 客户的DNSparsing器将www.yourdomain.comparsing为在heroku的名称服务器上的RR的CNAME(例如app1234.apps.heroku.com)
  3. 客户端的DNSparsing器从apps.heroku.com的名称服务器向A RR查询app1234.apps.heroku.com
  4. apps.heroku.com的名称服务器发送一个地址,并通知IP地址为1.2.3.4的客户端的相应Web服务器,请求主机www.yourdomain.com
  5. 客户端启动到app1234.apps.heroku.com的SSL连接握手
  6. HTTPS服务器知道1.2.3.4的客户端将要求www.yourdomain.com作为站点,为www.yourdomain.comselect正确的证书并继续进行SSL握手

在某些情况下,stream可能会中断,尤其是对于来自单个IP地址的不同站点的许多请求(对于代理或NAT网关后面的客户端,情况就是如此),但是这可以通过传播请求来“平分”对于许多HTTPS服务器中单一来源IP的不同目标主机,因此单个HTTPS服务器在决定为给定客户端select哪个证书时不会有任何歧义。