针对站点的不同部分的不同SSL证书

时间:2010-08-25 15:48:22

标签: ssl https amazon-s3 amazon-cloudfront

我在example.com上有一个站点,它从s.example.com(亚马逊云端分发版)加载所有静态组件。

现在我想让example.com的一些页面使用https所以我想我会为example.com购买ssl证书,但由于这些页面从s.example.com加载图像和其他东西,所以https由于某些组件未加密,因此会中断。

是否可以为s.example.com购买第二张证书?我问的原因是因为购买两个单域证书而不是购买通配符证书要便宜得多。

3 个答案:

答案 0 :(得分:2)

这取决于两台主机是否在同一服务器和IP地址(使用虚拟主机)上运行。

简单的方法是能够在两个不同的IP地址(可能是同一台机器)上托管example.coms.example.com,在这种情况下,您可以为每个IP地址配置不同的证书。

如果你被限制为这两个名称拥有一个IP地址(和端口),如果你想使用两个不同的证书,你需要使用相对较新的Server Name Indication (SNI)扩展名(并且可能不受所有浏览器的支持,但它似乎适用于最近的浏览器。)

如果您不能使用SNI,则需要同一个证书同时对example.coms.example.com都有效,这可以通过将两个DNS条目放入主题备用名称扩展名,或者可能通过使用通配符,如果两个主机的模式合适。这两个选项可能比两个不同的证书(商业CA)更昂贵。

之后,使用https://链接链接到页面内容(img ...), @ ring0 已经说过了。

答案 1 :(得分:1)

各种(子)域的各种证书存在的问题是您必须拥有域的专用IP。这是由于SSL设计 - 首先建立SSL连接,此时证书已经过验证。服务器此时不知道要提供哪个证书。只有在成功握手后,才会发送带域名的HTTP请求。

因此,如果您希望涵盖两个域,并且它们都位于相同的IP地址,则必须购买通配符证书。

答案 2 :(得分:0)

只要页面中的所有组件都是http或所有https,您就应该能够运行具有不同https:// 的页面而不会显示浏览器的警报。

<img src="https://example.com/a.jpg"/>
<img src="https://s.example.com/b.jpg"/>

您必须保持各种证书的最新状态。