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

现在安全体系中 , 最重要的一部分是数字安全加密体系 , 包括数字内容的加密解密 , 数字签名和验证 。本文虫虫给大家介绍一下数字证书签名以及世界最大的网站Https免费签名Let\'sEncrypts , 及数字证书签名的安全性等问题 。概述数字签名就是在信息的后面再
现在安全体系中 , 最重要的一部分是数字安全加密体系 , 包括数字内容的加密解密 , 数字签名和验证 。本文虫虫给大家介绍一下数字证书签名以及世界最大的网站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

推荐阅读