openssl 中ssl公钥证书的格式疑问 财富值42

2016-10-14 02:02发布

Certificate:     Data:         Version: 3 (0x2)         Serial Number: 9 (0x9)     Signature Algorithm: sha256WithRSAEncryption         Issuer: C=CN, ST=GuangDong, L=ShenZhen, O=COMPANY Technologies Co., Ltd, OU=IT_SECTION, CN=registry.example.com.net/emailAddress=zhouxiao@example.com.net         Validity             Not Before: Feb 11 06:04:56 2015 GMT             Not After : Feb  8 06:04:56 2025 GMT         Subject: C=CN, ST=GuangDong, L=ShenZhen, O=TP-Link Co.,Ltd., OU=Network Management, CN=172.31.1.210         Subject Public Key Info:             Public Key Algorithm: rsaEncryption                 Public-Key: (2048 bit)                 Modulus:                     00:a4:b0:dd:eb:c1:cf:5d:47:61:a6:ea:ef:8b:aa:                     4b:f0:b4:2c:d8:96:c7:7c:ac:fa:c7:35:88:53:d0:                     ...                     8a:76:dc:8f:8c:44:c8:0b:3c:36:88:5f:01:f0:44:                     4e:81:e6:7a:2b:ff:ba:da:33:a5:27:11:c6:f0:08:                     6e:f3                 Exponent: 65537 (0x10001)         X509v3 extensions:             X509v3 Basic Constraints:                  CA:FALSE             Netscape Comment:                  OpenSSL Generated Certificate             X509v3 Subject Key Identifier:                  07:C6:87:B7:C1:1E:28:E8:96:3F:EB:40:1E:82:41:45:CA:81:B6:3D             X509v3 Authority Key Identifier:                  keyid:A4:C2:14:6A:39:D1:95:1E:BD:DF:3B:92:4A:5C:12:42:1B:BC:53:B8      Signature Algorithm: sha256WithRSAEncryption          0c:c6:81:70:cd:0a:2d:94:4f:cb:a4:1d:ef:9e:8e:e4:73:ae:          50:62:a8:9c:64:ef:56:0f:41:fe:6b:b4:d3:07:37:39:2c:ed:          ...          6f:62:61:b8:03:d7:97:31:ab:05:44:20:07:65:8b:ad:e2:cc:          ad:65:73:f6:82:0f:9e:65:d0:ae:b7:1e:fd:9f:c1:d7:41:6c:          0f:06:95:ee -----BEGIN CERTIFICATE----- MIIEMDCCAxigAwIBAgIBCTANBgkqhkiG9w0BAQsFADCBtTELMAkGA1UEBhMCQ04x EjAQBgNVBAgMCUd1YW5nRG9uZzERMA8GA1UEBwwIU2hlblpoZW4xJjAkBgNVBAoM ... ujwwRar6pPzusO95WuS93HsNmL2ZFZ63DS4LcW9iYbgD15cxqwVEIAdli63izK1l c/aCD55l0K63Hv2fwddBbA8Gle4= -----END CERTIFICATE----- 

如上,是一张ssl公钥证书
,它有两行:Signature Algorithm: sha256WithRSAEncryption

为什么要两行?是否为了表示CA只对两行之间的数据(以下简称D)做哈西和并用私钥加密?

附在第2行Signature Algorithm: sha256WithRSAEncryption之后的数据是否就是对D哈西并加密的结果(以下简称H)?

如果这是一张CA自己的证书,那么中间 Modulus:下面那一块数据(以下简称P)是否是CA自己的公钥?
验证这张证书的有效性的过程是否如下:
提取证书中的公钥P, 用P对H解密,得到X
对D做哈西,得到Y
比较X和Y是否一样。
用户如何手动实现上面的验证过程?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答

最近我也在看这方面的资料

mishen - whatsns产品经理
2楼-- · 2016-10-14 02:54

第一个Signature Algorithm是tbsCertificate里的字段,而第二个则是和tbsCertificate同层级的字段,这两个字段的值必须相等。

关于RSA签名,你可以阅读这个:
RFC2313,主要是第10节:Signature algorithms

rsa公钥解密签名后,得到的不直接是哈希值,还要经过BER解码得到ASN.1结构信息,这个结构里包含了哈希算法类型和哈希值。

Module和Exponent合起来才是一个public key,其中Module是n,也就是两质数p,q的乘积,而Exponent是指数e,参见RSA WiKi或上一链接的第6和第7节。

证书的认证过程,除了根证书(也就是自签证书,一般由操作系统和浏览器自带)是用自己的公钥认证自己外,其他证书是由签发证书的机构的公钥进行认证的。

如有错误,还请指正。

关于CA证书结构,你可以阅读这个:
RFC5280,主要是4.1节:Basic Certificate Fields