问题标签 [pyopenssl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1232 浏览

python - 用openssl(python)在ssl中包装ssh隧道几乎完成了

你们中的一些人可能还记得一个与此非常相似的问题,因为我寻求您的帮助,用 C 编写原始 util(使用 libssh2 和 openssl)。我现在正试图将它移植到 python 并卡在一个意想不到的地方。在 30 分钟内移植了大约 80% 的核心和功能,然后花了 10 个小时以上,仍然没有完成那个 ONE 功能,所以我再次在这里寻求您的帮助:)

整个源代码(约 130 行,应该易于阅读,不复杂)可在此处获得:http: //pastebin.com/Udm6Ehu3

连接、开启 SSL、握手、身份验证甚至发送(加密)命令都可以正常工作(我可以从路由器日志中看到我使用正确的用户名和密码登录)。

问题出在隧道场景中的 ftp_read 上(否则来自 self.proxy 的为 None)。一种尝试是这样的:

但我最终陷入了阻塞等待生物读取(或 ftp_write 函数中的通道读取)或异常 OpenSSL.SSL.WantReadError 的问题,具有讽刺意味的是,这正是我想要处理的。

如果我注释掉 ftp_read 调用,代理方案工作正常(登录,发送命令没问题),如前所述。因此,在未加密的读/写和加密的读/写中,我只是缺少加密的读隧道。

我现在已经花了 12 个小时以上,感觉我无处可去,所以任何想法都非常感谢。

编辑:我不是要求某人为我编写函数,所以如果您对 SSL(尤其是 BIO)了解一两件事,并且您可以在我的隧道和 BIO 之间的交互中看到一个明显的缺陷,这就足够了一个答案:) 喜欢:也许 ftp_write 返回的数据比请求的 10240 字节多(或者只发送两个文本(“blabla\n”,“command done.\n”)),所以它没有正确刷新。这可能是真的,但显然我不能依赖 pyOpenSSL 中的 .want_write()/.want_read() 来报告除 0 字节之外的任何内容。

0 投票
2 回答
7679 浏览

python - 使用客户端证书的自定义 urllib 打开器

我有一个我必须使用的 API。API 由 HTTPS 保护并使用相互身份验证/客户端证书。我有一个 PEM 文件和一个 CRT 文件。

当我定期连接到服务器时,使用 PyOpenSSL 我没有问题,这里是代码:

但是,因为这是一个带有客户端证书的 HTTPS API,我已经为它实现了一个 opener,以某种方式修改的代码在这里:

但是当我运行第二个代码时,出现以下错误:

最后,我做错了吗?如果没有,请帮助我理解错误...

干杯。

0 投票
2 回答
9552 浏览

python - extracting public key from certificate and encrypting data

This is for a homework assignment! I get the server's certificate using get_peer_certificate() and the calling dump_certificate to dump the certificate in a variable. The format is PEM and looks right to me.

How do I extract the server's public key from this file ('server.pubkey') and encrypt plaintext using RSA algorithm and any python library. At the time of writing this, I am using pyOpenSSL

0 投票
2 回答
110 浏览

network-programming - 在对等验证期间发送的两个证书。为什么?

服务器:

客户:

在客户端和服务器端,我如何获得两个证书。一种没有 CommonName,另一种具有正确的 CommonName= myownserver.com/myownclient.com

所有上述文件只有一个密钥/证书。另外,我猜第一个打印的证书是 ca.crt,因为它是唯一没有任何 CommonName 的证书。但为什么会这样呢?

0 投票
1 回答
4137 浏览

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

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

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

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

非常感谢!

PS:同时我已经更改了 PyOpenSSL 代码以导出加密 API 的 dump_privatekey 方法。PyOpenSSL 错误和补丁可以在以下位置找到:https ://bugs.launchpad.net/pyopenssl/+bug/780089


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

0 投票
1 回答
612 浏览

python - PyOpenSSL:强制 SSL 协商而不发送/接收?

是否可以强制 PyOpenSSL 执行 SSL 协商(特别是检索对等方的证书)而不尝试发送/接收数据?

目前,使用此代码:

get_peer_certificate对返回的调用None,但是一旦我调用了,例如,ssl_soc.write("hello")就会get_peer_certificate开始像我期望的那样返回证书。

0 投票
3 回答
34134 浏览

python - Python:使用 pyOpenSSL.crypto 读取 pkcs12 证书

我有西班牙当局 (FNMT) 颁发的有效证书,我想使用它来了解更多信息。该文件的扩展名为 .p12

我想阅读其中的信息(名字和姓氏)并检查证书是否有效。是否可以使用 pyOpenSSL 做到这一点?我想我必须在 OpenSSL 中使用加密模块。任何帮助或有用的链接?在这里尝试阅读:http ://packages.python.org/pyOpenSSL/openssl-crypto.html但信息不多:-(

0 投票
2 回答
11193 浏览

python - 使用 PyOpenSSL 提取 X.509 证书自定义扩展的值

使用 Python 和 PyOpenSSL,有没有办法检索自定义扩展的值?通过自定义扩展,我的意思是使用http://www.openssl.org/docs/apps/x509v3_config.html的任意扩展中描述的任意扩展格式编码的扩展。

此外,是否可以使用 PyOpenSSL 创建包含此类扩展的证书?

如果其中任何一个的答案是“否”,我也会对如何使用任何其他 Python 库执行此操作的指针感兴趣。我不想对 OpenSSL 命令行应用程序执行系统调用。

0 投票
9 回答
47747 浏览

openssl - easy_install PyOpenSSL 错误

关于导致以下错误的原因的任何想法?

我使用带有 openssl-devel.i386 0.9.8e-12.el5_5.7 的 Linux centos

0 投票
2 回答
434 浏览

python - 增加单个 socket.send() 调用中发送的数据量

我们有类似于下面的代码来在机器和远程主机之间创建一个启用 SSL 的套接字来传输数据。我们注意到,每次调用 sock.send 时发送的数据量约为 16K。有没有办法配置这个?以 16K 的块发送 10 MB 的数据非常慢,我们可以将块大小配置为 1-2 MB 左右吗?