X.509 证书是基于广泛接受的国际电信联盟 (ITU) X.509 标准的数字证书,该标准定义了公钥基础设施 (PKI) 证书的格式。它们用于管理互联网通信和计算机网络中的身份和安全。它们不显眼且无处不在,我们每天在使用网站、移动应用程序、在线文档和连接设备时都会遇到它们。
安全消息传递和 Web 浏览
X.509 证书的结构优势之一是它是使用由相关公钥和私钥组成的密钥对构建的。应用于密码学,公钥和私钥对用于加密和解密消息,确保发送者的身份和消息本身的安全性。基于 X.509 的 PKI 最常见的用例是传输层安全性 (TLS)/安全套接字层 (SSL),它是 HTTPS 协议的基础,可实现安全的 Web 浏览。但 X.509 协议也适用于应用程序安全、数字签名和其他关键互联网协议的代码签名。
版本历史
X.509 标准的第一个版本于 1988 年发布。为了规范证书颁发规则,国际电联电信标准化部门 (ITU-T) 开发了一个遵循电子目录服务规则的专有名称分级系统用于 X.500,并受到用于在全球范围内分配电话号码的系统的启发,但适用于 Internet 更灵活的组织要求。
1996 年,该标准的第 3 版提供了重大更新,增加了多个扩展,这些扩展至今仍在使用,以支持互联网使用的扩展和新应用。
现在版本 9 是该标准的当前版本,已于 2019 年 10 月定义。
此外,被称为 PKIX 的互联网工程任务组 (IETF) 公钥基础设施工作组在开发自己的互联网 X.509 公钥基础设施证书和证书撤销列表 (CRL) 时采用了 X.509 v3 证书标准配置文件标准(RFC 5280)。
X.509 证书的好处
- 信任——数字证书允许个人、组织甚至设备在数字世界中建立信任。作为所有数字身份的基础,X.509 证书无处不在,对于从网站到应用程序再到端点设备和在线文档的每个连接过程都至关重要。例如,如果没有这些,我们将无法相信 www.amazon.com 实际上是亚马逊的网站。
这种信任级别是由 X.509 证书的工作方式和颁发方式建立的。密钥使用架构允许证书验证:
- 公钥属于证书中包含的主机名/域、组织或个人
- 它已由公开信任的颁发者证书颁发机构 (CA) 签名,如 Sectigo,或自签名。
当证书由受信任的 CA 签名时,证书用户可以确信证书所有者或主机名/域已经过验证,而自签名证书可以在较小程度上被信任,因为所有者不经过任何额外的签发前的验证。
- 可扩展性——这种基于证书的身份识别方法的另一个好处是可扩展性。PKI 架构的可扩展性非常强,可以保护组织每天通过自己的网络和互联网交换的数十亿条消息。实现这一点的原因是,公钥可以广泛且公开地分发,而恶意行为者无法发现解密消息所需的私钥。
X.509 证书如何工作?
X.509 标准基于一种称为抽象语法符号一 (ASN.1)的接口描述语言,它定义了可以跨平台方式进行序列化和反序列化的数据结构。利用 ASN,X.509 证书格式使用相关的公钥和私钥对来加密和解密消息。
公钥基础设施的基础
公钥由一串随机数组成,可用于加密消息。只有预期的接收者才能解密和阅读这条加密消息,并且只能使用相关的私钥来解密和阅读,该私钥也是由一长串随机数组成的。这个私钥是秘密的,只有接收者知道。由于公开密钥向全世界公开,因此使用复杂的加密算法创建公钥,通过生成不同长度的随机数字组合将它们与关联的私钥配对,这样它们就不会被暴力攻击利用。用于生成公钥的最常用算法是:
- Rivest-Shamir-Adleman (RSA)
- 椭圆曲线密码学 (ECC)
- 数字签名算法 (DSA)
公钥的密钥大小或比特长度决定了保护的强度。例如,2048 位 RSA 密钥通常用于 SSL 证书、数字签名和其他数字证书。此密钥长度提供了足够的加密安全性,以防止黑客破解算法。CA/浏览器论坛等标准组织定义了支持的密钥大小的基线要求。
发行领域
X.509 证书字段包含有关颁发证书的身份以及颁发者 CA 的身份的信息。标准字段包括:
- 版本– 适用于证书的 X.509 版本
- 序列号– CA 提供的唯一序列号标识符,用于将证书与其他证书区分开来
- 算法信息——颁发者用来签署证书的加密算法
- 颁发者专有名称– 颁发证书的 CA 的名称
- 证书的有效期– 开始/结束日期和时间,它是有效的并且可以信任
- 主题专有名称– 颁发证书的身份名称
- 主题公钥信息——与身份相关的公钥
图:TLS/SSL 证书中显示的标准证书信息字段
通用数字证书扩展
除了其标准信息字段外,X.509 版本 3 还定义了多个扩展,旨在支持客户端应用程序使用 Internet 的扩展方式。目前使用的两个常见 X.509 证书扩展是主题备用名称和密钥用法。
- 主题备用名称扩展允许其他身份也与证书的公钥相关联。这可能包括其他域、DNS 名称、电子邮件地址和 IP 地址。基于此扩展, CA 提供的多域证书通常称为 SAN 证书。
- 密钥使用将密钥的使用限制为特定目的,例如“仅签名”。
数字证书应用分层信任链
为了进一步建立身份的信任,通常将多个数字证书组合起来,构建一个分层的信任链,提供一系列的验证层。如前所述,作为 X.509 验证过程的一部分,每个都必须由颁发者 CA 签名。CA 被命名并存储在证书的根目录中。其他中间证书可以包含在信任链中,并且必须经过验证。
例如,当 Web 浏览器客户端读取证书时,它必须能够遵循证书的分层路径,包括验证所需的任何中间体,这些中间体递归地链接回客户端信任存储中列出的根 CA,从而形成完整的链的信任。
图:SSL/TLS 证书通常结合中间证书创建分层信任链
证书吊销列表 (CRL)
X.509 标准还定义了证书撤销列表的使用,该列表标识了在计划的到期日期之前已被颁发 CA 撤销的所有数字证书。
这些被吊销的证书不应再受信任。
CRL 提供了一种简单的方法来分发有关这些无效证书的信息。但是,流行的 Web 浏览器和客户端越来越不赞成使用它们,转而支持在线证书状态协议 (OCSP) 和 OCSP 装订,它们提供了完整的撤销功能。
PKI 证书编码
X.509 标准中未定义的一个值得注意的元素是证书内容应如何编码以存储在文件中。
但是,通常有两种编码模式用于将数字证书存储在文件中:
- 可分辨编码规则 (DER) – 最常见,因为架构处理大多数数据对象。由 DER 编码的证书是二进制文件,不能被文本编辑器读取,但可以被 Web 浏览器和许多客户端应用程序处理。
- 隐私增强邮件 (PEM) 是 一种加密的电子邮件编码模式,可用于将 DER 编码的证书转换为文本文件。
X.509 公钥基础设施的常见应用
许多互联网协议依赖于 X.509,PKI 技术的许多应用每天都在使用,包括 Web 服务器安全、数字签名和文档签名以及数字身份。
使用 TLS/SSL 证书的 Web 服务器安全性
PKI 是安全套接字层 (SSL) 和传输层安全 (TLS) 协议的基础,它们是 HTTPS 安全浏览器连接的基础。如果没有 SSL 证书或 TLS 来建立安全连接,网络犯罪分子可以利用 Internet 或其他 IP 网络使用各种攻击媒介(例如中间人攻击)来拦截消息并访问其内容。
数字签名和文档签名
除了用于保护消息之外,基于 PKI 的证书还可用于数字签名和文档签名。
数字签名是一种特定类型的电子签名,它利用 PKI 来验证签名者的身份以及签名和文档的完整性。数字签名不能以任何方式更改或复制,因为签名是通过生成散列创建的,散列使用发送者的私钥加密。这种加密验证在数学上将签名绑定到原始消息,以确保发送者经过身份验证并且消息本身没有被更改。
代码签名
代码签名使应用程序开发人员能够通过对应用程序、驱动程序和软件程序进行数字签名来增加一层保证,以便最终用户可以验证第三方没有更改或破坏他们收到的代码。为了验证代码的安全性和可信性,这些数字证书包括软件开发人员的签名、公司名称和时间戳。
电子邮件证书
S/MIME 证书验证电子邮件发件人并加密电子邮件内容,以防止日益复杂的社会工程和鱼叉式网络钓鱼攻击。通过加密/解密电子邮件和附件以及验证身份,S/MIME 电子邮件证书向用户保证电子邮件是真实且未经修改的。
SSH 密钥
SSH 密钥是 X.509 证书的一种形式,它提供用于安全外壳 (SSH) 协议的安全访问凭证。由于 SSH 协议广泛用于云服务、网络环境、文件传输工具和配置管理工具中的通信,大多数组织使用 SSH 密钥来验证身份并保护这些服务免受意外使用或恶意攻击。SSH 密钥不仅可以提高安全性,还可以实现当今企业所需规模的连接流程、单点登录 (SSO) 以及身份和访问管理的自动化。
数字身份
X.509 数字证书还提供有效的数字身份认证。随着数据和应用程序从传统网络扩展到移动设备、公共云、私有云和物联网设备,保护身份变得比以往任何时候都更加重要。数字身份不必局限于设备;它们还可用于对人员、数据或应用程序进行身份验证。基于此标准的数字身份证书使组织能够通过替换密码来提高安全性,攻击者越来越擅长窃取密码。
如何获得 X.509 证书?
部署 X.509 证书的一个关键组件是一个受信任的证书颁发机构或代理,用于颁发证书并发布与个人私钥相关联的公钥。如果没有这个受信任的 CA,发件人就不可能知道他们实际上正在使用与收件人的私钥相关联的正确公钥,而不是与意图拦截敏感信息并将其用于邪恶目的的恶意行为者相关联的密钥。
Sectigo 等受信任的第三方 CA 充当证书颁发机构,但许多企业和技术提供商也选择充当自己的 CA。他们也可能决定使用自签名证书。无论哪种方式,都必须信任证书颁发机构来检查和保证他们发布其公钥的所有发件人的身份,确保这些公钥确实与发件人的私钥相关联,并保护其内部的信息安全级别自己的组织来防范恶意攻击。
管理 X.509 证书
x.509 证书最关键的方面之一是使用自动化有效地大规模管理这些证书。如果没有优秀的人员、流程和技术,公司就会面临安全漏洞、中断、品牌受损和关键基础设施故障的风险。