相关疑难解决方法(0)

使用Python验证SSL证书

我需要编写一个脚本,通过HTTPS连接到公司内部网上的一堆站点,并验证他们的SSL证书是否有效; 他们没有过期,他们是为正确的地址等发出的.我们为这些网站使用我们自己的内部公司证书颁发机构,因此我们有CA的公钥来验证证书.

默认情况下,Python在使用HTTPS时接受并使用SSL证书,因此即使证书无效,诸如urllib2和Twisted之类的Python库也会很乐意使用证书.

是否有一个好的库可以让我通过HTTPS连接到一个站点并以这种方式验证它的证书?

如何在Python中验证证书?

python verification https ssl-certificate

83
推荐指数
7
解决办法
14万
查看次数

如何在Python中验证/验证X509证书信任链?

我正在努力实现一个使用API​​的Web应用程序.在响应期间,API服务器通过链接发送X509证书(PEM格式,由签名证书和一个或多个中间证书组成到根CA证书),我必须下载并用于进一步验证.

在使用证书之前,我需要确保链中的所有证书组合在一起,以创建对受信任的根CA证书的信任链(以检测并避免任何恶意请求).我在python中很难做到这一点,我对这个主题的研究并没有产生任何有用的东西.

使用请求和M2Crypto可以轻松获取和加载证书

import requests
from M2Crypto import RSA, X509

mypem = requests.get('https://server.com/my_certificate.pem')   
cert = X509.load_cert_string(str(mypem.text), X509.FORMAT_PEM)
Run Code Online (Sandbox Code Playgroud)

但是,验证证书链是一个问题.我不可能将证书写入磁盘以便使用openssl像subprocess这样的命令行实用程序,因此必须通过python完成.我也没有任何打开的连接,因此使用基于连接的验证解决方案(如本答案/主题中提到的那样:https://stackoverflow.com/a/1088224/4984533)也不起作用.

关于这个问题的另一个线程(在/sf/answers/309895701/),abbot解释说m2crypto无法进行此验证,并说他已经编写了一个扩展以允许验证(使用模块m2ext),但他的补丁从不似乎工作,即使我知道它是有效的,总是返回false:

from m2ext import SSL
ctx = SSL.Context()
ctx.load_verify_locations(capath='/etc/ssl/certs/') # I have run c_rehash in this directory to generate a list of cert files with signature based names
if not ctx.validate_certificate(cert): # always happens
    print('Invalid certificate!') 
Run Code Online (Sandbox Code Playgroud)

在这里的类似线程中也有这个答案/sf/answers/630543511/其中约翰马修斯声称有一个补丁写的会做,但不幸的是补丁链接现在已经死了 - 无论如何那里是该线程的评论,说明该补丁不适用于openssl 0.9.8e.

所有与验证python中的证书信任链相关的答案似乎都链接到死补丁或返回m2ext.

是否有一种简单,直接的方法来验证我在Python中的证书信任链?

python validation ssl m2crypto

9
推荐指数
2
解决办法
1万
查看次数

如何使用m2crypto在非SSL设置中验证X509证书链

我正在试图找出如何使用m2crypto,当链可能任意长时,从X509证书的公钥版本验证信任链回到一组已知的根CA. SSL.Context模块看起来很有希望,除了我在SSL连接的上下文中没有这样做,我看不到如何使用传递给load_verify_locations的信息.

基本上,我正在寻找相当于的接口:openssl verify pub_key_x509_cert

在m2crypto中有类似的东西吗?

谢谢.

python cryptography m2crypto x509certificate x509

5
推荐指数
1
解决办法
3616
查看次数

在linux上验证X.509证书

我刚开始使用X.509证书.谁能告诉我如何在linux上验证证书?用例是我的应用程序在之前的会话中下载了证书,我必须在开始新会话之前检查它是否仍然有效(即,在存储之后没有过期或撤销).我理解这里不可能有完整的样本,但任何指针都会有用.

编辑:进一步调查显示另一个称为网络安全服务(NSS)的实用程序.在可用性方面,这与OpenSSL相比如何?此外,我正在寻找程序化解决方案,因为我将无法启动命令行实用程序.

c linux openssl nss x509

5
推荐指数
2
解决办法
7376
查看次数