数字证书签名,Lets Encrypt和数字证书安全

现在安全体系中,最重要的一部分是数字安全加密体系,包括数字内容的加密解密,数字签名和验证 。本文虫虫给大家介绍一下数字证书签名以及世界最大的网站Https免费签名Let's Encrypts,及数字证书签名的安全性等问题 。
概述
数字签名就是在信息的后面再加上一段内容,可以证明信息没有被修改过,怎么样可以达到这个效果呢?一般是对信息做不可逆的哈希计算得到一个哈希值 。在把信息发送出去时,把这个哈希值加密后做为一个签名和信息一起发出去 。接收方在收到信息后,会重新计算信息的哈希值,并和信息所附带的哈希值(解密后)进行对比,如果一致,就说明信息的内容没有被修改过 。数字签名在现在现代安全体系中非常重要基础,可以用来确保文件的完整性、防止文件篡改以及身份认证等 。首先我们说说几个常见的数字证书基本概念:
RFC
RFC的意思是Request For Comments,中文对应为请求注释,它是一堆描述不同协议的文本文件 。如果想了解SSL,TLS(新的SSL)和x509证书(用于SSL和TLS的证书)如何工作,例如,想编写自己的OpenSSL,则必须阅读相应的TLS RFC 。:的X509证书对应的rfc5280和TLS(1.2)对应的rfc5246 。

数字证书签名,Lets Encrypt和数字证书安全

文章插图
x509格式
x509是为非正式的互联网电子邮件,IPsec和WWW应用程序定义的证书规范,x509发展了三个版本,现在广泛使用的RFC v3,其结构如下:
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
这些是ASN.1结构 。现代的证书就是这样的:
第一个对象包含将要签名的所有感兴趣的内容,因此我们将其称为"待签名证书"
第二个对象包含CA用于对该证书签名的签名类型(例如:sha256)
最后一个对象不是对象,只是与DER编码后的TBSCertificate 签名相对应的一些位
ASN.1
它看起来很小,但是每个对象都有一定深度 。
TBSCertificate是最大的TBSCertificate,包含一堆有关客户端,CA,客户端的公钥等信息 。
数字证书签名,Lets Encrypt和数字证书安全

文章插图
DER
当然不会像这样发送证书 。而使用DER将其编码为二进制格式 。
每个字段名都会被忽略,如果我们证书的形成方式,那么将不可能理解每个值的含义 。
每个值都编码为TLV三元组:[TAG,LENGTH,VALUE]
例如,查看Github的证书
数字证书签名,Lets Encrypt和数字证书安全

文章插图
右边是DER编码证书的十六进制转储,左边是ASN.1格式的译文 。
如上面所见,如果没有RFC,我们真的不知道每个值对应什么 。openssl工具中自带了很方面的命令行工具,可以用来解析证书的内容 。简单使用openssl x509验证即可:
openssl x509 -in cert.pem -noout -text
数字证书签名,Lets Encrypt和数字证书安全

文章插图
Let's Encrypt数字签名
说到数字签名就不能不对Let's Encrypt竖起大拇指,可以说它以一己之力为整个互联网网站撑起了HTTPS的天 。Let's Encrypt成立于2014年,是一家非盈利性的认证机构,目前为约2亿个网站提供了数字证书认证,累积签发了10亿张的证书 。
数字证书签名,Lets Encrypt和数字证书安全

文章插图
Let's Encrypt成功的关键取决于两点:
它是免费的 。Let's Encrypt之前,大多数证书颁发机构向要获得证书的网站管理员收取费用 。
Let's Encrypt证书和商业证书的区别:
数字证书签名,Lets Encrypt和数字证书安全

文章插图
它是自动化的 。如果遵循其标准化协议,则可以通过API请求,续订甚至吊销证书 。与此形成对比的是其他证书机构需要手动处理并需要一些时间来颁发证书 。
如果网站管理员希望网站example-com(通过HTTPS)向用户提供安全的连接,则可以向Let's Encrypt发出申请证书,并在证明自己拥有域example-com并颁发证书后,便可以使用该证书来与任何信任"Let's Encrypt"的浏览器协商安全连接 。
这个实际流程如下:
1、Alice使用RSA公钥在Let's Encrypt中注册 。
2、Alice要求Let's Encrypt证书example-com 。
3、Let's Encrypt让Alice证明自己是example-com所有者,需要签发一些数据并将其上传到example-com/.well-known/acme-challenge/some_file 。
4、爱丽丝签署并上传签名后,要求Let's Encrypt其进行检查 。
5、Let's Encrypt检查是否可以访问上的文件example-com,如果它成功下载了签名并且签名有效,则Let's Encrypt向Alice颁发证书 。


推荐阅读