公开密钥认证(public key certificate)又称数字证书或身份证书。是用于公开密钥基础建设的电子文件,用来证明公开密钥拥有者的身份。此文件包含了公钥信息、拥有者身份信息(主体)、以及数字证书认证机构(发行者)对这份文件的数字签名,以保证这个文件的整体内容正确无误。
认证(public key certificate),又称(digital certificate)或(identity certificate)。是用于公开密钥基础建设的电子文件,用来证明公开密钥拥有者的身份。此文件包含了公钥信息、拥有者身份信息(主体)、以及数字证书认证机构(发行者)对这份文件的,以保证这个文件的整体内容正确无误。
拥有者凭着此文件,可向电脑系统或其他用户表明身份,从而对方获得信任并授权访问或使用某些敏感的电脑服务。电脑系统或其他用户可以透过一定的程序核实证书上的内容,包括证书有否过期、数字签名是否有效,如果你信任签发的机构,就可以信任证书上的密钥,凭公钥加密与拥有者进行可靠的通信。
简而言之,认证机构用自己的私钥对需要认证的人(或组织机构)的公钥施加数字签名并生成证书,即证书的本质就是对公钥施加数字签名。
数字证书的其中一个最主要好处是在认证拥有者身份期间,拥有者的敏感个人资料(如出生日期、身份证号码等)并不会传输至索取资料者的电脑系统上。透过这种资料交换模式,拥有者既可证实自己的身份,亦不用过度披露个人资料,对保障电脑服务访问双方皆有好处。
人们透过信任数字证书认证机构的、及其使用公开密钥加密作数字签名核发的,形成信任链架构,已在 tls 实现并在万维网的 https、在电子邮件的 smtps 和 starttls 广泛应用。业界现行的标准是国际电信联盟电信标准化部门制定的 x.509,并由 ietf 发行的 rfc 5280 详细述明。而在不少国家/地区,都已立法承认使用数字证书所作的数字签名拥有等同亲笔签名的法律效力(如欧洲联盟、香港、台湾、美国、加拿大)。
证书种类
根证书(自签证书)、中介证书和终端实体(tls 服务器/客户端)证书的关系
自签证书
在用于小范围测试等目的的时候,用户也可以自己生成数字证书,但没有任何可信赖的人签名,这种自签名证书通常不会被广泛信任,使用时可能会遇到电脑软件的安全警告。
根证书
根证书获得广泛认可,通常已预先安装在各种软件(包括操作系统、浏览器、电邮软件等),作为信任链的起点,来自于公认可靠的政府机关(如香港邮政、台湾网络信息中心)、证书颁发机构公司(如 digicert、google)、非营利组织(如 let’s encrypt)等,与各大软件商透过严谨的核认程序才在不同的软件广泛部署。由于部署程序复杂费时,需要行政人员的授权及机构法人身份的核认,一张根证书有效期可能长达二十年以上。在某些企业,也可能会在内部电脑自行安装企业自签的根证书,以支持内部网的企业级软件;但是这些证书可能未被广泛认可,只在企业内部适用。
中介证书
认证机构的一个重要任务就是为客户签发证书,虽然广泛认可的认证机构都已拥有根证书,相对应的私钥可用以签署其他证书,但因为密钥管理和行政考虑,一般会先行签发中介证书,才为客户作数字签署。中介证书的有效期会较根证书为短,并可能对不同类别的客户有不同的中介证书作分工。
授权证书
授权证书又称属性证书,本身没有公钥,必须依附在一张有效的数字证书上才有意义,其用处是赋予相关拥有人签发终端实体证书的权力;某些情况下,如果只在短期内授予证书机构签发权力,便可以不改变(缩短)该机构本身持有的证书的有效期。这种情况,类似于某人持有长达十年期的护照,而只透过签发短期入境签证,来个别赋予护照持有人额外权力。
终端实体证书
其他不会用作签发其他证书的,都可称为终端实体证书,在实际的软件中部署,以便创建加密通道时应用。
tls 服务器证书
服务器通常以域名形式在互联网上提供服务,服务器证书上主体的通用名称就会是相应的域名,相关机构名称则写在组织或单位一栏上。服务器证书(包括公钥)和私钥会安装于服务器(例如 apache),等待客户端连接时协议加密细节。客户端的软件(如浏览器)会执行认证路径验证算法以确保安全,如果未能肯定加密通道是否安全(例如证书上的主体名称不对应网站域名、服务器使用了自签证书、或加密算法不够强),可能会警告用户。
通配符证书
如果服务器证书上主体的通用名称(或主体别名)一栏以通配符前缀,则该证书可以用于旗下的所有子域名,特别适合较具规模、或设有多个子网站的机构一次过申领,套用于多个服务器上;即使未来创建新的子域名,也可以套用。但通配符不可用于扩展认证证书上。
tls 客户端证书
有时候,某些 tls 服务器可能会在创建加密通道时,要求客户端提供客户端证书,以验证身份及控制访问权限。客户端证书包含电子邮件地址或个人姓名,而不是主机名。但客户端证书比较不常见,因为考虑到技术门槛及成本因素,通常都是由服务提供者验证客户身份,而不是依赖第三方认证机构。通常,需要使用到客户端证书的服务都是内部网的企业级软件,他们会设立自己的内部根证书,由企业的技术人员在企业内部的电脑安装相关客户端证书以便使用。在公开的互联网,大多数网站都是使用登录密码和 cookie 来验证用户,而不是客户端证书。
在台湾,中华民国内政部证书管理中心根据电子签名法负责签发自然人证书,让国民在网络使用各种政府服务。
客户端证书在 rpc 系统中更常见,用于验证连接设备的许可授权。