如何理解X.509

发布时间:2021-11-25 22:43:38 作者:柒染
来源:亿速云 阅读:143

如何理解X.509,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

很多开发者可能和我一样觉得X.509这个词很陌生,但其实我们经常和它打交道,属于典型的“日用而不知”的东西。

那么X.509是什么呢?
X.509是一种数字证书格式标准
应用很广泛,现在HTTPS依赖的SSL证书使用的就是使用的X.509格式。这也就是说,每当我们打开https开头的网站都会用到它。

格式标准

简单地说,格式标准就像写HTML文件时的规范:开头声明文档类型,html作为根标签,元信息放在head标签中,页面内容放在body标签中等等。
当然这个例子不是那么贴切,因为实际上不按照这个格式编写的html文件浏览器也能解析出来。
更贴切的例子应该是JSON文件格式,规定了嵌套关系必须用大括号,数组必须用中括号,字符串必须用双引号等等,如果违反了一条其中的规则,那么就无法被正确的解析。

这个标准的具体内容是什么呢?
X.509规定的格式大致如下:

版本号
序列号
签名算法
颁发者
证书有效期
  开始日期
  终止日期
主题
主题公钥信息
  公钥算法
  主体公钥
颁发者唯一身份信息(可选)
主题唯一身份信息(可选)
扩展信息(可选)
签名

下图是某网站的 X.509 证书信息

如何理解X.509

数字证书

那么数字证书又是什么?
简单的说,数字证书就是通过加密算法来制造的一个网络“×××”,用来证明通信方的真实身份。
这个“×××”的制作过程也很有意思,并不是由一个机构统一发放,而是层层颁发。
比如 A 持有了可信证书,那么它颁发给的 B 的证书也是可信的, B 再颁发给 C 的证书也是可信的。
整体结构很像数据结构中的“树”,其中 A 的证书为“根证书”,B 的为“中介证书”,C 的为“终端证书”。
而 A、B 都被称作认证机构,简称 CA(Certificate authority)。

 根证书
   |
中介证书
   |
终端证书

每个证书都可以沿着树往上追溯到根证书,从而形成一条信任链。
比如下面这种图就是某网站证书的信任链信息。

如何理解X.509

关于 X.509 的内容就分享完了。

但是心中的疑惑驱使着我继续探索,这证书靠谱么?
如果***伪造认证机构给***网站颁发证书呢?

安全机制

证书采用的是一种非对称加密机制来保证信息不被窃取和复制。

加密技术

这里稍稍解释下非对称机密,先说说密码学。

信息加密的需求其实一直都存在,从古×××始就使用各种技术来加密重要的信息,但是古代的加密安全程度都是基于加密方式的。

也就是说,别人如果知道了加密方式,那么就可以解密密文信息。

而现代的加密技术安全性在于密钥的安全,也就是说加密方式(算法)是公开的,只要密钥不被窃取或泄露,信息就是安全的。

虽然加密算法有很多种,但是大致上可以分为两类:对称加密和非对称加密。

对称加密的通信双方都是用同一个密钥进行加解密,而非对称加密则要求使用不同的密钥进行加密和解密。

再回到证书的颁发过程,现在很多云服务厂商都提供了申请数字证书的功能,它会像CA发起申请,CA收到申请之后,做了下面的事情:

  1. 使用加密算法生成公私钥对。私钥一般是以.key为后缀名的文件,公钥存储于以.csr结尾的文件中。

  2. .csr文件中补充一些信息比如有效期限等,颁发者,并用自己的私钥对证书进行签名。这样就生成符合X.509格式的证书。

  3. 用户收到证书后,在web服务器(或负载均衡等设备)上进行部署。

SSL证书

符合X.509格式的证书有多种,这里以SSL证书为例。

常见的场景会是下面这样:

  1. 客户端,比如浏览器会向服务端发送请求,服务端为了证明自己的身份,会发送证书给对方。

  2. 浏览器读取证书的数字签名部分,用自身根证书列表中对应的公钥证书对其进行解密。如果解密成功,并且证书哈希值与签名内的哈希值匹配一致,可证明站点提供的证书确实是该CA根证书签发的,否则给出风险提示。

  3. 验证通过之后,使用证书中的公钥对随机数和对称加密算法加密,发送给服务端,服务端用私钥进行解密,获得密钥和加密算法。

  4. 服务端与浏览器后续通信将会使用新的对称加密算法和随机密钥加密信息。

证书在整个流程起到了重要的作用,那么能不能通过窃取和伪造的方式来获取通信内容呢?

那这么说就是绝对安全了吗?非也~

对于DNS劫持的情况还是无解的。比如浏览器访问网站的时候给了一个假证书,然后向CA验证证书的时候又访问了一个假网站,证书就有可能被验证通过。从而***可以作为中间方获取并转发双方的数据。

SSL证书从生成到使用涉及到了三次加解密过程:

  1. 证书生成的时候利用私钥签名,验证证书的时候利用公钥解密。

  2. 确认证书有效后,利用证书中的公钥进行加密,服务端利用私钥解密。

  3. 双方使用新生成的随机密钥进行数据加解密。

用一张结构图表示下HTTPS和X.509的关系:

    HTTPS
  /       \
HTTP    TLS/SSL
        /      \
   通信内容    确认身份
   对称加密    SSL证书 —— X.509 格式,非对称加密

关于如何理解X.509问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. X.509证书的介绍和使用
  2. 如何理解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:如何分析Egret中的config.ts

下一篇:C#如何实现基于Socket套接字的网络通信封装

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》