TLS证书是否可以在运行在相同域/不同端口上的不同服务器上重用?

我是程序员,而不是系统pipe理员。 我有一个DreamHost VPS,用于我的个人网站和一些通常只是通过HTML5进行多媒体实验的副项目。 没什么特别严重的,他们都在客户端运行。

我已经开始在我的网站上包含签名证书了A)这对用户来说是好事,B)我可能会考虑在模糊的将来为一些多人游戏function设置用户帐户,C)它也允许我请求访问某些HTML5 API一次又一次。 例如:每次在HTTP上启动语音识别需要重新确认,一分钟后自动停止收听。 但是通过使用HTTPS,我可以使其重新开始监听,而无需用户再次确认; 第一个确认就足够了。

我有两个单独的服务器运行:

  • Apache端口80: https : //seanmcbeth.com
  • 基于Node.js的自定义Web服务器端口8080: https ://seanmcbeth.com:8080。

我保持这种方式,因为Apache服务器已经运行,它运作良好,我还是很新的节点。 我一直在运行Apache,以便为我的网站提供静态页面,作为我工作的一个组合,并且相信DreamHost的configuration比我自己能够做得更好。 Node服务器有时会崩溃,有时候我没有注意到,纯粹是编程的错误。 保持两个分开似乎现在是一个好主意。

对于Apache,DreamHost自己configuration了证书,并且我已经设置了htaccess规则来将HTTPstream量redirect到HTTPS。 这工作正常。

对于Node服务器,我将证书和私钥从DreamHost CPanel中复制出来,因为我找不到它们的位置,以便使用Apache使用的相同副本。 我没有复制中间证书,因为我不知道该怎么办。 Node服务器也不会自动redirectHTTPstream量,但这可能只是我还没有研究过这个问题。

我今天写的主要问题是,有时当我直接在我的智能手机(Android 4.4.2:Chrome 37)上input地址时,它告诉我该站点“不安全”。 然后,我不得不跳过篮圈,继续前进。 这从来没有发生在我的电脑上(Windows 7:Chrome 37,Firefox 31或IE 11),如果我使用Apache服务器提供的页面上的链接访问节点服务器,它从来就不会在智能手机上发生。 我在这里发布,因为我认为这是一个比编程问题更多的configuration问题。

我会在“不安全”的部分更具体一些,但我现在似乎无法复制这个问题。 我很担心,我可能已经把这个网站标记为例外,现在只是确认一下,但是任何新用户都会看到这个警告。

您没有在8080端口安装中间证书。 现在许多(大多数?)证书不是由受信任的根证书直接签名,而是由中间证书签名,后者又由受信任的根证书签名。 启用S​​SL的服务必须提供中间证书和“结束”证书,以便客户端validation证书是否有效且可信。

您可以使用“openssl s_client host:port”命令来检查它,输出很多信息,但这里是您的站点的相关区别:

$ openssl s_client -connect seanmcbeth.com:443 [...] --- Certificate chain 0 s:/OU=Domain Control Validated/OU=Provided by New Dream Network, LLC/OU=DreamHost Basic SSL/CN=seanmcbeth.com i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2 1 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2 i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root --- [...] $ openssl s_client -connect seanmcbeth.com:8080 [...] --- Certificate chain 0 s:/OU=Domain Control Validated/OU=Provided by New Dream Network, LLC/OU=DreamHost Basic SSL/CN=seanmcbeth.com i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2 --- 

了解8080端口如何在链中没有AddTrust证书。