微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Python 3.x和base64无openssl以纯文本格式查看.crt客户端证书?

如何解决如何使用Python 3.x和base64无openssl以纯文本格式查看.crt客户端证书?

这真让我发疯。如果-----BEGIN CERTIFICATE----------END CERTIFICATE-----间的所有内容都是B64编码的纯文本,为什么我不能简单地在Python 3中使用base64.b64decode(file)来读取它?

示例:

  • 原始文件cert_raw = open("test.crt",'r').read()

  • 结果是一个连续的字符串:

'-----BEGIN CERTIFICATE-----\nMIIGJTCCBQ2gAwIBAgIQD5EJV21qWTH5W6AhivSAEzANBgkqhkiG9w0BAQsFADBZ\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMTMwMQYDVQQDEypS
.....
\nCrYauNpnyUSYkVfMzb4mnFjutopwEleSmrPyxnLZrd1bJLhcl7O9NXc=\n-----END CERTIFICATE-----'
  • 然后...
cert_split = cert_raw.split('-\n')
cert_split = cert_split[1].split('\n-')
cert_split = cert_split[0]
  • 仅产生base64编码的ascii(?)...
'MIIGJTCCBQ2gAwIBAgIQD5EJV21qWTH5W6AhivSAEzANBgkqhkiG9w0BAQsFADBZ\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMTMwMQYDVQQDEypS
...
\nCrYauNpnyUSYkVfMzb4mnFjutopwEleSmrPyxnLZrd1bJLhcl7O9NXc='
  • 然后cert_bytes = base64.b64decode(cert_split) ...
  • 结果...
b'0\x82\x06%0\x82\x05\r\xa0\x03\x02\x01\x02\x02\x10\x0f\x91\tWmjY1
...
\xf9[\xa0!\x8a\xf4\x80\x130\r\x06\t*\x86H\x86\xf7\r\x01\x01\x0b
\x83\xf0\x12W\x92\x9a\xb3\xf2\xc6r\xd9\xad\xdd[$\xb8\\\x97\xb3\xbd5w'
  • 为什么?!这不是现在的明文吗?
  • 如何仅获取文件的纯文本?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。