概述
X.509是公钥基础设施(PKI)的标准格式。X.509证书就是基于国际电信联盟(ITU)制定的X.509标准的数字证书。X.509证书主要用于识别互联网通信和计算机网络中的身份,保护数据传输安全。X.509证书无处不在,比如我们每天使用的网站、移动应用程序、电子文档以及连接的设备等都有它的身影。
X.509证书的结构优势在于它是由公钥和私钥组成的密钥对而构建的。公钥和私钥能够用于加密和解密信息,验证发送者的身份和确保消息本身的安全性。基于X.509的PKI最常见的用例是使用SSL证书让网站与用户之间实现HTTPS安全浏览。X.509协议同样也适用于应用程序安全的代码签名、数字签名和其他重要的互联网协议。
X.509证书的好处
一、建立信任
数字证书能帮助个人、组织机构甚至设备在网络世界中建立信任。作为所有数字身份的基础,X.509证书无处不在,从网站到应用程序,再到端点设备和在线文档,X.509证书都至关重要。如果没有这些证书,我们将无法相信浏览器上的任何网站。
这种信任的建立是通过X.509证书的工作原理和颁发方式实现的。X.509证书密钥结构允许验证:
公钥属于证书中的域名、组织或个人。
X.509证书是由权威受信的证书颁发机构 (CA) 如Sectigo签名,或是自签名证书。
当证书由受信任的CA签名时,证书用户可以确信证书所有者或域名已经过验证,而自签名证书的可信度较低,因为域名所有者无需经过任何验证即可获取证书。
二、可扩展性
X.509证书的另一个好处是可扩展性。PKI架构具有可扩展性,通过广泛分发公钥,可以保护组织机构每天在公司内网到公网之间安全交换数十亿条消息,这是因为恶意攻击者无法获得解密信息所需的私钥,进而保障了网络安全。
X.509证书工作原理
X.509标准基于一种被称为抽象语法表示法 (ASN.1)的接口描述语言,这种接口描述语言定义了可以以跨平台方式序列化和反序列化的数据结构。利用ASN,X.509证书格式可以使用公钥和私钥来加密和解密信息。
一、PKI的基础——加密算法
公钥是由一串随机数组成的,可用于加密信息。只有预期的接收者使用关联的私钥才能解密、读取信息。该私钥也是由一长串随机数组成的,私钥是秘密储存的,只有接收者知道。由于公钥是公开的,因此公钥是使用了复杂的密码算法而创建的,通过生成不同长度的随机数字组合将它与关联的私钥配对,这样它们就不易被暴力攻击利用。用于生成公钥的最常见加密算法是:
- Rivest–Shamir–Adleman (RSA)
- 椭圆曲线密码术 (ECC)
- 数字签名算法 (DSA)
公钥的密钥长度决定了保护的强度。例如,2048位的RSA密钥通常应用于SSL证书、数字签名和其他数字证书。这个密钥长度提供了足够的安全加密,防止黑客破解算法。
公钥和私钥的作用如下:
二、X.509证书结构
X.509证书包含有关颁发者CA和证书使用者的信息。X.509证书标准字段包括以下内容:
注:X.509标准一共有三个版本。第一个版本在1988年发布,名为X.500;到1996年更新了版本,增加了多个扩展以适应网络发展要求;2019年定义了现在的标准版本,即X.509标准。
三、数字证书常见扩展项
除了标准信息字段外,X.509第三版还增加了多个扩展项,其目的是为了支持客户端应用程序使用Internet的扩展方式。目前使用的两个常见X.509证书扩展项是主题可选名称(Subject Alternative Name)和密钥用法(Key Usage)。
- 主题可选名称扩展允许其他身份也可以与证书公钥相关联,除主题名外还包括其他域名,DNS名称、电子邮件地址和IP地址。基于此扩展项,CA可以提供多域名证书,通常也叫SAN证书。
- 密钥用法能够将密钥的使用限制为特定目的,例如“仅签名”。
四、数字证书信任链
为了进一步建立信任,通常将多个数字证书将结合起来,构建一个分层信任链。如前所述,作为 X.509验证过程的一部分,每个证书都必须由颁发者CA签名。CA存储在证书的根目录中,其他中间证书经过验证后存储在信任链中。当Web浏览器客户端读取证书时,它必须遵循验证的分层路径,包括经验证的中间证书,这些中间证书将链回存储在客户端信任链中的根证书。如下图所示,主题名racent. com将依次分层链回上海锐成信息科技有限公司 EV CA、USERTrust RSA Certificate Authority、最后是根证书为Sectigo(AAA)。
五、证书吊销列表 (CRL)
X.509标准还定义了证书吊销列表(CRL)的使用,该列表标识了预定到期日期之前已被CA吊销的所有数字证书,出现在CRL中的证书将不再被信任。
注意:如今的Web浏览器和客户端越来越不支持使用CRL,转而支持在线证书状态协议 (OCSP)和OCSP装订。OCSP更新更快速,大大节省了浏览器校验证书时间。
六、PKI证书编码
那么证书内容是如何编码并存储在文件中的?这个问题在X.509标准中还没有被界定下来。
但是,目前将数字证书存储在文件中的最常见编码模式有两种:
- 可分辨编码规则(DER):最常见,因为DER能处理大部分数据。DER编码的证书是二进制文件,文本编辑器无法读取,但Web浏览器和许多客户端应用程序可以进行数据处理。
- 隐私增强邮件(PEM):这是一种加密的电子邮件编码规则,可将DER编码的证书转换为文本文件。
X.509证书的常见应用
许多Internet协议都依赖于X.509,另外还有许多应用程序都在使用PKI技术,包括Web服务器安全、数字签名、文档签名以及数字身份。
一、TLS/SSL证书——确保Web服务器的安全
PKI是SSL协议和TLS协议的基础,他们又是浏览器HTTPS安全连接的基础。如果没有SSL证书建立安全连接,网络犯罪分子就可以利用互联网或其他IP网络来拦截消息,常见的犯罪案例是中间人攻击。
二、数字签名和文档签名
除了用于保护传输数据安全之外,基于PKI的证书还可以用于数字签名和文档签名。
数字签名和文档签名是一种特殊类型的电子签名,它能够利用PKI来验证签名者的身份,还能验证签名文档的完整性。数字签名不能以任何方式更改或复制,因为签名是通过生成散列来创建的,该散列通过发件人的私钥进行加密。这种加密验证将签名绑定到原始信息上,可以确保发送者经过身份验证,还能保证信息本身未被篡改。
三、代码签名
代码签名通过对应用程序、驱动程序或软件程序进行数字签名,帮助应用开发商为这些程序提供进一步的保护。通过代码签名,终端用户可以相信代码没有受到第三方的篡改和破坏。为了保障代码的安全性和可信度,代码签名证书提供了软件开发商的签名、公司名称和时间戳。
四、电子邮件证书
电子邮件证书又叫做S/MIME邮件安全证书,可以验证电子邮件发件人身份并加密邮件内容,防止网络钓鱼攻击。通过加密和解密邮件及附件,验证邮件发送方的身份,S/MIME邮件安全证书可以保证邮件的真实性和完整性。
五、SSH密钥
SSH又叫做安全外壳协议,而SSH密钥是X.509证书的一种形式,它提供在安全外壳协议中使用的安全访问凭证。由于SSH协议广泛用于云服务、网络环境、文件传输工具和配置管理工具中的远程通信,因此大多数组织使用SSH密钥来验证身份并保护它们免遭误用和恶意攻击。SSH密钥可以提高安全性,实现连接过程、单点登录机制(SSO)、身份和访问管理的自动化。
六、数字身份
X.509数字证书还提供有效的数字身份认证。随着数据和应用程序从传统网络扩展到移动设备、公有云、私有云和物联网设备,身份认证变得越来越重要。数字证书不仅限于对设备进行身份验证,还可用于对人员、数据或应用程序进行身份验证。如今,由于网络攻击者越来越擅长于窃取密码,基于PKI的数字证书使用无密码身份认证来提高安全性,防止密码凭证丢失或被盗取。
如何获得X.509证书?
部署X.509证书的关键是找到一个受信任的证书颁发机构(CA)或代理商,让它们来颁发证书,并提高与私钥相关的公钥。如果没有受信任的CA,发件人就不知道他们实际上使用的公钥到底是与收件人私钥相关联的正确公钥,还是与意图拦截敏感信息的恶意行为者相关联的公钥。
参考
什么是X.509证书?X.509证书工作原理及应用?