百科问答小站 logo
百科问答小站 font logo



为什么 SSL 证书要花钱购买,而不是政府免费发放的?怎么知道卖证书的是否可信呢? 第1页

  

user avatar   damon-dance-for-me 网友的相关建议: 
      

一般而言,SSL并不需要花钱购买。GCP,Azure和AWS都提供免费的SSL证书。

当然,天朝人并没有这个待遇。

这个和河南人总是被认为是骗子是一个道理。哇哈哈哈


user avatar   changwei1006 网友的相关建议: 
      

记得还是我读中学的时代,Chrome等浏览器为了推广HTTPS,对网站方要求非常激进:如果网站不支持HTTPS则会弹出红屏,然后在底下用一个非常小的字提示你是否无视这个安全提醒

与此同时12306并没有给自己的网站加上由权威CA颁发的SSL证书,而是需要先下载一个由12306自签名的SSL根证书并且成功导入之后,才能避免看到这个红屏

即使在这种情况下,很多人宁愿每次看一遍那个刺眼的红屏都不愿意安装12306的自签名根证书,就是怕以后12306日后可能会窃听用户数据

另外,题主可以去搜索一下CNNIC为部分Google域名颁发假证书事件[1]以及CNNIC证书被Chrome和Firefox吊销事件[2]

这种背景下, 你觉得会有人想用政府免费颁发的SSL证书吗?

参考

  1. ^Maintaining digital certificate security https://security.googleblog.com/2015/03/maintaining-digital-certificate-security.html
  2. ^Revoking Trust in one CNNIC Intermediate Certificate https://blog.mozilla.org/security/2015/03/23/revoking-trust-in-one-cnnic-intermediate-certificate/

user avatar   xin-2050 网友的相关建议: 
      

本来就应该免费。或者极低的价格那种,比如一块钱。因为安全很重要。你收费高了,别人不用了,岂不是更不安全。

这玩意都是开源的,没什么技术含量。


user avatar   taoshu0 网友的相关建议: 
      

利益无关,但对 ssl/tls 比较感兴趣。我尽量让大家明白 SSL 的工作原理,然后大家就可以根据自己的业务场景来判断该用哪种类型的证书。
在讲收费与免费的区别之前,我们需要简单了解一下 SSL 证书到底是什么,到底是做什么用的。
加密的基本原理
大家肯定知道 SSL 证书是用来加密 HTTP 请求的。但具体是在加密的哪个阶段起作用呢?这就得说道说道对称加密非对称加密
对称加密
所谓对称加密,就是收发双方共用同一套密钥。不搞加密的朋友可能看不懂这些术语。对称加密就是谍战片中的电报密码本。第一个汉字对应一个密码,收发双方共用一套密码本,所以才能加密和解密。如果能拿到或者破解敌人的密码本,就能监听敌人的电报!所以要保护好密码本
这种需要密码本的加密仅仅适用于少数人之间的通信。你不可能把密码本发给每一个人。但是我们的网站可能有各种各样的人来访问,怎么才能实现加密通信呢?这就需要用到非对称加密
非对称加密
所谓非对称加密,就是利用数学方法生成一对密钥,一个对外公开,所有人都能看,我们称之为公钥;另一个自己妥善保存,不可轻易示人,我们称之为私钥。如果一方要通信,可以使用对方的公钥对数据进行加密,对方再用自己在私钥解密。这里跟对称加密最大的不同就是要用到公、私两个密钥。因为私钥不需要发给别人,所以非常安全。
那我们可以直接使用非对称加密技术来加密HTTP通信吗?并不能!因为非对称加密虽然安全,但计算量很大,加密和解密过程都比较慢。对称加密倒是快,但不安全。于是人们就把这两种加密方法结合起来,形成了现在通行的 SSL 或者 TLS 加密体系。其核心是在通信之前随机生成一份密码本,然后用非对称加密之后发给对方。这样双方就有同一份密码,然后可以用对称加密进行通信。每次都可以生成新的密码,用完就扔,保证安全性。
SSL 证书的本质
以上就是 SSL/TLS 加密通信的大致原理。但是 SSL 证书在这个过程有起到什么作用吗?并没有!也就是说,SSL 证书对 HTTPS 的加密过程来说,没有任何作用!那为什么还要申请证书呢?这就需要讲另一个问题——公钥验证。
前面说非对称加密需要把公钥公开给大家。比如我的个人网站 taoshu.in 把自己的公钥公开,所有想访问我博客的朋友需要根据我公开的公钥来给我发加密数据(协商密码)。可是网上有另一个不怀好意的人,它也公开了一枚公钥,也声称这是 taoshu.in 的公钥。那想访问我博客的用户怎么确定到底哪个公钥才是 taoshu.in 真正在公钥呢?这就需要 SSL 证书。
大家可以把 SSL 证书想象成公证处开的证明,证明某个公钥是某网站的公钥。这里的公证处就是所谓的 CA 机构。我样可以按一定的格式,把自己的公钥(不是私钥,私钥一辈子都不能给别人!)、网站域名,甚至是组织信息填写到一个文件中发给CA,CA会用自己的私钥对这个文件进行签名,而这个签名可以根据CA的公钥来验证。所以说,CA也有一对私钥和公钥。那问题又来了,会不会有人冒充CA来发布伪造的公钥呢?确实会。这个问题是由操作系统厂商来解决的。不论是 windows、linux、android 还是 macos、ios,都会内置一份 CA 公钥列表(也叫CA根证书),只有系统内置的CA签发的证书才是有效证书!
SSL 证书为什么要收费
到此大家应该理解 SSL 证书的作用了吧!SSL 证书就是一份证明,证明某公钥确实是某网站的公钥。这里面需要用到 CA 这个中间机构。那为什么 SSL 证书需要钱呢?那是因为 CA 机构在签发证书之前需要对公钥跟网站和组织的关系进行验证,这个过程有成本。另外就是CA机构需要应对 WebTrust 等机构的审计,也需要支付不小的费用。所以说,传统的 SSL 证书比较贵。
CA 会验证什么
根据验证信息范围的不同,SSL 证书 DV、OV和EV三种认证级别。
DV 证书
第一级叫 DV,全称 Domain validated,也就是域名认证。此证书可以证明网站所有从具有对应域名的所有权,证书信息里面只有域名一项(Common Name 字段),比如下面就是 Let’s Encrypt 签发的一张 DV 证书。

通过 DV 证书,使用者唯一可以确定的是这枚公钥是某个DNS域名的公钥。因为证书上只有域名这一项信息。
OV 证书
第二级叫 OV,全称 Organization validated,也就是组织认证。证书里除了注明了域名之外还添加了公司名(Organization)等信息。我们平时见到的 https 网站多用这种级别的证书。下图就是知乎的证书信息。

EV 证书
第三级叫 EV,全称 Extended validation,也就是扩展认证。CA 会对证书持有人进行更加全面的认证。如果浏览器会在网址左边显示组织机构信息。用户看到这些信息会更加放心。但现在常用的浏览器已经不再展示了。

选择什么样的证书
随着验证级别的加深,需要的工作量也越来越大,价格自然水涨船高。那问题就来了,我要为自己的网站选择什么样的证书呢?答案是DV证书!
首先,EV 证书在地址栏额外展示组织信息的特权已经没有了!现在所有浏览器都不会在地址栏展示这个信息,也就不会给用户提供额外的提示。而且EV证书非常昂贵。普通网站使用 EV 证书肯定是被忽悠了!另一方面,因为移动平台界面比较小,如果展示组织名称就没法显示域名。而组织名称可以在全世界重复使用。比如你叫百度,我也可以叫百度索马里,如果只看组织名不看域名,很容易引起误解。这也是现代浏览器不再展示组织名称的原因。说白了 EV 证书在防止钓鱼方面作用有限。有兴趣的可以看我的文章 SSL EV 证书之死。总之,别再买 EV 证书了
然后就是OV证书。这是用的比较多的。我个人是不建议普通的网站继续使用OV证书。以我前面说的知乎证书为例:知乎的网址是zhihu.com,对应的公司却是智者四海(北京)有限公司。说句实施,有多少用户能弄明白两者的关系?而且这些信息还都需要额外点击才能查看,又有多少用户会去看呢?再看看支付宝的网站,域名是alipay.com,证书里的组织名是Alipay.com Co.,Ltd,有什么区别,谁能看懂? 所以说 ov 证书里的组织信息一方面没人看,另一方面也看不懂。这种额外的验证成本对用户来说其实没有太大的价值。建议不选!
最后就是 DV 证书。DV 证书里只有域名,而且浏览器会自动验证,不需要用户额外查看。也就是说,用户打开 https://taoshu.in,如果能正常查看内容,那内容一定是由 taoshu.in 这个网站提供的。不需要做额外的验证,整个通信过程也一定是加密的。使用 DV 证书,域名会成为你产品的唯一品牌,成为用户唯一的认知标识!
我的建议是,如果不是搞什么金融之类的网站,使用 DV 证书完全足够了。程序员界最大的问答网站 stackoverflow 用的就是 DV 证书,而且还是免费的 DV 证书:

免费还是付费
我们终于可以讨论这一触及灵魂的问题了。免费证书是近几年兴起的,其目的是推动HTTPS加密通信的普及,保护用户的隐私。其中最重要的免费证书提供商就是Let's Encrypt
前面不是说 CA 需要验证各种信息,应对审计,所以要收钱吗?Let's Encrypt 怎么可以不收钱呢?原因有二。
第一,免费证书都是 DV 证书。前面说过,这种证书仅需要验证域名所有权。只要你控制某个域名,就可以给你签发证书。整个过验证过程完全是自动化的,不需要人工介入,所以也没什么成本。换句话说,之前的 CA 签发 DV 证书还收钱,纯属坑人。我们被坑的时间长了,突然他们不想坑了,反倒是自己先受不了。
第二,Let's Encrypt 是 ISRG 运营的非营利性标准化互联网组织,受到主流厂商支持,以下是不完全列表

它们的目标就是推动 HTTPS 的普及,保护用户隐私,切实降低 HTTPS 部署的成本。这是一个伟大的目标,伟大愿景。而且时至今日,这个目标快要实现了。
综合以上两点原因,Let's Encrypt 才可以签发免费证书!
免费证书有什么问题
部署相对复杂
免费的 SSL 证书一般有效期只有三个月,需要部署自动化域名验证系统(ACME协议),所以免费证书的使用还有一点复杂的。不过这个已经不是什么大问题。现在好多 web 服务器(比如 candy)都内置自动申请 Let‘s Encrypt 功能。还有 acme.sh ,只要下载一个 shell 脚本,设置好 cron 任务,就可以自动申请和更新 Let's Encrypt 证书。像是国内部分云服务厂商也支持自动申请 Let's Encrypt 证书。对于不支持的厂商(比如七牛),我们还可以用用脚本自动申请、自动上传。
但总之,部署上有一点小复杂,但已经非常容易了。
有可能被封吗?
所有的 CA 都有一个所谓的吊销证书状态查询接口,这个接口是用来查询某证书是还被吊销了。像 Let's Encrypt 这种组织在国内没有运营实体,没法在国内部署服务节点,只能使用 cdn 厂商的节点。前一阵子有一家 cdn 厂商的某个节点被污染了,影响到 Let's Encrypt 的证书验证接口。对于一些特定的客户端(主要是 ios),在启动的时候会支查询证书是否被吊销,所以会卡住大约三秒种。这当然不能接受!
这个问题其实不是什么大问题。首先,Let's Encrypt 通过更新 cdn 节点,解决了问题。这证明政府根本不是说要封杀它。其次,这个问题可以使用 OCSP Stapling 这种技术加以解决。
前面说客户端启动时会检查证书吊销状态,这本身就会增加延迟,影响用户体验。为了解决问题,人们又发明了 OCSP Stapling 技术。其本质就是在服务器端替客户端检查证书状态,这个结果也是有签名的,无法伪造。这样,只要开启 OCSP Stapling 技术,客户端就不需要额外请求 CA 提供的接口了。只要保证服务端能调用 CA 的 OCSP 查询接口就行,而这是完全可控的。
说了这么多,就是想表明两点。一,国家没有必要封锁。二,通过 OCSP Stapling 技术不但可以解决 OCSP 节点为被污染的问题,还能进一步提升用户体验。建议不论用什么证书,都上 OCSP Stapling 技术。
免费证书服务商
除了著名的 Let's Encrypt 外,大家还可以考虑使用 ZeroSSL。它不但跟 Let's Encrypt 一样支持标准的 acme 协议自动签发 DV 证书,还支持对 ip 地址签发证书,非常方便。
大家可以同时使用 Let's Encrypt 和 ZeroSSL,互为备份,安全可靠。
LE CA 过期问题
2021年9月30号,identrust 的 DST Root CA X3 根证书过期了,这是计划内的事件。但对于没有准备的用户而言,一些老的设备无法访问使用 Let's Encrypt 证书的网站了。这是为什么呢?
我们前面说过,系统会把信任的 CA 的证书加入到系统列表。这个列表会随着系统更新不断调整。如果想成为一个新的 CA,就会面临一个矛盾。第一,操作系统不会信任你的CA证书,因为没有人使用,也就没办法证明你的信誉。第二,因为系统不信任,所以也就没法打开使用你的证书的网站,从而没有人找你签发证书。这就陷入死锁。
Let's Encrypt 也面临同样的问题。它有自己的 CA 证书 ISRG Root X1,但在开张的时候主流系统都不信任。为了尽快开展业务,Let's Encrypt 让 identrust 使用自己的根证书 DST Root CA X3 签发一张 Let's Encrypt R3 中间证书。因为主流系统都信任 DST Root CA X3,所以自然也会信任 Let's Encrypt R3,进而信任 Let‘s Encrypt 签发的其他证书。
与此同时,Let's Encrypt 一直努力让主流系统信任它自己的根证书 ISRG Root X1。到了 2021 年,主流系统基本都把 ISRG Root X1 加到自己的信任列表了。Let's Encrypt 开始脱离 identrust 自立门户。就是这一年的9月30号,DST Root CA X3 根证书过期了。于是,Let's Encrypt 原先的中间根证书 Let's Encrypt R3 及其签发的所有证书都过期了。不过这都是计划内的事那。Let's Encrypt 已经使用自己的 ISRG Root X1 根证书为自己的 Let's Encrypt R3 签名认证,继续签发证书。
但是,只要系统本身不信任 ISRG Root X1 根证书,就无法打开使用 Let's Encrypt 证书的网站。这其中就包括 Android >=2.3.6 < 7.1.1 这部分系统。为了解决这个问题,Let's Encrypt 的工程师想到了一个既不违反标准,又能解决问题的办法:在 DST Root CA X3 还没过期的时候,使用 DST Root CA X3 对 ISRG Root X1 做交叉签名,而且签名的有效期定在了 2024 年。这里交叉签名的有效期设在了 DST Root CA X3 的过期时间之后。安卓系统在检查证书信任链的时候不会校验根证书是否过期,这就实现了在 DST Root CA X3 过期之后,老系统继续信任 ISRG Root X1 的效果。有人说这是老版本 Android 系统的 bug,其实不然。这种做法并不违反相关的互联网标准。

上图中最左边的链是 Let's Encrypt 早期使用 DST Root CA 签发的中间证书,最右边的链是直接使用自己的 ISRG Root X1 签发的中间证书,而中间则是现在到 2024 年的过渡方案,使用 DST Root CA X3 交叉签名 ISRG Root X1,然后再签发 Let's Encrypt R3 中间证书。
无论如何,解决了Android >=2.3.6 < 7.1.1 这部分系统(从百度统计的数据来看大约占 10%)的兼容性问题。但代价则是在证书链里多了一个 DST Root CA X3 证书,这会减慢 HTTPS 连接握手速度。两害相权取其轻。
再过三年,估计绝大多数系统都会支持 ISRG Root X1,到时个就可以去掉证书链中的 DST Root CA X3。
另外,Let's Encrypt 为了加快 HTTPS 连接速度,一直在推动部署体积更小的 ECDSA 证书。这需要主流系统信任 ISRG Root X2 根证书,估计到 2024 年也就差不多了。期待一个更好的加密互联网。
LE 兼容性列表
经过番考证、实验以及跟 @蓝小灰 的探讨,最终确认 Let's Encrypt 证书的兼容性如下:

  • Windows >= XP SP3
  • macOS >= 10.12.1
  • iOS >= 10 (iPhone 5 及以后机型可以升级到 iOS 10)
  • Android >= 2.3.6
  • Mozilla Firefox >= 50.0
  • Ubuntu >= precise / 12.04
  • Debian >= jessie / 8
  • Java 8 >= 8u141
  • Java 7 >= 7u151
  • NSS >= 3.26

Chrome, Safari, Edge, Opera 使用系统 CA 信任列表。也就是说,只要系统支持,它们就支持。
从这个角度上讲,Let's Encrypt 证书的兼容性几乎什么大问题。仅有一点问题都被国内的证书贩子夸大了。
总结
我个人是推荐使用 Let’s Encrypt 的 DV 证书的。从技术和加密强度上来看,免费的跟付费的没有本质区别。但是,如果用付费的,出了问题可以找客服;如果是免费的,只能自己想办法。在这个方面,跟要不要使用开源软件是一样的。同样是不要钱,大家不觉得用开源软件有什么问题。我觉得以后大家也不会觉得用免费证书有什么问题。兼容性和稳定性方面应该不是大问题,如果不放心,可以同时使用 Let's Encrypt 和 ZeroSSL。


user avatar   limingyang666 网友的相关建议: 
      

滥发证书、证书造假,都不是没发生过哦。


滥发证书的例子:

证书造假的例子:

2012年的超级火焰病毒,利用了MD5签名算法的弱点,成功伪造了Microsoft Enforced Licensing Intermediate的证书,让病毒可以畅行无阻。


事实上,就因为证书不免费,才在某种意义上保证了安全。

一方面,保证安全需要各种基础设施和专业人员,这本身就是有成本的。

另一方面,如果CA能赚钱,那么作恶就有了成本,名声臭了,也就没人信任你了,一顿饭还是顿顿饭,我家的宠物狗都能分清楚。

如果证书免费的话,谁出钱贿赂我,我就给谁发证书,要什么给什么,完全没有心理负担,捞一笔走人。




  

相关话题

  如何看待 Mozilla 决定停止信任沃通 (WoSign) 和 StartCom 颁发的证书? 
  如何看待中国沃通wosign偷偷收购自己的根CA startcom并且签发github.com的证书? 
  为什么 SSL 证书要花钱购买,而不是政府免费发放的?怎么知道卖证书的是否可信呢? 
  为什么 SSL 证书要花钱购买,而不是政府免费发放的?怎么知道卖证书的是否可信呢? 
  如何看待中国沃通wosign偷偷收购自己的根CA startcom并且签发github.com的证书? 
  https证书服务商和网站服务器所在国家相同时,https应对国家级别的监听/篡改是否无效? 
  为什么 SSL 证书要花钱购买,而不是政府免费发放的?怎么知道卖证书的是否可信呢? 
  为什么 SSL 证书要花钱购买,而不是政府免费发放的?怎么知道卖证书的是否可信呢? 
  如何看待 Mozilla 决定停止信任沃通 (WoSign) 和 StartCom 颁发的证书? 
  https证书服务商和网站服务器所在国家相同时,https应对国家级别的监听/篡改是否无效? 

前一个讨论
什么叫做宫崎英高的恶意?具体体现在哪些地方?
下一个讨论
假如有显卡能跑 144 帧,但屏幕刷新率只有 60 帧,那我实际看到的是多少帧?





© 2024-05-15 - tinynew.org. All Rights Reserved.
© 2024-05-15 - tinynew.org. 保留所有权利