X.509证书详解

news2024/11/18 15:34:17

概述

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证书工作原理及应用?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/135962.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring之底层架构核心概念-过滤器

文章目录1.excludeFilters:排除过滤器2.includeFilters:包含过滤器3.问题:spring为什么能通过是否有Component注解来判断是否需要去注册bean呢?3.1 看源码3.2 原因4.总结1.excludeFilters:排除过滤器 用excludeFilters排除UserService 这个类后&#xf…

nature级别图表:单细胞转录组细胞比例统计可视化函数

单细胞转录组细胞比例: 关于单细胞比例的计算和作图我们之前出过3期,单细胞比例的展示是很多单细胞文章必不可少的内容:跟着Cell学单细胞转录组分析(六):细胞比例计算及可视化 相信跟着学习的小伙伴已经掌握了。最近学习一篇《nature medici…

JavaScript 数组-概念,创建数组,遍历数组,新增元素

JavaScript 数组-概念,创建数组,遍历数组,新增元素 目录JavaScript 数组-概念,创建数组,遍历数组,新增元素1. 数组的概念2. 创建数组2.1 数组的创建方式2.2 利用 new 创建数组2.3 利用数组字面量创建数组2.…

模式分类识别 | BiLSTM双向长短期记忆神经网络数据多特征分类预测(Matlab完整程序)

模式分类识别 | BiLSTM双向长短期记忆神经网络数据多特征分类预测(Matlab完整程序) 目录 模式分类识别 | BiLSTM双向长短期记忆神经网络数据多特征分类预测(Matlab完整程序)分类结果基本介绍程序设计参考资料分类结果

深度学习实验(五)——循环神经网络编程

深度学习实验五:循环神经网络编程 本次实验练习使用torch.nn中的类设计一个循环神经网络进行MNIST图像分类。 在本次实验中,你要设计一个CNN,用于将282828 \times 282828的MNIST图像转换为MMDM\times M\times DMMD的特征图,将该特征图看作是…

我,做了两年程序员,存了巨款5000,你们拿什么跟我比?

🕐没错,标题所见,从21年1月份开始从事程序员工作也过了两年了,今年还是没有存到钱。 今年换了一份工作,四月份的时候,从惠州换到了广州工作,从制造业转行到了政务行业,工资涨了&…

Keithley 2604B数字源表-安泰测试

Keithley 2600B 系列系统 SMU 仪器是业界标准电流-电压源和测量解决方案,适用于高度自动化生产测试应用。 双通道和单通道型号都紧密集成一个精密电源、真正电流源、数字万用表和具有脉冲生成功能的电子负载。 另外,TSP? 技术可运行完整测试程序&#x…

多点双向重发布的应用

目录 1.拓扑图 2.实验思路 3.主要配置 4.测试 5.实验总结 1.拓扑图 2.实验思路 在配置完RIP和OSPF之后,在2,3号设备上进行多点的双向重发布由于在进行了多点的双向重发布之后,会出现大量的负载均衡,导致选路不佳的问题解决办…

前端工程师leetcode算法面试必备-二叉树深度广度遍历

一、前言 Medium 难度主要考察结合二叉树性质的 CRUD 操作,而这一切的基础都离不开遍历二叉树。 二叉树是图的子集,因而同样适用以下两种搜索思想: **DFS(深度优先搜索):**沿着根节点递归下去&#xff0c…

普通程序员怎么赚多份钱?解锁更多赚钱新姿势

在当下这个社会,学会如何make money很重要。 咱们是个俗人,赚钱才是社会生存的头等大事。这不是高山流水的世界,而是能力创造财富,对于程序员来说,更是如此。 作为程序员,我们有更多挣钱的姿势!…

通过一个测试项目了解EF CORE

首先用vs2019创建一个.net core项目 可以是控制台应用程序,也可以是asp.net core项目 如果你使用控制台应用程序, 则可以在Main方法中直接使用EF Core进行CRUD操作。这通常用于测试或开发时快速进行数据库操作。 如果你使用ASP.NET Core应用程序, 则可以在控制器中使用EF Cor…

低温超导系统中实现液氦温度准确控制的解决方案

摘要:针对目前两种典型低温超导测试系统中存在的液氦压力控制精度较差的问题,本文提出了相应的解决方案。解决方案分别采用了直接压力控制和流量控制两种技术手段和配套数控阀门,结合24位AD和16位DA的超高精度的PID真空压力控制器和压力传感器…

第三十九章 贪心算法——区间问题(下)

第三十九章 贪心算法——区间问题(下)一、区间问题1:最大不相交区间数量1、思路详解2、代码实现二、区间问题2:区间覆盖1、问题2、思路3、代码一、区间问题1:最大不相交区间数量 1、思路详解 这道题和前一章讲的最后一…

IDEA 使用的小技巧

1、调整 idea 的虚拟内存: 尽管本质都是去改变 .vmoptions 配置文件,但推荐使用Change Memory Settings去调整,选择Edit Custom VM Options 或者在本地磁盘目录更改,通过某些方法破解的 idea 很可能造成 idea 打不开的情况 2、显…

【数据结构-源码分析】HashMap源码分析(超级详细)

文章内容1、HashMap简介2、类结构3、属性4、构造方法5、方法5.1、put方法5.2、resize方法6、jdk1.8的优化1、HashMap简介 HashMap基于哈希表的Map接口实现,是以key-value存储形式存在。(除了不同步和允许使用 null 之外,HashMap 类与 Hashta…

Oracle数据库同步复制工具Beedup产品功能(二)

接续...... 8、对象比较 Beedup提供主从库相关对象比较功能,比对结果包含各类对象概要统计及差异详情。 支持Oracle、SQL Server、MySQL、DB2 对象比较。 9、 对象恢复 Beedup在向从库写入数据时会禁用目标表的关联触发器,另外对于Oracle 序列的状态…

MySQL复制技术方案——GTID复制配置

在日常运维中,GTID带来的最方便的作用就是搭建和维护主从复制,这也是DBA日常工作中最经常的操作了。GTID的主从模式替代了MySQL前期版本中利用二进制日志文件的名称和日志位置的做法,使用GTID使操作和维护都变得更加简洁和可靠。 搭建主从时…

SQL SELECT 语句

SELECT 语句用于从数据库中选取数据。 SQL SELECT 语句 SELECT 语句用于从数据库中选取数据。 结果被存储在一个结果表中,称为结果集。 SQL SELECT 语法 SELECT column1, column2, ... FROM table_name; 与 SELECT * FROM table_name; 参数说明: …

SVM训练莺尾花数据集

SVM训练莺尾花数据集 代码在莺尾花数据集上训练SVM,数据集由莺尾花的测量值及其相应的物种标签组成。该模型使用70%数据用于训练,然后剩余部分进行测试。其中′fit′fit′fit′方法在训练集上训练数据,′score′score′score′数据在返回模型…

HTC FOCUS3在PC端串流FOHEART H1数据手套(腕带)

本教程介绍使用FOHEART H1数据手套与HTC腕带式追踪器驱动VR中的虚拟手运动,实现手部的追踪及定位。与之前教程(HTC FOCUS 3连接FOHEART H1数据手套)不同,这次我们的场景内容运行在PC端,而不是头显端,使用VI…