如何使用Python读取不受信任的证书来提取信息?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用Python读取不受信任的证书来提取信息?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2035字,纯文字阅读大概需要3分钟。
内容图文
我知道可以通过使用OpenSSL或M2Crypto在Python中读取证书,这在How can I retrieve the TLS/SSL peer certificate of a remote host using python?中有很大的解释,但我希望能够使用非受信任的证书执行相同的操作.
所谓不信任,是指我(例如)刚刚生成的证书,并将csr输出粘贴到我的python函数中.
这是我生成csr的方法:
openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr
并将domain.csr的输出用作S.O中的代码.之前的问题.
不出所料,这是行不通的.为了更快,使用Openssl进行相同的操作会导致相同的错误:
openssl x509 -text -in Domain.csr -noout
unable to load certificate
139698977908608:error:0906D06C:PEM routines:PEM_read_bio:no start >line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
期望:可信证书是这里的关键问题.
我能怎么做 ?
谢谢您的帮助 !
更新:通过搜索更多内容,我读到如果私钥位于此SO答复https://stackoverflow.com/a/12312994/330867的证书(又称为pem)内,则此方法有效,但是我要实现的是一个可以从来自以下证书的证书中提取信息的系统除我以外的其他人.而且我非常确定“其他人”将不想共享他们的私钥,因此我仍然处于困境.有任何想法吗 ?
更新2:看来x509和req证书之间存在差异.如前所述,用命令before生成的是一个req.
所以现在我现在可以通过第一个SO链接读取x509证书,但是如何在python中读取req证书?
解决方法:
好吧,我找到了答案,我相信它会帮助别人!
因此,“ req”证书和x509证书之间存在重要区别!
在x509中,私钥也包含在文件中!
因此,在下面,我将展示如何使用REQ和x509类型的证书生成证书并在Python中读取它.
使用“要求”证书:
生成它:
openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr
并阅读:
import OpenSSL
# cert contains the content of domain.csr
OpenSSL.crypto.load_certificate_request(OpenSSL.crypto.FILETYPE_PEM, cert).get_subject().get_components()
使用“ 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中加载证书:
>对于“要求”:load_certificate_request()
>对于“ x509”:load_certificate()
就这么简单;)
内容总结
以上是互联网集市为您收集整理的如何使用Python读取不受信任的证书来提取信息?全部内容,希望文章能够帮你解决如何使用Python读取不受信任的证书来提取信息?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。