打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
数字证书

上一篇博客讲到了RSA加密算法,这里就写一下RSA应用最广泛的-数字证书。数字证书的作用就是在数据传输的过程中证明用户的身份,保证用户不是伪装的。

为什么需要数字证书

假设一个正常的非对称加密通信如下:

现在假设有个黑客Sam获取了Cass的公钥,并伪装成Dean, 是完全可能的。那么就需要一种验证用户身份的机制,那就是数字证书。

数字证书标准

1、X.509版本号:指出该证书使用了哪种版本的X.509标准,版本号会影响证书中的一些特定信息。目前的版本是3。

2、证书持有人的公钥:包括证书持有人的公钥、算法(指明密钥属于哪种密码系统)的标识符和其他相关的密钥参数。

3、证书的序列号:由CA给予每一个证书分配的唯一的数字型编号,当证书被取消时,实际上是将此证书序列号放入由CA签发的CRL(Certificate Revocation List证书作废表,或证书黑名单表)中。这也是序列号唯一的原因。

4、主题信息:证书持有人唯一的标识符(或称DN-distinguished name)这个名字在 Internet上应该是唯一的。DN由许多部分组成,看起来象这样:

CN=Bob Allen, OU=Total Network Security Division

O=Network Associates, Inc.

C=US

这些信息指出该科目的通用名、组织单位、组织和国家或者证书持有人的姓名、服务处所等信息。

5、证书的有效期:证书起始日期和时间以及终止日期和时间;指明证书在这两个时间内有效。

6、认证机构:证书发布者,是签发该证书的实体唯一的CA的X.500名字。使用该证书意味着信任签发证书的实体。(注意:在某些情况下,比如根或顶级CA证书,发布者自己签发证书)

7、发布者的数字签名:这是使用发布者私钥生成的签名,以确保这个证书在发放之后没有被撰改过。

8、签名算法标识符:用来指定CA签署证书时所使用的签名算法。算法标识符用来指定CA签发证书时所使用的公开密钥算法和HASH算法。

下面是截取了github的ssl证书的截图:

数字证书的颁发过程

先上个图吧:

图中给出了基本的证书申请流程,这个流程一般体现的场景如:网页服务器从CA请求SSL证书用于https加密; 像苹果服务器请求开发者证书。

CA与系统根证书

可能大家经常要听到CA这个词,那什么是CA呢,CA就是上图中的证书颁发机构,因为证书颁发机构关系到所有互联网通信的身份安全,因此一定要是一个非常权威的机构。所以这样的专门管理和颁发证书的机构就是CA机构。

CA证书可以具有层级结构,CA建立自上而下的信任链,下级CA信任上级CA,下级CA由上级CA颁发证书并认证。如:

如果说CA保证互联网交易安全的根本保证,那么系统根证书就是个人PC安全的根本保证。系统根证书里保存了受信任的CA证书的根证书,用户验证一个数字证书的正确性都是从系统根证书开始的。

如上图中: google.com.hk的ssl证书由 Google Internet Authority G2这个CA来验证。而Google Internet Authority G2由 GeoTrust Global CA来验证; GeoTrust Global CA由系统根证书Equifax Secure Certificate Authority来验证。

如何查看系统根证书在mac系统的keychain中直接就可以查看了,在windows系统中在开始的搜索中直接键入:certmgr.msc,就可以打开证书查看器如果系统根证书被篡改,系统的安全性就受到威胁

所以,不要轻易的信任根证书,除非你是开发者,了解自己的所作所为

HTTPS加密过程

话不多说,先上一幅图:

由上可以看出https协议是很安全的,谷歌公司已经大力推广HTTPS的使用。

但是前提是不要轻易信任不明发布源的数字证书,不要改动系统根证书。在ASIHttpRequest中提供了一个属性:validatesSecureCertificate,当设置其位NO时,可以忽略对数字证书进行有效性验证。这样做是不安全的,因此建议我们平时在测试时可以将其设置为NO,但发布时最好还是设置为YES.

下面即将讲到一种监察的情况。

为什么Fiddler可以抓https的数据包

如果你使用过Fiddler进行过网络抓包调试,应该发现Fiddler是可以抓取https网络请求的数据包的,以前我也有过疑惑,如果https这么容易就被Fiddler这样的工具截取到数据,那么还有什么安全性可言呢,还要https协议干嘛呢。但其实不然,https还是很安全的。下面就解释下为何Fiddler可以抓https的包。

Fiddler对服务端充当客户端,对客户端充当服务端,并颁发证书给不同的domain

但是Fidder不是正规的CA证书,它颁发的证书不受浏览器信任的,所以如果你的网络正被Fiddler这样的Middle Men监控着,那么https接请求都会报证书不受信任的,像这样:

。但是如果代码中忽略了https中ssl证书合法性的验证,那么https的安全性就相当于没有了。所以不要把ASIHttpRequest中的validatesSecureCertificate属性单纯的设置为NO.

这篇博客先到这里吧。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
公钥基础设施PKI
一文让你看懂,https如何保证数据传输的安全性
2021年软考网规笔记:公钥基础设施PKI !
为什么如此安全的Https协议却仍然可以被抓包呢?
【fiddler】抓取https数据失败,全部显示“Tunnel to......443”
Fiddler抓包工具之fiddler设置抓HTTPS的请求&证书安装_fiddler安装证书
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服