user-0 提问: openssl 验证证书的bug ?

回复:
user: user-1
content: 交换证书的时候是对 BEGIN/END 间数据做 base64 解码后发送，发这种 b64编码后的数据也太浪费带宽了.. 你把 BEGIN/END 之间的数据存成个文件， 然后用 openssl x509 -in 1.pem -text  看看。

user: user-1
content: BEGIN/END之外的不是证书的内容， 当注释就可以了， 之间的数据包含了你需要的所有东西， 如果你不乱改， 用之间的数据可以把这部分内容重新生成出来，大部分地方保存 PEM 证书也不保存 BEGIN/END 之外的东西。

user: user-0
content: 引用 6 楼 mLee79 的回复:不是说了么， PEM格式的文件 只看 BEGIN/END 之间的数据， 其他的是给人看的， 随便改， 无意义。 这个文件里 BEGIN/END 间是 base64 编码的 der 格式的 X509 证书。   1.   Signature Algorithm: sha1WithRSAEncryption   这句话已经很明显，告知该 begin /end 之间的hash值（加密过的）   2.     Public Key Algorithm: rsaEncryption                 Public-Key: (2048 bit)                 Modulus:                     00:c5:a3:86:8d:7d:21:d8:c9:0b  这个  不就是用户证书的公钥吗？   用户证书 的目的—— 证明公钥的合法，公钥都被改了， 难道还不报错。   这才是我反复追问你的原因！！！！   好，如果我们按照你的逻辑，是不是可以说明， 发送方，只需要读取begin /end之间的内容，然后socket发送？  其他内容都不需要管了？   收方收到后，然后验证being/end之间的内容？    这毕竟不是小事，不能不追问？

user: user-1
content: 不是说了么， PEM格式的文件 只看 BEGIN/END 之间的数据， 其他的是给人看的， 随便改， 无意义。 这个文件里 BEGIN/END 间是 base64 编码的 der 格式的 X509 证书。

user: user-0
content: up 起来

user: user-1
content: 之间之间 你也把 BEGIN/END 带着啊， PEM就认这几个标志啊..

user: user-0
content: 引用 9 楼 mLee79 的回复:交换证书的时候是对 BEGIN/END 间数据做 base64 解码后发送，发这种 b64编码后的数据也太浪费带宽了.. 你把 BEGIN/END 之间的数据存成个文件， 然后用 openssl x509 -in 1.pem -text  看看。  openssl verify 1.pem  unable to load certificate 140215703820104:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

user: user-1
content: BEGIN/END 之间的是真正的证书数据， BASE64 编码的 DER格式的 X.509 证书， 之外的是给人看的， 随便改..

user: user-0
content: 引用 1 楼 user-2 的回复:没加密的证书？  是啊  pem格式，就是典型的文本模式，  谁遇到， 最近要用， 用过的人，发个例子，

user: user-0
content: 引用 3 楼 mLee79 的回复:BEGIN/END 之间的是真正的证书数据， BASE64 编码的 DER格式的 X.509 证书， 之外的是给人看的， 随便改..  格式是pem  另外，请注意我提的问题，修改后，依然可以验证成功。用命令验证！！！！！  为什么我会提问题呢？    比如修改 ：   Signature Algorithm: sha1WithRSAEncryption （这个的意思是说pem 格式里的签名） 下面的内容，  每个证书有Ca用hash 产生hash值，然后用私钥签名，既然有了hash， 你修改了文件，文件变更了，  哪怕是一个bit被修改了， hash值就会变更。 ——》该证书被篡改了。   以上是我理解的。下面是证书的内容，大神你不需要验证该证书，因为我把一些敏感信息替换过了。（比如公司啊，注册人，邮箱等）     -----BEGIN CERTIFICATE-----   -----END CERTIFICATE-----  这个之间的值才是真正的要保护的数据，我很费解，  第一： hash计算的是谁？ Certificate:     Data:         Version: 3 (0x2)         Serial Number: 1 (0x1)     Signature Algorithm: sha1WithRSAEncryption         Issuer: C=cn, ST=Beijing, L=Beijing, O=baidu-gd, OU=IT, CN=coder/emailAddress=test@163.com         Validity             Not Before: Nov 28 03:15:07 2015 GMT             Not After : Nov 27 03:15:07 2016 GMT         Subject: C=cn, ST=Beijing, O=baidu-gd, OU=IT, CN=coder/emailAddress=test@163.com         Subject Public Key Info:             Public Key Algorithm: rsaEncryption                 Public-Key: (2048 bit)                 Modulus:                     00:c5:a3:86:8d:7d:21:d8:c9:0b:07:3a:e2:37:69:                     c5:73:09:c4:39:6c:d5:71:c1:1d:56:7b:12:1f:54:                     bd:b3:c9:12:cc:04:e0:ac:08:26:ae:a5:6e:f5:14:                     fa:bd:90:f0:29:dd:45:16:69:5e:2a:c6:a0:57:89:                     49:2e:0a:3f:45:a5:a3:11:12:e9:70:09:4b:26:52:                     0d:25:f8:9e:99:e4:48:3b:7e:c6:91:7f:29:e0:93:                     8b:80:2e:03:49:70:20:06:63:82:3c:ac:26:4a:3f:                     d9:e9:19:22:f8:c7:56:9a:26:6f:c0:75:b4:7f:df:                     d8:72:ea:cd:68:f1:76:ec:3c:8d:c9:ef:18:73:53:                     10:5d:b3:00:92:bc:2c:4e:0e:3f:93:e9:d2:21:25:                     8c:16:87:d1:8b:0e:dc:a1:a4:1f:12:76:01:a1:b1:                     17:38:d3:cf:c7:bc:4d:cb:77:70:72:48:ab:b1:cf:                     5c:e0:a3:7d:85:45:68:6b:dc:71:9b:54:98:0a:a7:                     c0:e2:89:81:13:36:32:d0:4f:22:bb:b5:df:53:6d:                     9a:46:b3:ce:33:15:de:41:af:ec:c6:e9:bb:0e:ce:                     68:c4:b0:f8:1c:70:f8:a6:24:30:62:36:7d:87:06:                     93:40:7d:be:05:b7:d6:fd:88:eb:4b:98:87:82:ee:                     aa:a3                 Exponent: 65537 (0x10001)         X509v3 extensions:             X509v3 Basic Constraints:                  CA:FALSE             Netscape Comment:                  OpenSSL Generated Certificate             X509v3 Subject Key Identifier:                  FF:0A:01:5F:6A:1B:86:81:92:3A:9E:B0:1C:01:5B:E1:69:08:2B:63             X509v3 Authority Key Identifier:                  keyid:91:97:43:B0:45:AD:29:E3:5D:D1:25:7D:8D:6B:1F:98:AC:71:9D:1D      Signature Algorithm: sha1WithRSAEncryption          8c:63:7c:ca:02:8c:52:19:e9:79:09:ea:f2:1e:b8:f0:93:2d:          eb:0d:aa:05:90:05:1a:22:60:57:8c:30:a4:43:39:9e:7d:6d:          41:ce:5f:1e:a0:6c:86:13:55:e7:a6:f1:a0:18:d6:f9:81:c5:          31:1a:b1:9d:8c:9a:dd:00:4b:e0:bb:27:43:c5:75:12:20:15:          c9:6f:45:fd:51:3d:b9:65:59:90:87:d5:82:db:91:75:17:7d:          45:c2:79:e8:53:0a:b0:72:a6:35:10:81:37:c7:83:8e:92:2c:          19:2d:fa:a2:e8:58:0c:1f:d3:07:9b:eb:fe:8d:60:9f:d5:96:          5d:38:80:ef:31:13:68:d8:12:9e:6f:b0:b6:ae:51:b4:2e:aa:          e8:7c:e0:73:a8:5c:fc:57:11:17:ee:55:6e:31:20:fd:14:72:          29:41:61:a6:0c:ec:6c:6f:27:9a:e5:46:29:ca:21:ef:f7:0e:          d7:5f:c6:d9:c5:ec:0e:a2:78:1c:d4:c1:23:d1:5a:41:99:5c:          ad:90:16:90:c3:9c:d4:09:5e:97:38:30:38:75:b2:8d:9c:74:          89:fa:ab:38:f8:a8:1c:26:1f:41:0b:a9:1a:69:5c:36:3f:bc:          dd:c7:e8:4d:f0:22:83:0c:56:1d:bc:d1:98:9b:8b:e0:9d:97:          12:26:4c:fc -----BEGIN CERTIFICATE----- MIID+TCCAuGgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCY24x EjAQBgNVBAgMCUd1YW5nZG9uZzESMBAGA1UEBwwJZ3Vhbmdkb25nMRMwEQYDVQQK DApxdWFudHVtLWdkMQswCQYDVQQLDAJJVDEPMA0GA1UEAwwGamlob25nMSEwHwYJ KoZIhvcNAQkBFhJqaWhvbmdfc2V1QDE2My5jb20wHhcNMTUxMTI4MDMxNTA3WhcN MTYxMTI3MDMxNTA3WjB3MQswCQYDVQQGEwJjbjESMBAGA1UECAwJR3Vhbmdkb25n MRMwEQYDVQQKDApxdWFudHVtLWdkMQswCQYDVQQLDAJJVDEPMA0GA1UEAwwGamlo b25nMSEwHwYJKoZIhvcNAQkBFhJqaWhvbmdfc2V1QDE2My5jb20wggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDFo4aNfSHYyQsHOuI3acVzCcQ5bNVxwR1W exIfVL2zyRLMBOCsCCaupW71FPq9kPAp3UUWaV4qxqBXiUkuCj9FpaMREulwCUsm Ug0l+J6Z5Eg7fsaRfyngk4uALgNJcCAGY4I8rCZKP9npGSL4x1aaJm/AdbR/39hy 6s1o8XbsPI3J7xhzUxBdswCSvCxODj+T6dIhJYwWh9GLDtyhpB8SdgGhsRc408/H vE3Ld3BySKuxz1zgo32FRWhr3HGbVJgKp8DiiYETNjLQTyK7td9TbZpGs84zFd5B r+zG6bsOzmjEsPgccPimJDBiNn2HBpNAfb4Ft9b9iOtLmIeC7qqjAgMBAAGjezB5 MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENl cnRpZmljYXRlMB0GA1UdDgQWBBT/CgFfahuGgZI6nrAcAVvhaQgrYzAfBgNVHSME GDAWgBSRl0OwRa0p413RJX2Nax+YrHGdHTANBgkqhkiG9w0BAQUFAAOCAQEAjGN8 ygKMUhnpeQnq8h648JMt6w2qBZAFGiJgV4wwpEM5nn1tQc5fHqBshhNV56bxoBjW +YHFMRqxnYya3QBL4LsnQ8V1EiAVyW9F/VE9uWVZkIfVgtuRdRd9RcJ56FMKsHKm NRCBN8eDjpIsGS36ouhYDB/TB5vr/o1gn9WWXTiA7zETaNgSnm+wtq5RtC6q6Hzg c6hc/FcRF+5VbjEg/RRyKUFhpgzsbG8nmuVGKcoh7/cO11/G2cXsDqJ4HNTBI9Fa QZlcrZAWkMOc1AlelzgwOHWyjZx0ifqrOPioHCYfQQupGmlcNj+83cfoTfAigwxW HbzRmJuL4J2XEiZM/A== -----END CERTIFICATE-----

user: user-2
content: 没加密的证书？