标签: pyopenssl

为Scrapy安装包依赖项

因此,在用户需要为Scrapy安装的许多软件包中,我认为我遇到了pyOpenSSL问题.

当我尝试创建一个教程Scrapy项目时,我得到以下输出:

Traceback (most recent call last):
  File "C:\Python27\lib\runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "C:\Python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 168, in <module>
    execute()
  File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 122, in execute
    cmds = _get_commands_dict(settings, inproject)
  File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 46, in _get_comma
nds_dict
    cmds = _get_commands_from_module('scrapy.commands', inproject)
  File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 29, in _get_comma
nds_from_module
    for cmd in _iter_command_classes(module):
  File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 20, in _iter_comm
and_classes
    for module in walk_modules(module_name):
  File "C:\Python27\lib\site-packages\scrapy\utils\misc.py", line …
Run Code Online (Sandbox Code Playgroud)

python windows pyopenssl scrapy python-2.7

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

如何为公共RSA/DSA密钥生成PEM序列化

使用PyCrypto我能够为RSA密钥生成公共和私有PEM序列化,但在PyCrypto中,DSA类没有exportKey()方法.

尝试使用PyOpenSSL我能够为RSA和DSA密钥生成私有PEM序列化,但PyOpenSSL中没有crypto.dump_publickey方法.

我正在寻找如何为RSA和DSA密钥生成PEM序列化的建议.

非常感谢!

PS:同时我已经更改了PyOpenSSL代码,也为crypto API导出了dump_privatekey方法.PyOpenSSL错误和补丁可以在以下网址找到:https://bugs.launchpad.net/pyopenssl/+bug/780089


我已经在使用Twisted.conch所以我通过使用PyCrypto手动生成DSA/RSA密钥然后使用此密钥初始化twisted.conch.ssh.key.Key来解决此问题.Conch的Key类为字符串序列化提供了toString方法.

python openssl pyopenssl pycrypto

6
推荐指数
1
解决办法
3758
查看次数

PyOpenSSL将证书对象转换为.pem文件

我想通过套接字将证书从"证书颁发机构"发送到节点.我有一个使用此示例创建的证书 https://skippylovesmalorie.wordpress.com/2010/02/12/how-to-generate-a-self-signed-certificate-using-pyopenssl/ 如何将其转换为. pem文件,所以我可以通过套接字将其作为字符串发送,然后在另一端将其转换回.pem并使用get_certificate从中提取此证书. Python:使用pyOpenSSL.crypto读取pkcs12证书 它可能是一种hacky方式,但我想为自己简化它.(或不)

我正在复活这个问题没有回答的问题 如何将PyOpenSSL对象转换为PEM编码的字符串?

python sockets pyopenssl pem

6
推荐指数
1
解决办法
6464
查看次数

使用pyopenssl验证签名

我相信自从这个问题以来,pyOpenSSL已经开始支持签名验证(截至pyOpenSSL 0.11).

我正在开发一个由其他人使用M2Crypto启动的项目.由于需要使用SWIG,因此在Heroku等平台上包含M2Crypto非常痛苦.因此,我试图消除对M2Crypto的依赖,并替换为易于通过Pip安装的pyOpenSSL,并且不需要自定义构建包以及更多与SWIG相关的事情.

我遇到的问题是替换一些代码:

key = cert.get_pubkey() # Cert is an M2Crypto X509 object
key = key.get_rsa()
ret = key.verify(hashed, self.sig)
if ret != 1:
    # Cert invalid ... etc.
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想通过pyOpenSSL实现相同的功能,但我觉得我可能有错误的结束 - 我尝试过使用:

crypto.verify(cert, self.sig, hashed, 'sha1')
Run Code Online (Sandbox Code Playgroud)

但这失败了 -

[('rsa routines', 'RSA_verify', 'bad signature')]
Run Code Online (Sandbox Code Playgroud)

我无法确定它是否失败,因为签名实际上是错误的,或者因为我提供的crypto.verify值实际上并不是它应该用于的!

我一直在玩的原始代码在这里需要相当多的工作来整理,但是在整个重构之前尝试一步一步地替换功能.任何指针将非常感谢!pyOpenSSL是否有能力在这里取代M2Crypto功能,我是否正确地采用它?

python ssl certificate pyopenssl m2crypto

6
推荐指数
1
解决办法
6898
查看次数

PyOpenSSL读取证书/ pkey文件

这就是我创建证书的方式

  from OpenSSL import crypto

  cert = crypto.X509()
  cert.get_subject().C            = countryName
  cert.get_subject().ST           = stateOrProvinceName
  ...
Run Code Online (Sandbox Code Playgroud)


一代是什么样子.
现在,如何从普通文件向后使用PyOpenSSL从证书中提取这些值?

所以这就是我的想法

def certext(certstr):
  p1 = Popen(['printf', certstr], stdout=PIPE)
  p2 = Popen(['openssl', 'x509', '-text'], stdin=p1.stdout, stdout=PIPE)
  p1.stdout.close()
  output = p2.communicate()[0]
  return output
Run Code Online (Sandbox Code Playgroud)

pyopenssl x509certificate

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

X.509证书序列号到十六进制转换

我正在尝试使用Pythons OpenSSL库获取X.509证书的序列号.

如果我像这样加载我的证书:

 x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_ASN1, cert)
Run Code Online (Sandbox Code Playgroud)

然后打印序列号,如下所示:

print x509.get_serial_number()
Run Code Online (Sandbox Code Playgroud)

它看起来像这样:

5.283978953499081e+37 
Run Code Online (Sandbox Code Playgroud)

如果我将它转换为十六进制,如下所示:

'{0:x}'.format(int(5.283978953499081e+37))
Run Code Online (Sandbox Code Playgroud)

它返回:

27c092c344a6c2000000000000000000
Run Code Online (Sandbox Code Playgroud)

但是,从命令行使用OpenSSL打印证书序列号会返回此信息.

27:c0:92:c3:44:a6:c2:35:29:8f:d9:a2:fb:16:f9:b7
Run Code Online (Sandbox Code Playgroud)

为什么序列号的一半被转换为零?

python pyopenssl

6
推荐指数
1
解决办法
1964
查看次数

requests.exceptions.SSLError

我有fiddle.py4行

import requests

url = "https://randomuser.me/api/"
locations = requests.get(url,verify=False).json()

print locations
Run Code Online (Sandbox Code Playgroud)

当我跑的时候,我一直在努力

requests.exceptions.SSLError:[SSL:SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3警报握手失败(_ssl.c:590)


试试#1

verify=False

运行代码,相同错误.


试试#2

sudo pip install --upgrade requests

运行代码,相同错误.


试试#3

sudo pip install --upgrade pip

sudo pip install requests[security]

运行代码Diff Error.

requests.exceptions.SSLError :("坏握手:错误([('SSL例程','SSL23_GET_SERVER_HELLO','sslv3警报握手失败')],)",)


细节

Python 2.7.10
OpenSSL 0.9.8zh 14 Jan 2016
Mac OS X 10.11.6
Run Code Online (Sandbox Code Playgroud)

如何进行调试?


我现在正在接受任何建议.

任何提示/建议/帮助将非常感谢!

python macos pyopenssl python-requests

6
推荐指数
1
解决办法
5848
查看次数

Python SSL错误解密失败或错误记录mac

我正在尝试使用gspread python模块来阅读谷歌电子表格.但是我从ssl得到了一些错误.我试图调查这个,但无法使它工作.gspread模块在内部使用python请求,似乎是使用python的ssl包.代码(我已经写过)和堆栈跟踪在下面提供了env详细信息.

ENV:

  • python:2.7.13
  • Ubuntu:14.04
  • openssl:1.0.1f 2014年1月6日

码:

import gspread
from oauth2client.client import SignedJwtAssertionCredentials

scope = ['https://spreadsheets.google.com/feeds']
credentials = SignedJwtAssertionCredentials(user_email, private_key, scope)
google_client = gspread.authorize(credentials)


worksheet = google_client.open_by_url(<worksheet_url>).get_worksheet(1)

list_of_rows = worksheet.get_all_values()

print list_of_rows
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

File "<console>", line 1, in <module>
  File "/home/nikhil/.venv/nikhil/src/gspread/gspread/models.py", line 344, in get_all_values
    cells = self._fetch_cells()
  File "/home/nikhil/.venv/nikhil/src/gspread/gspread/models.py", line 231, in _fetch_cells
    feed = self.client.get_cells_feed(self)
  File "/home/nikhil/.venv/nikhil/src/gspread/gspread/client.py", line 186, in get_cells_feed
    r = self.session.get(url)
  File "/home/nikhil/.venv/nikhil/src/gspread/gspread/httpsession.py", line 76, in get
    return self.request('GET', url, **kwargs) …
Run Code Online (Sandbox Code Playgroud)

python ssl pyopenssl gspread

6
推荐指数
1
解决办法
5754
查看次数

pyOpenSSL"openssl verify -CAfile root.crt client.crt"等效

我有两个证书,一个root.crt和一个client.crt签署的证书root.key.
我想在终端上使用openssl 验证client.crt确实已经签名了root.key,我喜欢这样:

$ openssl verify -CAfile root.crt client.crt  
> client.crt: OK  
Run Code Online (Sandbox Code Playgroud)

但是当使用pyOpenSSL时,遵循文档这篇博文,我尝试过这样的事情:

client_cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, file('client.crt').read())

root_cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, file('root.crt').read())  

store = OpenSSL.crypto.X509Store()  
store.add_cert(root_cert)  

ctx = OpenSSL.crypto.X509StoreContext(store, client_cert)
ctx.verify_certificate()  
Run Code Online (Sandbox Code Playgroud)

但后来我得到了这个错误:

X509StoreContextError:[2,1,'无法获得颁发者证书']

那我错过了什么?

python pyopenssl

6
推荐指数
1
解决办法
445
查看次数

PyOpenSSL - 我如何获得 SAN(主题备用名称)列表

我试图找到一种从给定证书获取 SAN 列表的方法,但是,我在 pyOpenSSL 文档中找不到任何内容。

关于如何从证书中提取此数据的任何想法?

python pyopenssl

6
推荐指数
3
解决办法
4729
查看次数