是否可以使用openssl证书为所有域生成?我不需要用CA签名,如果可能的话,任何CA都不会这样做。我只是因为特定原因需要它。或者有什么方法可以做到这一点吗?
答案 0 :(得分:1)
不完全是。您可以使用*
作为通用名称自行签署证书。显然,正如罗伯特所强调的那样,用户会收到警告,但这次警告是关于证书是由未知发行人签署的事实。只需让您的用户接受它,可能通过安全通道(例如,发送带有证书和公钥的S / MIME或PGP消息),警告也将被禁用。
在处理CA时,理论上可以使用与您需要在SSL上托管的网站一样多的AltSubnectName字段来签署证书,这是获得SSL托管的几种方法之一。
答案 1 :(得分:1)
不,无法生成与所有域匹配的证书。虽然您可以生成与多个域匹配的证书 - 多个,而不是全部 - 但只有在CA可以验证您是否可以控制这些域时,CA才会对其进行签名。除非你当然可以欺骗CA.
答案 2 :(得分:1)
是否可以使用所有域的openssl证书生成?
这取决于,但主要是,是的。我称之为“超级证书”。
我只能说“大部分”,因为浏览器会拒绝以下技术。其他用户代理,框架,库甚至操作系统都会接受它。
缺点是您将以下内容添加到 openssl.cnf
文件中:
[ x509_ext ]
...
subjectAltName = @alternate_names
...
[ alternate_names ]
DNS.1 = *.com
DNS.2 = www.*.com
DNS.3 = *.net
DNS.4 = www.*.net
DNS.5 = *.gov
DNS.6 = www.*.gov
DNS.7 = *.mil
DNS.8 = www.*.mil
...
然后,您为每个请求提供相同的证书。
它的工作原理是......有两个组发布大多数用户代理遵循的规则。第一个是CA/Browser Forum Baseline Requirements。第二个是RFC 5280和RFC 6125的IETF。浏览器遵循CA /浏览器论坛BR。其他用户代理(如cURL和Wget)以及Java,Cocoa和.Net等框架都遵循RFC。
CA / B和IETF都有匹配通配符的规则,这意味着您必须创建Super Cert。在所有情况下,您都不能简单地使用 *.com
和 *.*.com
。< / p>
根据匹配规则,有时允许使用多个通配符,有时通配符必须位于最左侧的标签中,有时通配符不能位于域标签中。
现在,浏览器会拒绝在证书中匹配 *.com
等名称。其编入基准要求,全球顶级域名(gTLD)列在浏览器使用的Public Suffix List (PSL)中。
即使没有任何意义,其他用户代理也会愉快地匹配它。以下是用户代理,库和框架,似乎无法获得匹配权。在这里,“正确”意味着提供平庸的安全级别。这些用户代理在遇到声称为整个gTLD颁发的证书时应该知道该频道受到攻击:
我似乎记得PERL是唯一一个拒绝 *.com
和朋友的部分权利。但是,如果我没记错的话,它接受了 www.*.com
。
未能拒绝无意义主机名的其他用户代理包括:
当我提交错误报告时,引用最多的答案是“......但RFC不会禁止它。”
我试图同时让PKIX working group (Internet's PKI)和DBOUND working group (domain boundaries)拒绝他们(或者至少建议不要接受他们),因为我们知道没有一个组织可以为所有 .COM
,所有 .NET
等。另请参阅Some work that will probably hit dbound sooner rather than later。
如果CA可以验证您是否可以控制这些域,则CA只会对其进行签名。除非你当然可以欺骗CA.
这几乎是真的。如果您正在运行自己的PKI,那么您创建超级证书,使用内部CA进行签名,一切都将按预期工作,就像公共CA签署它一样。
这假设您已根据需要安装了内部CA证书,但这就是您在运行自己的CA时所执行的操作。
答案 3 :(得分:-1)
每个SSL证书都特定于单个域。如果您将一个域的证书与另一个域使用,则用户将收到警告,说出正在进行的网络攻击。 (除了关于未签名证书的警告。)