可以在本地生成SSL证书时,为什么需要购买SSL证书?


57

我无法理解为什么我们可以使用openSSL在本地生成SSL证书时需要购买SSL证书。我购买的证书和本地生成的测试证书有什么区别?这只是一个大骗局吗?


17
就信息安全的CIA三合一而言,自签名证书可提供机密性完整性(即,它们允许两方之间的加密消息),但是只有受信任源签名的证书才能提供真实性(即,加密对话中的另一方)实际上就是您认为的那个人)。
apsillers 2013年

10
希望当DNSSEC发挥作用时,人们将能够创建自己的证书并将其存储在DNS记录中。这样,DNSSEC信任链就足以证明该证书属于域的所有者。(我还不认为这是一个正式的规范,但是很好)
jackweirdy 2013年

2
供内部使用,您可以使用组策略(在Windows上)将证书部署为受信任的证书。
2013年

4
我经常想知道为什么人们也不接受我自己的印钞;)
tgkprog

1
注意:有免费的基本证书提供者。这些可以满足人们90%的需求。而且某些CA的证书成本很低,没有理由打破银行的要求。(当然没有代表团)
克里斯·S

Answers:


72

一个字-信任。您的浏览器信任的提供者提供的SSL证书意味着他们至少已完成基本验证才能证明您是您的身份。

否则,我可以为google.com或yourbank.com制作自己的证书,并假装成为证书。

付费证书通常不提供超过自签名的任何额外级别的加密。但是自签名证书会导致浏览器抛出错误。

是的,SSL的一部分是骗局(verisign证书与geotrust相比,verisign的价格要贵100倍),但不是全部。

如果这全部是内部的东西,那么就不需要付费证书,因为您可以使用自己的信任方法(例如,不执行任何操作,或者仅进行指纹检查)。


8
如果所有内容都是内部的,则可以使用组策略将证书部署为受信任的。
2013年

2
另一方面,驾驶员签名是一个骗局。不管是什么,是的,这是一个巨大的损失,但是我们别无选择。 successfulsoftware.net/2008/02/27/...
马特

2
@Matt-我以前看过那篇文章;当我们正在工作时进行代码签名时。我们决定只进行自我签名并建议人们检查签名。值得庆幸的是,我们有很多高科技用户(大部分是)。
马克·亨德森

自签名证书会在所有浏览器中生成警告。虽然可以使用所有主要的浏览器来验证提供者的证书,因为它们内置了那些提供者的公钥,并且可以验证您的证书并确认它们确实由提供者签名。
马特

23

SSL证书的重点是使浏览器对用于HTTPS事务的服务器公钥具有合理的信任度。

首先,让我们探讨如果不使用证书会发生什么。取而代之的是,服务器将以明文形式发送公钥,而浏览器将使用该公钥来发起加密通信(它要做的第一件事就是加密自己的公钥并安全地发送出去)。如果我和攻击者把自己陷在中间怎么办?我可以用我的即时替换您的公共密钥,与浏览器进行加密连接,解密我收到的所有内容,用您的公共密钥加密,然后发送出去(反之亦然,以响应型流量)。没有人会注意到差异,因为没有人事先知道公钥。

好的,因此我们已经确定我们需要某种方式让浏览器信任我的公钥。一种方法是将所有注册的公共密钥存储在浏览器中。当然,每次有人注册公共密钥时,这都需要更新,这会导致膨胀。也可以将公钥掌握在DNS服务器1的手中,但是DNS服务器也可以被欺骗,并且DNS不是安全协议。

因此,剩下的唯一选择是通过签名机制“链接”信任。浏览器将存储一些CA的详细信息,并且您的证书将与其他证书链一起发送,每个证书都对下一个证书进行签名,并转到根/受信任/内置的CA。CA的工作是在为您签名证书之前确保域属于您。

由于成为CA是一项业务,因此他们要为此付费。一些比其他更多。


如果您制作了自己的证书,则会收到类似于以下内容的错误:

在此处输入链接说明

未签名的证书没有任何价值。这就像拿铅笔和一本小册子,画一本护照,声称你是巴拉克·奥巴马。没有人会相信它。

1.毕竟,注册域时会创建DNS条目。使用更健壮的协议(使您可以同时注册公共密钥)将是一个有趣的概念。


您还可以对SSL证书使用DNSSEC装订,因此该证书(最终)是从ICANN作为CA而不是另一个证书颁发机构衍生的。尽管Chrome曾经使用过,但目前所有浏览器都不支持此功能。
理查德·加兹登2014年

如今,您拥有DANE及其DNS TLSA记录,该记录使您可以将某些服务限制为特定的密钥或特定的CA。
Patrick Mevzek

5

您问题的答案取决于您的听众:由于证书的整个系统都是基于“信任”的,因此您的用户必须有能力自己证明自己的证书,或信任进行此检查并通过签名来显示成功的第三方。您的证书。我使用的“证明您的证书”一词有点不准确:长版本应为:“证明您是证书的所有者并被允许使用”。

如果您的所有用户本人都认识您,并且具有证明您自己签发证书的技术能力,那么使用“认证”提供商的证书就没有技术上的需要。在这种情况下,自签名证书甚至可能比其中一个提供者中的证书更好。

但是在大多数情况下,用户不可能自己执行此过程。这些SSL提供商在这里进入市场。他们提供服务来进行这些检查并通过签署证书来表示检查结果。但是要记住的一个重要事实是:SSL提供商通过签署证书,表示它已根据自己的签名策略检查了证书颁发者的身份。因此,用户必须决定此策略是否足够精确,以及他/她是否可以信任提供者。


4

要点是,如果证书是自行生成的,那么普通用户将无法验证其真实性。对于购买的证书,他们认为至少要验证证书中打印的内容正确无误。想法:如果您将电话和地址放在证书中,则CA会进行验证,但很少这样做。

另外,购买证书是可追溯的,这意味着他们用户始终可以跟踪证书的来源,而自签名证书只是一个随机身份。

对于许多系统而言,过去需要从授权的CA进行“代码签名”,这是策略驱动的,但是由于自签名证书数量众多,因此现在不再100%强制执行。


4

只是组织上没有技术上的差异(您自己的安全也不会降低):您的CA证书不是浏览器标准安装的一部分。这使大多数人都无法连接到您的证书。但是为内部网络购买证书没有任何意义。


3

它归结为信任。与服务器本身的自签名证书相比,“经过认证的” SSL提供程序被认为是信誉良好的(尽管可以操作)。

如果您的组织拥有自己的证书签名,那么这是完全可以接受的,并且不会对用户造成任何警告(前提是他们将证书钥匙串用作受信任的来源),但是如果您尝试在外部使用它,仍会创建警告。

底线:对于内部使用,这是很好的,如果您是将其外部提供给付费客户,则无需警告就可以放心。通过授权来源进行金融交易,或者您不真正认识一些站在大街上的人,您会感到安全吗?


3

最近,LetsEncrypt宣布了其命令行工具可用于生成有效证书的可用性。

没有验证电子邮件,没有复杂的配置编辑,没有过期的证书破坏了您的网站。当然,由于Let's Encrypt免费提供证书,因此无需安排付款。

对于那些想知道这些证书在主流浏览器中是否有效的人,答案是“是”:

2015年10月19日,中间证书被IdenTrust交叉签名,从而使所有主流浏览器都信任Let's Encrypt颁发的所有证书。[20]

..... 2016年3月8日,让我们加密了七个月后颁发的百万分之一证书。[39]

2016年4月12日,Let's Encrypt离开测试版。

系统管理员和开发人员的链接:https : //letsencrypt.org/getting-started/

在区块链技术时代和取消第三方信任系统的时代,是时候开始质疑一些选定机构发行昂贵证书的时候了。

尽管Letsencrypt与区块链技术无关,但这是朝着正确方向迈出的第一步。希望每年向昂贵的证书颁发机构支付高额费用的要求已合乎逻辑。


2

简而言之,自签名SSL证书没有任何意义。它对外部世界没有任何价值。就像说“我拥有西班牙”。您可能会诚实地认为自己做到了,但是没人会承认您的主张。

类似的类比是发明某些东西,然后声称您拥有该发明的权利,但是除非您在办公室注册了专利,否则很难说出这句话,是吗?


证书的全部意义在于它是由人们信任的权威机构签署的。如果某个网站拥有有效的SSL证书,则意味着所有者已经费事费力地注册自己的网站,为SSL证书付费并从某个真实世界的证书颁发机构获得了官方证书,因此它可能不是一个廉价的网络钓鱼网站。另一方面,如果您信任自签名证书,则该网络钓鱼网站可以简单地生成他自己的伪造证书(您将很乐意接受)并瞧瞧。

当然,如果这是私有Intranet上的内部网络,则您可能已经相互信任,因此在这种情况下,权威证书实际上并没有添加任何内容,因此您可以放心地忽略浏览器对您发出的鲜红色的光。 。对于小型网站,您仍然希望对客户端-服务器流量进行加密,但威胁模型不保证进行强身份验证,情况与此相同,在这种情况下,您可以使用自签名证书来接受并接受(对于您的威胁模型可以忽略) MITM的风险。

考虑到受信任的SSL证书的价格可能会很令人满意。


换句话说,一张自签名证书相当于说“我证明我就是我- 信任我!”。


2
这是正确的,但仍然值得注意的是,付费证书仅是某人证明向证书颁发机构付款的麻烦的证据。Verisign / Namecheap / Whatever-CA另一端的销售人员除了将证书发送到hostmaster@example.org(例如,将证书发送到exqmple.org潜在的网络钓鱼站点)外,不会做任何其他事情。 。
89c3b1b8-b1ae-11e6-b842-48d705

1
@tristan的确如此,他们可以使用更好的正式程序来处理此类事情,但是我认为后勤要求是不合理的。
托马斯

1
@tristan-这是一个不完善的系统,但是证书颁发机构有一定的动机去保证其可信度。例如,如果他们向随机人提供了Google证书,则很快就会将它们从所有浏览器中删除。他们还提供“扩展验证”证书,从理论上讲,这意味着他们要进行更多检查。他们中的任何人都可以决定是否需要亲自进行DNA测试,如果他们认为这样做可以提高声誉并赢得业务。
内森·朗

1
@NathanLong这并不是要给一些不道德的家伙提供“ Google证书”,而是即使EV证书也只是“有人可以回复来自该域的电子邮件”检查。无论如何,我们都绕着相同的观点:a)用户仍然需要知道不花钱给payqal.com,b)SSL的成本障碍对某些骗子来说不值得,c)付费证书意味着更多可能一个站点可能是一个想要的DNS查找,并且d)在“此服务器与上次检查时由同一/不同的人拥有”的情况下,提供种子值是一种合理的方法
89c3b1b8- b1ae-11e6-b842-48d705

特里斯坦(Tristan),这是成本的一​​部分。非常便宜的证书进行非常便宜的验证。非常昂贵的证书(企业级别)可以进行非常昂贵的验证。(尽管价格绝不是验证工作做得多么好的直接指标。)有些证书可以绝对保证您的身份,但是大多数只是保证您可以对颁发给您的域进行某种控制。 。

1

为了使它简短而简单...并且将所讲的内容混为一谈...

这不是加密问题,使用适当的工具,您可以使用所需的加密类型在本地生成证书...并获得有效的证书。

从认证实体购买证书时,您的主要优势在于,在证书有效期间,他们将证书保存在其服务器中,该机制可以验证您在线使用证书签署的任何内容...

无需连接PC即可通过证书对数字产品进行验证和验证。您应将验证重定向到认证实体。


1

抱歉,这么晚才进入讨论-我认为值得指出的是,使用openssl可以建立具有自己的根证书的私有CA,然后创建由该CA签名的服务器证书。如果将CA根证书导入到浏览器中,并告知浏览器接受该证书,则服务器证书将被接受,且不加注释。(显然,这仅是在用户社区较小且用户彼此认识的情况下可行的选择。)


-2

您相信一个说“信任我”的人吗?对真实性的信任只能由每个人都信任的“受信任的权威”提供。这就是为什么我们不得不花大价钱购买证书的原因。


2
根据该逻辑,将没有免费的证书提供者。但这有。
克里斯S
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.