如何使用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 (将#修改为@)