我有一个套接字服务器,我试图在python 2.5上转移到SSL,但我遇到了pyOpenSSL的障碍.我找不到任何关于使用它的好教程,所以我主要依靠猜测.
以下是我的服务器如何设置套接字:
ctx = SSL.Context(SSL.SSLv23_METHOD)
ctx.use_privatekey_file ("mykey.pem")
ctx.use_certificate_file("mycert.pem")
sock = SSL.Connection(ctx, socket.socket(socket.AF_INET, socket.SOCK_STREAM))
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
addr = ('', int(8081))
sock.bind(addr)
sock.listen(5)
Run Code Online (Sandbox Code Playgroud)
以下是它如何接受客户:
sock.setblocking(0)
while True:
if len(select([sock], [], [], 0.25)[0]):
client_sock, client_addr = sock.accept()
client = ClientGen(client_sock)
Run Code Online (Sandbox Code Playgroud)
以下是它从连接的套接字发送/接收的方式:
while True:
(r, w, e) = select.select([sock], [sock], [], 0.25)
if len(r):
bytes = sock.recv(1024)
if len(w):
n_bytes = sock.send(self.message)
Run Code Online (Sandbox Code Playgroud)
它是紧凑的,但你得到了一般的想法.问题是,一旦发送/接收循环开始,它就会在发送或接收任何内容之前立即死亡(我无论如何都可以看到):
Traceback (most recent call last):
File "ClientGen.py", line 50, in networkLoop
n_bytes = sock.send(self.message
WantReadError
Run Code Online (Sandbox Code Playgroud)
手册中对'WantReadError'的描述非常模糊,说它几乎可以来自任何地方.我究竟做错了什么?
如何使用twcry与m2crypto(或pyopenssl)实现dtls协议?
使用Python和PyOpenSSL,有没有办法检索自定义扩展的价值?通过自定义扩展,我的意思是使用在http://www.openssl.org/docs/apps/x509v3_config.html的 ARBITRARY EXTENSIONS下描述的任意扩展格式编码的扩展.
此外,是否可以使用PyOpenSSL创建包含此类扩展的证书?
如果其中任何一个的答案都是"否",我也会对如何使用任何其他Python库执行此操作的指针感兴趣.我不想对OpenSSL命令行应用程序执行系统调用.
我正在Python 2.7.8下开发。其中的 _ssl.pyd 是使用 OpenSSL 1.0.1h 构建的。
但是,我还有 pyOpenSSL 0.10(我知道,旧版本)来满足所需的依赖关系。pyOpenSSL 包括 libeay32.dll 和 ssleay32.dll 版本 0.9.8o。
这是怎么回事?是因为 pyOpenSSL 提供了 OpenSSL 库的直接接口吗?
当我运行命令pypy -m pip安装加密
然后我有以下错误:
cc -arch x86_64 -O2 -fPIC -Wimplicit -I/opt/pypy-5.0.1/include -c build/temp.macosx-10.10-x86_64-2.7/_openssl.c -o build/temp.macosx-10.10-x86_64 -2.7/build/temp.macosx-10.10-x86_64-2.7/_openssl.o build/temp.macosx-10.10-x86_64-2.7/_openssl.c:423:10:致命错误:'openssl/e_os2.h'文件没有发现生成#include ^ 1错误.错误:命令'cc'失败,退出状态为1
----------------------------------------
Run Code Online (Sandbox Code Playgroud)
命令"/ usr/local/bin/pypy -u -c"import setuptools,tokenize; file ='/ private/var/folders/_t/8l_tq9210xl4bzlhkspnv8br0000gn/T/pip-build-Gjhf5l/cryptography/setup.py'; exec(compile(getattr(tokenize,'open',open)(file).read() .replace('\ r \n','\n'),file,'exec'))"install --record /var/folders/_t/8l_tq9210xl4bzlhkspnv8br0000gn/T/pip-6_y8I9-record/install-record.txt --single-version-external-managed --compile"失败,错误代码为1/private/var/folders/_t/8l_tq9210xl4bzlhkspnv8br0000gn/T/pip-build-Gjhf5l/cryptography /
我想使用pyopenssl验证下载文件的签名和证书,但文档不清楚,谷歌没有帮助.
我在用户的计算机上有一个根CA证书,现在当用户下载文件时,我将随之发送证书和签名.首先,我需要在机器上使用rootCA验证证书,然后我需要用文件验证签名
在openssl中,我可以使用以下来验证ca证书
openssl verify -CAfile <root_pem> <cert_pem>
Run Code Online (Sandbox Code Playgroud)
以及以下验证文件
openssl dgst <algo> -verify <cert_pub_key> -signature <signature> <file>
Run Code Online (Sandbox Code Playgroud)
我正在寻找使用python进行相同的方式,最好是pyopenssl
我正在运行一个依赖于 OpenSSL 的 Pyhon3 脚本,它依赖于 OpenSSL。但是,我在安装它时遇到问题。
# pip3 install pyOpenSSL
Downloading/unpacking pyOpenSSL
Downloading pyOpenSSL-17.4.0-py2.py3-none-any.whl (52kB): 52kB downloaded
Requirement already satisfied (use --upgrade to upgrade): six>=1.5.2 in /usr/lib/python3/dist-packages (from pyOpenSSL)
Downloading/unpacking cryptography>=1.9 (from pyOpenSSL)
Downloading cryptography-2.1.3.tar.gz (441kB): 441kB downloaded
Running setup.py (path:/tmp/pip-build-ljoosnix/cryptography/setup.py) egg_info for package cryptography
error in cryptography setup command: Invalid environment marker: python_version < '3'
Complete output from command python setup.py egg_info:
error in cryptography setup command: Invalid environment marker: python_version < '3'
----------------------------------------
Cleaning up...
Command python setup.py …Run Code Online (Sandbox Code Playgroud) 从网页中获取一个字符串作为它
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDPzCCAqgCAQAwZDELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAmJqMQswCQYDVQQH
EwJiajERMA8GA1UEChMIbXhjei5uZXQxETAPBgNVBAsTCG14Y3oubmV0MRUwEwYD
VQQDEwx3d3cubXhjei5uZXQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMQ7
an4v6pHRusBA0prMWXMWJCXY1AO1H0X8pvZj96T5GWg++JPCQE9guPgGwlD02U0B
NDoEABeD1fwyKZ+JV5UFiOeSjO5sWrzIupdMI7hf34UaPNxHo6r4bLYEykw/Rnmb
GKnNcD4QlPkypE+mLR4p0bnHZhe3lOlNtgd6NpXbAgMBAAGgggGZMBoGCisGAQQB
gjcNAgMxDBYKNS4yLjM3OTAuMjB7BgorBgEEAYI3AgEOMW0wazAOBgNVHQ8BAf8E
BAMCBPAwRAYJKoZIhvcNAQkPBDcwNTAOBggqhkiG9w0DAgICAIAwDgYIKoZIhvcN
AwQCAgCAMAcGBSsOAwIHMAoGCCqGSIb3DQMHMBMGA1UdJQQMMAoGCCsGAQUFBwMB
MIH9BgorBgEEAYI3DQICMYHuMIHrAgEBHloATQBpAGMAcgBvAHMAbwBmAHQAIABS
AFMAQQAgAFMAQwBoAGEAbgBuAGUAbAAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABp
AGMAIABQAHIAbwB2AGkAZABlAHIDgYkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAADANBgkqhkiG9w0BAQUFAAOBgQBIKHVhHb9FZdVLV4VZ
9DK4aBSuYY//jlIpvsfMIdHXfAsuan7w7PH87asp1wdb6lD9snvLZix1UGK7VQg6
wUFYNlMqJh1m7ITVvzhjdnx7EzCKkBXSxEom4mwbvSNvzqOKAWsDE0gvHQ9aCSby
NFBQQMoW94LqrG/kuIQtjwVdZA==
-----END NEW CERTIFICATE REQUEST-----
Run Code Online (Sandbox Code Playgroud)
如何将其解码为纯文本
Certificate information
Common name: www.xxx.net
Organization:xxx.net
Organizational unit:xxx.net
City/locality:bj
State/province:bj
Country:CN
Signature algorithm:SHA1
Key algorithm:RSA
Key size:1024
Run Code Online (Sandbox Code Playgroud)
我知道有第三方 pyopenssl,但不确定如何从 Web 前端处理字符串缓冲区。或者你有什么更好的主意?谢谢
当尝试使用从 PE 文件中提取证书时cryptography,失败并显示ValueError: Unable to load certificate. 我可以使用命令行从同一个 PE 文件中正确提取subprocess证书openssl。我想了解使用的代码版本出了什么问题cryptography。
我使用的是Python 3.7.1、加密2.4.2和pefile 2018.8.8
import pefile
from cryptography import x509
from cryptography.hazmat.backends import default_backend
pe = pefile.PE(fname)
pe.parse_data_directories(directories=[pefile.DIRECTORY_ENTRY['IMAGE_DIRECTORY_ENTRY_SECURITY']])
sigoff = 0
siglen = 0
for s in pe.__structures__:
if s.name == 'IMAGE_DIRECTORY_ENTRY_SECURITY':
sigoff = s.VirtualAddress
siglen = s.Size
pe.close()
with open(fname, 'rb') as fh:
fh.seek(sigoff)
thesig = fh.read(siglen)
cert = x509.load_der_x509_certificate(thesig[8:], default_backend())
Run Code Online (Sandbox Code Playgroud)
这失败了ValueError: Unable to load certificate
python openssl pyopenssl portable-executable python-cryptography
我在虚拟环境中使用 django。我正在使用 powershell 并尝试安装 pyopenssl。
内部虚拟环境:
点版本 = 19.2.3
蟒蛇版本= 3.8.3
外部虚拟环境:
点版本 = 21.2.4
蟒蛇版本= 3.8.3
我尝试使用 python -m pip install -U pip and升级虚拟环境中的 pip pip install --upgrade pip ,但它被挂起,没有产生任何输出,这里是 屏幕截图。
我尝试pip install pyopenssl:
(bookmarks) bookmarks> pip install pyopenssl
Collecting pyopenssl
Using cached https://files.pythonhosted.org/packages/b2/5e/06351ede29fd4899782ad335c2e02f1f862a887c20a3541f17c3fa1a3525/pyOpenSSL-20.0.1-py2.py3-none-any.whl
Collecting six>=1.5.2 (from pyopenssl)
Using cached https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl
Collecting cryptography>=3.2 (from pyopenssl)
Using cached https://files.pythonhosted.org/packages/cc/98/8a258ab4787e6f835d350639792527d2eb7946ff9fc0caca9c3f4cf5dcfe/cryptography-3.4.8.tar.gz
Installing build dependencies ...
Run Code Online (Sandbox Code Playgroud)
它挂在了Installing build dependencies ...。我等了30分钟但什么也没发生。
我也尝试过python -m pip install pyopenssl
(bookmarks) bookmarks> …Run Code Online (Sandbox Code Playgroud) pyopenssl ×10
python ×9
openssl ×2
pip ×2
cryptography ×1
csr ×1
decoder ×1
m2crypto ×1
pypy ×1
python-2.7 ×1
python-3.x ×1
ssl ×1
twisted ×1
x509 ×1