python 指定证书验证_如何在python中验证SSL证书?
我需要验证我的自定义CA签署了证书.使用OpenSSL命令行实用程序很容易做到:
# Custom CA file: ca-cert.pem
# Cert signed by above CA: bob.cert
$openssl verify -CAfile test-ca-cert.pem bob.cert
bob.cert: OK
但是我需要在Python中做同样的事情,而且我真的不想调用命令行实用程序.据我所知,M2Crypto是OpenSSL的“最完整”的python包装,但是我无法弄清楚如何完成命令行实用程序的功能!
参考this question如何在C代码中完成同样的任务,我已经能够得到一半的.我选择的变量名称与openssl verify命令行实用程序的源代码中使用的变量名相同,请参阅openssl-xxx / apps / verify.c.
import M2Crypto as m2
# Load the certificates
cacert = m2.X509.load_cert('test-ca-cert.pem') # Create cert object from CA cert file
bobcert = m2.X509.load_cert('bob.cert') # Create cert object from Bob's cert file
cert_ctx = m2.X509.X509_Store() # Step 1 from referenced C code steps
csc = m2.X509.X509_Store_Context(cert_ctx) # Step 2 & 5
cert_ctx.add_cert(cacert) # Step 3
cert_ctx.add_cert(bobcert) # ditto
# Skip step 4 (no CRLs to add)
# Step 5 is combined with step 2...I think. (X509_STORE_CTX_init: Python creates and
# initialises an object in the same step)
# Skip step 6? (can't find anything corresponding to
# X509_STORE_CTX_set_purpose, not sure if we need to anyway???)
#
# It all falls apart at this point, as steps 7 and 8 don't have any corresponding
# functions in M2Crypto -- I even grepped the entire source code of M2Crypto, and
# neither of the following functions are present in it:
# Step 7: X509_STORE_CTX_set_cert - Tell the context which certificate to validate.
# Step 8: X509_verify_cert - Finally, validate it
所以我在那里的一半,但我似乎实际上不能完成验证!我错过了什么吗?有没有其他的功能我应该使用从M2Crypto?我应该寻找一个完全不同的OpenSSL的python包装?如何在python中完成这个任务?
请注意,我正在使用证书加密/解密FILES,所以我不喜欢使用基于SSL连接的对等证书验证(其中有already been answered),因为我没有任何SSL连接.
python 指定证书验证_如何在python中验证SSL证书?相关推荐
- python指定返回类型_如何在python中指定方法返回类型列表 - python
假设我有一个类似下面的方法 def validate(self, item:dict, attrs:dict)-> list: 如果我想更具体一点,告诉我我的返回类型是 验证消息? 我应该如何实 ...
- python字符串筛选输出_如何在Python中过滤字符串列表
Python使用列表数据类型在顺序索引中存储多个数据.它的工作方式类似于其他编程语言的数字数组.filter()方法是Python的一种非常有用的方法.可以使用filter()方法从Python中的任 ...
- python绘图背景透明_如何在 Matplotlib 中更改绘图背景
介绍Matplotlib是Python中使用最广泛的数据可视化库之一.无论是简单还是复杂的可视化项目,它都是大多数人的首选库.在本教程中,我们将研究如何在Matplotlib中更改绘图的背景.导入数据 ...
- python的loc函数_如何在pandas中使用loc、iloc函数进行数据索引(入门篇)
在数据分析过程中,很多时候我们需要从数据表中提取出我们需要的部分,而这么做的前提是我们需要先索引出这一部分数据.今天我们就来探索一下,如何在pandas中使用loc函数和iloc函数索引数据. 今天我 ...
- python右对齐 数字_如何在Python中右对齐数值数据?
我有一些数据,我显示在3列格式,形式"键:值键:键:值键:值".这里有一个例子: p: 1 sl: 10 afy: 4 q: 12 lg: 10 kla: 3 r: 0 kl: 1 ...
- python队列怎么用_如何在Python中使用多处理队列? - python
我很难理解多处理队列如何在python上工作以及如何实现它.假设我有两个python模块,它们从共享文件中访问数据,我们将这两个模块称为writer和Reader.我的计划是让读取器和写入器都将请求放 ...
- python隐藏启动台_如何在Python中启动后台进程?
如何在Python中启动后台进程? 我正在尝试将shell脚本移植到更易读的python版本. 原始shell脚本在后台使用"&"启动多个进程(实用程序,监视器等). 如何 ...
- python获取当前时间戳_如何在Python中获取当前时间戳?
在Python中可以使用来自模块time.datetime或calendar的函数来获取当前时间戳,代码语句如[import time;ts = time.time() print(ts)]. 在Py ...
- python 运行r语言_如何在R中运行Python
python 运行r语言 尽管我很喜欢R,但很显然Python还是一种很棒的语言-既适用于数据科学又适用于通用计算. R用户想要在Python中做一些事情可能有充分的理由. 也许这是一个很棒的库,还没 ...
最新文章
- linux中的apachectl是什么命令
- elasticsearch 分页查询实现方案——Top K+归并排序
- 【转载】SAP 计划策略组40、50对比分析
- Web 趋势榜: 上周不可错过的最热门的 10 大 Web 项目 - 又增加了那么多的好项目啊 - 210611...
- easyui datagrid 单选框 效果
- pytorch---模型保存预加载(1)什么是状态字典:state_dict
- Java自学知识点_良心_精心整理
- 学生信息管理系统总体设计规划书
- Atom 常用快捷键
- Windows安全中心功能介绍
- python实用案例教程第四章-python 入门到实践第四章案例
- 【https】 1 HTTP Security (bb102-1)
- NVIDIA GPU Compute Capability解释
- destoon调用内容从第几篇开始
- 卷积神经网络基础知识五(mobilenet)
- Win10神州网信政府版(企业版G)安装
- Docker之Docker概述
- 对产品经理来说,在求职的时候,PMP和NPDP两个证书,哪一个权威性比较高,含金量比较大?
- 5、谷歌地图官方API-可视化数据:地震图
- MySQL - change 和 modify 的区别