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 证书使用相关的公钥和私钥对进行身份验证和 Internet 通信和计算机网络的安全性

发行字段

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,发件人就不可能知道他们实际上正在使用与收件人的私钥相关联的正确公钥,而不是与意图拦截敏感信息并将其用于邪恶目的的恶意行为者相关联的密钥。

WoTrus等受信任的第三方 CA 充当证书颁发机构,但许多企业和技术提供商也选择充当自己的 CA。他们也可能决定使用自签名证书。无论哪种方式,都必须信任证书颁发机构来检查和保证他们发布其公钥的所有发件人的身份,确保这些公钥确实与发件人的私钥相关联,并保护其内部的信息安全级别自己的组织来防范恶意攻击。

什么是 X.509 证书以及它是如何工作的?的更多相关文章

  1. X.509证书生成

    创建数字证书 用户对数字证书的认可决定于对证书颁发机构的信任,所以证书颁发机构决定了数字证书的可用范围.由于官方认可的数字证书颁发机构,比如VeriSign.Thawte(OpenSSL),具有普遍的 ...

  2. X.509证书_生成X.509协议的证书

    用法:1. 用NOTE打开,修改按实际情况脚本中的(1)~ (6)处参数2. 找一台含JVM环境的WIN机器3. 双击执行后,会生成一对密钥4. 请确保当前使用的JDK版本为6.0!!! @echo ...

  3. WCF X.509证书双向认证小结

    最近在学习WCF X.509证书验证,想实现使用证书实现服务端和客户端的双向认证,实现原理是利用了数字证书包含的一对非对称密钥来实现数字签名及加密.所谓非对称密钥是采用两个密钥将加密和解密能力分开:一 ...

  4. 利用X.509证书对XML进行加密和签名

    综述       XML加密和签名技术应用非常广泛. ASP.NET 使用XML加密对配置信息进行加密:InfoPath使用XML签名对表单进行签名:Web服务使用XML加密和签名对SOAP消息进行加 ...

  5. X.509证书的编码及解析:程序解析以及winhex模板解析

    一.证书的整体结构:证书内容.签名算法.签名结果. 用ASN.1语法描述如下: Certificate::=SEQUENCE{ tbsCertificate TBSCertificate, signa ...

  6. 使用OpenSSL工具制作X.509证书的方法及其注意事项总结

    版权声明:本文为博主原创文章.转载请注明出处. https://blog.csdn.net/Ping_Fani07/article/details/21622545 怎样使用OpenSSL工具生成根证 ...

  7. 基于X.509证书和SSL协议的身份认证过程实现(OpenSSL可以自己产生证书,有TCP通过SSL进行实际安全通讯的实际编程代码)good

    上周帮一个童鞋做一个数字认证的实验,要求是编程实现一个基于X.509证书认证的过程,唉!可怜我那点薄弱的计算机网络安全的知识啊!只得恶补一下了. 首先来看看什么是X.509.所谓X.509其实是一种非 ...

  8. openssl x.509证书

    openssl x.509证书 openssl x.509证书 ngnix 支持

  9. X.509证书及CeritificationPath及PKCS

    X.509,数字证书标准.X.509用在包含SSL/TLS在内的很多网络协议中,证书内部包含一个public key和一个identity(hostname,organization等). X.509 ...

随机推荐

  1. pod资源的健康检查-liveness探针的exec使用

    使用探针的方式对pod资源健康检查 探针的种类 livenessProbe:健康状态检查,周期性检查服务是否存活,检查结果失败,将重启容器 readinessProbe:可用性检查,周期性检查服务是否 ...

  2. 编译boost库的dll和lib

    下载Boost 下载链接:Boost Downloads 下载完成后,将其解压放置到需要编译保存的目录下,比如我自己的目录: F:\Work\Boost 打开VS编译 如果是使用的VS2017,则打开 ...

  3. Html飞机大战(四):状态的切换(界面加载类的编辑)

    好家伙,接着写   既然我们涉及到状态了,那么我们也会涉及到状态的切换   那么我们怎样切换状态呢? 想象一下,如果我玩的游戏暂停了,那么我们肯定是通过点击或者按下某个按键来让游戏继续   这里我们选 ...

  4. Typora 最后免费版本也不能用了?简单一招搞定

    作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 Typora是一款优秀的 Markdown 编辑 ...

  5. cnblogs-theme-blogure

    cnblogs-theme-blogure 又一个博客园主题 Blogure. 它使用 PetiteVue 和 PicoCSS. 喜欢的话可以帮个点 Star 么? 快速开始 确保博客园有 JS 权限 ...

  6. ELK基于ElastAlert实现日志的微信报警

    文章转载自:https://mp.weixin.qq.com/s/W9b28CFBEmxBPz5bGd1-hw 教程pdf文件下载地址 https://files.cnblogs.com/files/ ...

  7. Solutions:Elastic SIEM - 适用于家庭和企业的安全防护 ( 五)

  8. 第六章:Django 综合篇 - 2:核心配置项

    Django的默认配置文件中,包含上百条配置项目,其中很多是我们'一辈子'都不碰到或者不需要单独配置的,这些项目在需要的时候再去查手册. 强调:配置的默认值不是在settings.py文件中!不要以为 ...

  9. Dockerfile文件中的ENTRYPOINT,CMD命令跟k8s中command,args之间的关系

  10. MySQL数据表更新模板

    -- ---------------------------- -- 新增表 -- ---------------------------- CREATE TABLE `biz_circle_lead ...