如何在python中从x509证书中提取公钥?

如何在python中从x509证书中提取公钥?,python,azure,cryptography,jwt,x509certificate,Python,Azure,Cryptography,Jwt,X509certificate,下面显示了我遵循的代码示例,但是我得到的错误响应是“无法加载证书” 错误响应 Traceback (most recent call last): File "C:\xampp1\htdocs\TestWorkPlace\TestPython\src\test1.py", line 10, in <module> cert_obj = load_pem_x509_certificate(str.encode(cert_str), default_backend())

下面显示了我遵循的代码示例,但是我得到的错误响应是“无法加载证书”

错误响应

Traceback (most recent call last):
  File "C:\xampp1\htdocs\TestWorkPlace\TestPython\src\test1.py", line 10, in <module>
    cert_obj = load_pem_x509_certificate(str.encode(cert_str), default_backend())
  File "C:\Program Files (x86)\Python\lib\site-packages\cryptography\x509\base.py", line 43, in load_pem_x509_certificate
    return backend.load_pem_x509_certificate(data)
  File "C:\Program Files (x86)\Python\lib\site-packages\cryptography\hazmat\backends\multibackend.py", line 341, in load_pem_x509_certificate
    return b.load_pem_x509_certificate(data)
  File "C:\Program Files (x86)\Python\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py", line 1175, in load_pem_x509_certificate
    raise ValueError("Unable to load certificate")
ValueError: Unable to load certificate
回溯(最近一次呼叫最后一次):
文件“C:\xampp1\htdocs\TestWorkPlace\TestPython\src\test1.py”,第10行,在
cert\u obj=load\u pem\u x509\u证书(str.encode(cert\u str),默认的\u后端()
文件“C:\Program Files(x86)\Python\lib\site packages\cryptography\x509\base.py”,第43行,在load\U pem\U x509\U证书中
返回后端。加载\u pem\u x509\u证书(数据)
文件“C:\Program Files(x86)\Python\lib\site packages\cryptography\hazmat\backends\multibackend.py”,第341行,位于load\U pem\U x509\U证书中
返回b.load\U pem\U x509\U证书(数据)
文件“C:\Program Files(x86)\Python\lib\site packages\cryptography\hazmat\backends\openssl\backend.py”,第1175行,在load\U pem\U x509\U证书中
raise VALUERROR(“无法加载证书”)
ValueError:无法加载证书

请帮我整理一下这个问题

X509证书中不包含私钥,仅包含公钥。要提取公钥,您已经获得了正确的代码,但是您的证书不会加载,因为它不是正确的PEM格式

PEM格式的证书之间有
----开始证书---
----结束证书---
分隔符和base64编码数据,但每行最多需要64个字符(最初在中定义,但也存在于中)

有些软件比规范更宽容,但是
pyca/cryptography
(OpenSSL或LibreSSL)的底层库要求以这种方式格式化

Traceback (most recent call last):
  File "C:\xampp1\htdocs\TestWorkPlace\TestPython\src\test1.py", line 10, in <module>
    cert_obj = load_pem_x509_certificate(str.encode(cert_str), default_backend())
  File "C:\Program Files (x86)\Python\lib\site-packages\cryptography\x509\base.py", line 43, in load_pem_x509_certificate
    return backend.load_pem_x509_certificate(data)
  File "C:\Program Files (x86)\Python\lib\site-packages\cryptography\hazmat\backends\multibackend.py", line 341, in load_pem_x509_certificate
    return b.load_pem_x509_certificate(data)
  File "C:\Program Files (x86)\Python\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py", line 1175, in load_pem_x509_certificate
    raise ValueError("Unable to load certificate")
ValueError: Unable to load certificate