首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从python中的x509证书中提取公钥?

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

Stack Overflow用户
提问于 2017-01-27 10:23:35
回答 1查看 9.3K关注 0票数 5

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

代码语言:javascript
运行
复制
from cryptography.x509 import load_pem_x509_certificate
from cryptography.hazmat.backends import default_backend

cert_str = '-----BEGIN CERTIFICATE----- MIIDBTCCAe2gAwIBAgIQEsuEXXy6BbJCK3bMU6GZ/TANBgkqhkiG9w0BAQsFADAt... -----END CERTIFICATE-----';

cert_obj = load_pem_x509_certificate(str.encode(cert_str), default_backend())
public_key = cert_obj.public_key();

误差响应

代码语言:javascript
运行
复制
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

请帮我整理一下这个问题。

EN

Stack Overflow用户

回答已采纳

发布于 2017-01-29 14:06:00

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

PEM格式的证书之间有-----BEGIN CERTIFICATE----------END CERTIFICATE-----分隔符和base64编码数据,但它还需要每一行最多64个字符(最初是在RFC 1421中定义的,但也存在于RFC 7468中)。

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

票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41891701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档