我有以下系统:

要求:
我想使用以下设计:

问题:
发布于 2013-06-01 13:05:21
首先,让我们注意,每个服务器名义上都有两个密钥和相应的证书。一种是用作SSL意义上的服务器(当浏览器或另一台服务器连接到机器时),另一种是用作客户端(当机器本身连接到另一台服务器时)。您可以将密钥(和证书)安排为相同的,但这可以添加一些约束。非对称密钥对可以用于密钥交换或数字签名,但并非所有算法都支持两者;此外,证书本身还可以通过其Key Usage扩展进一步限制只使用签名或只进行密钥交换。在SSL中,当使用一个基本的基于RSA的密码套件(例如非常常见的TLS_RSA_WITH_AES_128_CBC_SHA)时,服务器密钥用于密钥交换(即在客户端随机生成的秘密密钥的非对称加密),但是基于证书的客户端身份验证必须使用签名。
因此,如果您希望每个服务器拥有一个私钥,则必须安排下列任一项:
一般来说,DHE密码套件是推荐的,因为它们提供了完全前向保密:即使攻击者窃取了服务器私钥的副本,通过有线交换的数据也不能随后解密。
如果不需要浏览器警告,则不应将服务器IP地址放在subjectDN中,而应放在服务器DNS名称中。浏览器(以及更一般的所有HTTPS客户端)在连接到服务器时,希望在服务器证书中找到预期的服务器名称,即URL中出现的服务器名称。他们希望在Subject Alt Name扩展(类型为dNSName)中找到它,或者,如果完全缺少这样的扩展,则在subject DN的公共名称中找到它。此查找仅用于名称,而不是IP地址。这在RFC 2818第3.1节中有描述。
在证书中查找IP地址没有概念上的问题;只是现有的浏览器没有这样做。所以还是坚持名字吧。此外,当基础设施迁移时,名称很方便( IP可以更改,但是名称将保持不变,因此不需要新的证书颁发)。
话虽如此,对于你的确切问题:
只要您对证书的有效性感到满意,就可以使用证书,但请注意以下几点:
CA对于安全至关重要,所以谨慎的部署应该是将其放到脱机计算机上。没有网络意味着根本没有可能的远程黑客,这是一件好事。但是,正如上面所解释的,您需要“某种东西”来应对妥协的情况,这可以是以下两种情况之一:
短命证书的优点是不让浏览器进入循环(只有服务器才需要知道它),但是SSL实现更有可能支持CRL。要支持CRL,您需要在证书中添加一个CRL Distribution Point扩展。
无论哪种方式,您的CA都必须定期将一些数据元素推送到远程服务器,无论它们是更新的证书还是CRL。这与脱机CA的概念不一致。有些解决方案意味着物理上的单向连接(有些人使用10基T以太网,只有一对电线连接;我也曾经部署过一个系统,在音频链路上编码CRL,因为音频插孔是电子单向的)。
我希望您的大多数客户将CA放在同一台计算机上,而不是他们的第一台服务器,然后忘记它,并在他们的服务器被黑客入侵时感到非常抱歉。
https://security.stackexchange.com/questions/36787
复制相似问题