什么是CA?
证书颁发机构(CA: Certificate Authority)是颁发符合ITU-T公钥基础设施(Public Key Infrastructures = PKI) X.509标准的数字证书的实体。数字证书证明证书所有者(称为主题)的公钥,并证明该所有者控制由证书保护的域。因此,CA充当受信任的第三方,向客户端(称为依赖方)保证它们连接到由经过验证的实体操作的服务器。
终端实体证书本身通过源于根证书的信任链chain-of-trust(也称为信任锚)进行验证。使用非对称加密技术,可以使用根证书的私钥对其他证书进行签名,然后可以使用根证书的公钥对其他证书进行验证,从而继承颁发CA的信任。终端实体证书通常由一个或多个中间证书(有时称为从属subordinator或子CA sub-CAs)签名,因为这样可以在终端实体证书被错误颁发或泄露的情况下保护根证书。
根证书信任通常是通过在操作系统或浏览器中物理分发根证书来建立的。主要的认证程序由微软(Windows和Windows Phone),苹果(OSX和iOS)和Mozilla (Firefox和Linux)运行,并要求ca符合严格的技术要求,并完成WebTrust, ETSI EN 319 411-3(以前的TS 102 042)或ISO 21188:2006审计,以便包含在其发行版中。WebTrust是由美国注册会计师协会和加拿大特许会计师协会开发的一个项目,ETSI是欧洲电信标准协会,而ISO是国际标准组织。
与主要操作系统和浏览器一起分发的根证书被认为是公开或全球可信的,技术和审计要求本质上意味着颁发ca的是跨国公司或政府。目前大约有50个公开可信的CA,尽管大多数/所有CA都有不止一个根证书,而且大多数CA/浏览器论坛的成员,该论坛制定了颁发和管理证书的行业指南。
但是,也可以通过在客户机系统上安全分发和安装根证书来建立私有CA和信任。例如,由Regional Internet Registries区域互联网注册管理机构(AfriNIC、APNIC、ARIN、LACNIC和RIPE NCC)运营的RPKI CAs向Local Internet Registries本地互联网注册管理机构颁发证书,证明其持有的IP地址和AS numbers;以及国际网格信任联盟(International Grid Trust Federation=IGTF),该联盟为分发分布式科学计算中机器使用的服务器和客户端证书提供信任锚。在这些情况下,可以使用由公开信任的CA颁发的证书从站点安全地下载和安装根证书。
X.509 PKI系统的一个弱点是,第三方(CAs)能够为任何域颁发证书,无论请求实体是否实际拥有或以其他方式控制该域domain。验证通常是通过domain validation域验证来执行的——即发送带有身份验证链接的电子邮件到一个已知的管理上负责该域的地址。这通常是标准联系地址之一,如' hostmaster@domain '或WHOIS数据库中列出的技术联系人,但这使其对DNS或BGP协议的中间人攻击敞开了方便之门,或者更简单地说,用户在未保留的域上注册管理地址。也许更重要的是,域验证(Domain Validated, DV)证书并不断言域与法律实体有任何关系,即使域可能看起来与法律实体有关系。
因此,核证机关越来越鼓励使用组织验证(Organisation Validated=OV)和扩展验证( Extended Validation=EV)证书。申请OV证书的实体须接受额外的检查,例如使用公共数据库确认机构名称、地址和电话号码。对于EV证书,还需要对法律机构、物理位置和声称代表请求实体行事的个人的身份进行额外检查。
当然,这仍然不能防止CAs意外地或欺诈性地颁发不正确的证书,并且还存在CA被欺骗颁发假证书的安全破坏事件。尽管在几起引人注目的事件之后,安全程序大幅收紧,但该系统仍然依赖于第三方信任,这导致了RFCs 6698、7671、7672和7673中规定的基于DNS的命名实体认证(DNS-based Authentication of Named Entities=DANE)协议的发展。
使用DANE,域管理员可以将公钥存储在DNS中,或者指定客户端应该接受哪些证书,从而对公钥进行认证。这需要使用DNSSEC,它以加密方式断言DNS记录的有效性,尽管DNSSEC尚未得到广泛部署,并且主要浏览器目前需要安装附加组件以支持DANE。此外,DNSSEC和DANE仍将要求对域名持有人进行验证,这可能必须由domain registries域名注册和/或domain registrars注册商而不是CAs来承担。
参考
internetsociety.org/deploy360/tls