如何使用Python读取不可信证书来提取信息?

2024-04-26 04:53:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道可以使用OpenSSL或M2Crypto来读取Python中的证书,正如在How can I retrieve the TLS/SSL peer certificate of a remote host using python?中所详细解释的那样,但是我希望能够使用非可信证书来执行同样的操作。在

所谓非信任,是指我(例如)刚刚生成的证书,并将csr输出粘贴到python函数中。在

以下是我如何生成企业社会责任:

openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr

并使用域.csr在之前的S.O.问题中。在

正如所料,这不起作用。为了更快,使用Openssl执行同样的操作会导致相同的错误:

^{pr2}$

unable to load certificate 139698977908608:error:0906D06C:PEM routines:PEM_read_bio:no start >line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

期望:可信证书是这里的关键问题。在

我该怎么办?在

谢谢你的帮助!在

更新:通过搜索更多信息,我读到如果私钥在这个S.O答案https://stackoverflow.com/a/12312994/330867中的cert(aka pem)中,这是可行的,但是我要实现的是一个系统,可以从来自其他人而不是我的证书中提取信息。我很确定“其他人”不会想分享他们的私钥,所以我还是被卡住了。有什么想法吗?在

更新2:x509和req证书之间似乎存在差异。前面用命令生成的是一个req,如前所述。在

现在我可以用第一个So链接来读取x509证书,但是如何读取python中的req证书呢?在


Tags: 信息domaincertificatepemreqcanhow证书
1条回答
网友
1楼 · 发布于 2024-04-26 04:53:50

好吧,我找到了我的答案,我相信它会帮助别人!在

所以,“req”证书和x509证书之间有一个重要的区别!在

在x509中,私钥也包含在文件中!在

因此,在下面,我将展示如何使用REQ和x509类型的证书生成证书并在Python中读取它。在

使用“req”证书:

要生成它:

openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr

阅读它:

^{pr2}$

使用“x509”证书:

要生成它:

openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout cert.pem

阅读它:

import OpenSSL
# cert contains the content of cert.pem
OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert).get_subject().get_components()

就这样!在

区别在于如何在OpenSSL.crypto中加载证书:

  • 对于“req”:load_certificate_request()
  • 对于“x509”:load_certificate()

就这么简单;)

相关问题 更多 >