问题标签 [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 回答
710 浏览

python - 如何将 pyOpenSSL verify_cb 的 ssl 证书中的 cn 关联到生成的套接字

我对 pyOpenSSL 有点陌生。我试图弄清楚如何将生成的套接字与 ssl 证书相关联。verify_cb 被调用,这使我可以访问证书和 conn,但是当发生这种情况时我如何关联这些东西:

cli,addr = self.server.accept()

0 投票
2 回答
1785 浏览

python - 如何在 pyOpenSSL 中验证 RSA SHA1 签名

我尝试安装 M2Crypto 并遇到问题。我不想强迫我的客户使用这些难以安装的库。所以,我想我会试试 pyOpenSSL。我能够从 pem 证书中获取公钥,但无法找到任何方法来验证签名。

0 投票
8 回答
228693 浏览

python - HTTPS 连接 Python

我正在尝试验证该目标是否公开了 https Web 服务。我有通过 HTTP 连接的代码,但我不确定如何通过 HTTPS 连接。我读过你使用 SSL,但我也读过它不支持证书错误。我得到的代码来自 python 文档:

有谁知道如何连接到 HTTPS?

我已经尝试过 HTTPSConenction,但它响应错误代码,声称 httplib 没有属性 HTTPSConnection。我也没有可用的 socket.ssl。

我已经安装了 Python 2.6.4,但我认为它没有编译 SSL 支持。有没有办法将此支持集成到较新的 python 中而无需再次安装它。

我已经安装了 OpenSSL 和 pyOpenSsl,并且我从答案之一中尝试了以下代码:

我有一个错误:

有谁知道如何让这个工作?

我发现了问题所在,我使用的 Python 版本不支持 SSL。我目前在以下位置找到了这个解决方案:http ://www.webtop.com.au/compiling-python-with-ssl-support 。

在这个非常好的解决方案之后,代码现在可以工作了。当我导入 ssl 和 HTTPSConnection 时,我知道不会出错。

感谢大家的帮助。

0 投票
1 回答
2974 浏览

python - pyOpenSSL 和 WantReadError

我有一个套接字服务器,我正试图在 python 2.5 上转移到 SSL,但我遇到了 pyOpenSSL 的障碍。我找不到任何关于使用它的好教程,所以我主要靠猜测进行操作。

这是我的服务器设置套接字的方式:

以下是它接受客户的方式:

以下是它从连接的套接字发送/接收的方式:

它很紧凑,但你明白了。问题是,一旦发送/接收循环开始,它会在发送或接收任何内容之前立即死亡(无论如何我都可以看到):

手册对“WantReadError”的描述非常模糊,说它几乎可以来自任何地方。我究竟做错了什么?

0 投票
2 回答
1455 浏览

python - 扭曲的 DTLS 连接

如何使用带 m2crypto(或 pyopenssl)的扭曲实现 dtls 协议?

0 投票
1 回答
3010 浏览

python - 我需要为带有 SSL-socket 连接的 Python 分发(密钥、证书)什么?

我正在尝试编写一个能够在服务器之间交换数据的通用服务器客户端应用程序。我已经阅读了很多 OpenSSL 文档,并且我已经成功设置了自己的 CA 并创建了一个证书(和私钥)用于测试目的。

我被 Python 2.3 困住了,所以我不能使用标准的“ssl”库。相反,我坚持使用 PyOpenSSL,这看起来还不错,但是关于它的文档并不多。

我的问题并不是让它工作。我对证书以及它们需要去哪里感到更加困惑。

这是我的两个有效的程序:

服务器:

客户:

我从ftp://ftp.pbone.net/mirror/ftp.pld-linux.org/dists/2.0/PLD/i586/PLD/RPMS/python-pyOpenSSL-examples-0.6-2.i586.rpm找到了这些信息其中包含一些示例脚本。

正如您可能收集的那样,我并不完全理解“# ????????”之间的部分。我不明白为什么客户端和服务器都需要证书和私钥。我不确定每个人应该去哪里,但我不应该只需要分发密钥的一部分(可能是公共部分)吗?如果您在每台服务器上仍然需要两者,它就会破坏拥有非对称密钥的目的,对吗?

我尝试交替删除任一盒子上的 pkey 或 cert,无论删除哪个,我都会收到以下错误:

OpenSSL.SSL.Error:[('SSL 例程','SSL3_READ_BYTES','sslv3 警报握手失败'),('SSL 例程','SSL3_WRITE_BYTES','ssl 握手失败')]

有人可以解释这是否是 SSL 的预期行为。我真的需要将私钥和公共证书分发给我的所有客户吗?我试图避免任何巨大的安全问题,泄露私钥往往是一个大问题......

谢谢您的帮助!

==================================================== =================

感谢 caf 帮我解决问题。根据他的建议,我创建了两个新的证书对:spaceman 和 dmgr。然后,我将两个“spaceman”部分(密钥、证书)都放入客户端程序中,对于“dmgr”密钥也是如此。

基本上,客户端中只有以下两行发生了变化,尽管旁边还有很多使用 openssl 的工作。

修正版:

0 投票
2 回答
1755 浏览

python - 让 pyOpenSSL 客户端使用 SSL 会话恢复

我一直在尝试让我的 pyOpenSSL 客户端在连续建立多个连接(它正在发送 http 请求)到 Tomcat 应用程序服务器时使用 TLS/SSL 会话恢复,但没有成功。我很确定服务器端的一切都很好,因为我有几个其他客户端进行了类似的连接,并且他们都能够进行会话恢复。

对于第一个连接,我创建了 ssl 上下文。然后我只是将上下文重用于后续连接

0 投票
1 回答
5605 浏览

python - 在 Amazon Linux (EC2) 上安装 pyOpenSSL

我在 ec2 上使用亚马逊 Linux 的第一个默认 AMI,但似乎无法安装 pyOpenSSL。我试过:sudo wget http://launchpad.net/pyopenssl/main/0.11/+download/pyOpenSSL-0.11.tar.gz && easy_install pyOpenSSL-0.11.tar.gz。

还尝试过: 结果是:sudo python setup.py build

我认为我需要确保安装了 python devel 以具有标题,检查 yum 安装了什么。百胜清单 | grep python 产生:

我安装了 python-devel 和 openssl-devel 并且能够构建和安装模块。但是,我无法导入它。

0 投票
3 回答
3967 浏览

openssl - 如何检查 Twisted 中的 TLS 握手是否已完成

这是这个问题的后续:SSL handshake failures when no data was sent over Twisted TLSConnection

我已经实现了一个简单的 SSL 服务器,它会在客户端连接后立即关闭连接。

我正在使用 openssl 对其进行测试,但我遇到了握手失败:

问题是它TLS.Connection.loseConnection不等待正在进行的握手完成,而只是断开客户端。

附加到的回调OpenSSL.SSL.Connection.do_handshake会很棒......但不幸的是,我不知道这是否可以完成......或者如何做到这一点。

非常感谢我如何测试 TLS 握手已完成的任何提示。非常感谢!

这是代码


现在我解决了这个非常肮脏的问题,而且不是 100% 有效。

0 投票
3 回答
5620 浏览

openssl - 尝试使用此代码在 TLS 上运行 TLS 时,为什么会出现握手失败?

我尝试实现一个协议,该协议可以使用 TLS 运行 TLS twisted.protocols.tls,这是一个使用内存 BIO 的 OpenSSL 接口。

我将它实现为一个协议包装器,它看起来像一个常规的 TCP 传输,但它具有分别添加startTLSstopTLS删除 TLS 层的方法。这适用于 TLS 的第一层。如果我通过“本机”Twisted TLS 传输运行它,它也可以正常工作。但是,如果我尝试使用startTLS此包装器提供的方法添加第二个 TLS 层,则会立即出现握手错误,并且连接最终会处于某种未知的不可用状态。

让它工作的包装器和两个助手看起来像这样:

我有用于执行此操作的简单客户端和服务器程序,可从启动板 ( bzr branch lp:~exarkun/+junk/onion) 获得。当我使用它startTLS两次调用上述方法时,没有干预调用stopTLS,出现此 OpenSSL 错误:

为什么事情会出错?