为什么我需要购买一个SSL证书,当我可以在本地生成一个?

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

    一个字 – 信任。 您的浏览器所信任的提供商提供的SSL证书意味着他们至less已经进行了基本validation,以表明您是谁。

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

    付费证书不提供超过自签名(通常)的额外级别的encryption。 但是自签名证书会导致浏览器发生错误。

    是SSL的一部分是一个骗局 (verisign证书vs geotrust verisign是高达100倍更昂贵),但不是全部。

    如果这是所有内部的东西,那么就不需要付费证书,因为你可以使用自己的信任方法(例如什么也不做,或者只是指纹检查)。

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

    首先,我们来探讨如果我们不使用证书会发生什么。 相反,服务器将以明文forms发送公钥,浏览器将使用它发起encryption通信(第一件事情就是encryption自己的公钥并安全地发送)。 如果我和攻击者把自己陷在中间呢? 我可以随时更换你的公钥,与浏览器进行encryption连接,解密所有我收到的东西,用你的公钥encryption,然后发送(反之亦然)。 没有任何一方会注意到这种差异,因为事先没有人知道公钥。

    好的,所以我们确定我们需要某种方式让浏览器相信我的公钥。 一种方法是将所有注册的公钥存储在浏览器中。 当然,每次有人注册公钥时都需要更新,这会导致膨胀。 也可以将公钥存放在DNS服务器1中 ,但DNS服务器也可能被伪造,而DNS不是安全的协议。

    所以剩下的唯一select是通过签名机制来“链接”信任。 浏览器存储了一些CA的细节,你的证书将与其他一系列证书一起发送,每一个证书都会签名,然后进入root / trusted /内置的CA. 在为您签署证书之前,CA的工作是确保域名属于您。

    由于作为一个CA是一个企业,他们收取这个费用。 比别人多一些。


    如果您制作了自己的证书,则会出现类似于以下的错误:

    在这里输入链接描述

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

    毕竟,当你注册一个域时,你的DNS条目就会被创build。 使用更强大的协议,可以让你同时注册公钥将是一个有趣的概念。

    您的问题的答案取决于您的观众:由于整个证书系统基于“信任”,您的用户必须有可用certificate您自己的证书或相信已完成此检查的第三方,并通过签名你的证书。 我使用的“certificate你的证书”一词有点不准确:长版应该是:“certificate你是证书的所有者,并被允许使用它”。

    如果您的所有用户都了解您的个人情况并且具有技术能力来certificate您的证书是由您自己签发的,则不需要使用来自“已authentication”提供者的证书。 在这种情况下,自签名证书甚至可能比其中一个提供者更好。

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

    要点是,如果证书是自发产生的,普通用户无法validation其真实性。 对于购买的证书,他们认为至less要certificate证书内的打印内容是正确的。 想法:如果你把你的电话和地址放在证书中,CA假设要validation它,但他们很less这样做。

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

    对于许多系统来说,过去需要由授权的CA进行“代码签名”,这是政策驱动的,但由于自签证书如此之多,现在已不再是100%执行。

    没有什么技术上的区别(你自己的不是那么安全)只是组织的一个:你的CA证书不是浏览器标准安装的一部分。 这使大多数人连接到您的证书不舒服。 但是为内部networking购买证书是没有意义的。

    这归结为信任。 一个“authentication”的SSL提供商据说是信誉良好的(尽pipe这可以被操纵)与服务器本身的自签名证书。

    如果你的组织有它自己的证书签名,那么这是完全可以接受的,不应该给用户造成任何警告(假定他们使用你的证书钥匙串作为一个可信赖的源),但是如果你试图在外部使用它,仍然会产生一个警告。

    底线:对于内部使用来说,如果您是向付费客户提供外部付款,没有任何警告是安静的。 如果您的金融交易是通过经认可的资金来源,还是站在街上,而您并不真正了解?

    简而言之,一个自签名的SSL证书并不意味着什么。 它对外部世界没有任何价值。 这就像说“我自己的西class牙”。 你可能会认为你确实如此,但没有人会认出你的说法。

    一个类似的比喻就是发明一些东西,然后声称自己拥有发明的权利,但是除非你在办公室注册了专利,否则很难说出来,现在呢?


    证书的重点在于它是由一个权威人士信任的。 如果某个网站有一个有效的SSL证书,就意味着网站所有者不得不注册自己的网站,支付SSL证书,并且得到了一些真实证书颁发机构的官方证书,所以这可能不是一个便宜的钓鱼网站。 另一方面,如果你信任自我签署的证书,那么钓鱼网站可以简单地生成自己的伪造证书(你会高兴地接受),瞧。

    当然,如果这是私人内部网上的内部networking,那么你可能已经相互信任了,所以在这种情况下,权威证书并没有真正添加任何东西,所以你可以放心地忽略你的浏览器向你扔的亮红灯。 您仍然希望客户端服务器stream量被encryption的小型网站也是如此,但您的威胁模型不能保证进行强身份validation,在这种情况下,您可以使用自签名证书并接受(您的威胁模型可忽略不计) MITM的风险。

    考虑到信任SSL证书的价格昂贵,这可能是令人满意的。


    换句话说,一个自签名的证书就等于说“我certificate我是我 – 我相信我 !”。

    最近, LetsEncrypt已经宣布他们的命令行工具可用来生成有效的证书。

    没有validation电子邮件,没有复杂的configuration编辑,没有过期的证书打破你的网站。 当然,因为Let's Encrypt免费提供证书,所以不需要安排付款。

    对于那些想知道这些证书在主要浏览器中是否有效的问题,答案是肯定的:

    2015年10月19日,中间证书由IdenTrust交叉签名,致使Let's Encrypt颁发的所有证书都被所有主stream浏览器信任。

    …..在2016年3月8日,Let's Encrypt在存在七个月后发布了第100万份证书。

    在2016年4月12日,让我们encryption离开Beta。

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

    在区块链技术和消除第三方信任系统的时代,几乎所有选定的权威机构发行昂贵证书的时间开始受到质疑。

    尽pipeLetsencrypt与区块链技术无关,但这是一个正确的方向。 每年向昂贵的证书颁发机构支付高额费用的愿望有希望成为合乎逻辑的结果。

    为了保持简洁和简单,并且稍微反驳了一下…

    这不是encryption问题,使用合适的工具,您可以使用所需的encryptiontypes在本地生成证书,并获得有效的证书。

    从authentication实体那里购买证书的主要优点是,在证书有效期内,他们会在服务器上保存一个机制,用于validation您在网上签署authentication的任何内容。

    您的电脑不需要连接,您的数字产品将通过您的证书进行validation和validation…您应该将validationredirect到authentication实体。

    很抱歉,在这么晚的讨论中 – 我认为值得指出的是,使用openssl,可以使用自己的根证书设置专用CA,然后创build由此CA签名的服务器证书。 如果将CA根证书导入到浏览器中,并且要求浏览器接受该证书,则服务器证书将被接受而不发表任何评论。 (显然这只是一个可行的select,如果用户社区很小,用户都亲自认识对方。)

    你会相信有人说“相信我”吗? 对真实性的信心只能由所有人信任的“信任的权威”提供。 这就是为什么我们必须花大价钱购买证书。