为啥 pyOpenSSL 中没有定义 context.set_tmp_ecdh()?

Posted

技术标签:

【中文标题】为啥 pyOpenSSL 中没有定义 context.set_tmp_ecdh()?【英文标题】:Why is context.set_tmp_ecdh() not defined in pyOpenSSL?为什么 pyOpenSSL 中没有定义 context.set_tmp_ecdh()? 【发布时间】:2015-12-02 14:46:49 【问题描述】:

我正在尝试实施在Python Paste SSL server with TLSv1.2 and Forward Secrecy 找到的答案。

如何使用 context.set_tmp_ecdh()?我的 Linux 或 Windows 机器上都没有定义该方法。它在 pyOpenSSL 文档和我见过的各种示例中。我正在使用 Python 2.6.6(或 2.7)和 pyOpenSSL v 0.13(特别是 CentOS 包 pyOpenSSL-0.13.1-2.el6.x86_64.rpm)。是否有我缺少的特定版本或其他依赖项等?

【问题讨论】:

您使用的是哪个版本的 OpenSSL?确定检查ssl.OPENSSL_VERSION 我现在正在尝试“手动”实现该功能(仅更新我自己的代码)。我引用 groups.google.com/forum/#!topic/autobahnws/FacdoiUeY9s 和 github.com/pyca/pyopenssl/blob/master/src/OpenSSL/SSL.py 目前,我收到错误:ImportError: No module named cryptography.hazmat.bindings.openssl.binding 评论部分既不是添加新问题的地方,也不是为现有问题添加更新的地方。如果您的问题得到了回答(我认为),请接受答案。如果您还有其他问题,请创建一个新问题。 我只是在回答你的问题。人们经常在评论区来回走动。 【参考方案1】:

在 pyOpenSSL 0.15 中对 ecdh 的支持是 added,因此您不能将它与已安装的 pyOpenSSL 版本一起使用。

您必须install 更新版本。

【讨论】:

我会调查的。我需要在 CentOS 6 上使用 python 2.6.6 执行此操作。我还需要在 Windows 上使用 Python 2.7 执行此操作。所以,我还不确定其中的细节和任何不兼容性。 这行得通,但在我的 Linux 机器上安装并不直接。参考***.com/questions/7340784/…。 我也让它在 Windows 中工作,但我必须从 Python 2.7.5 升级到 2.7.9,然后通过“pip”安装 pyOpenSSL。我强烈建议使用这种方法而不是尝试从源代码安装新版本的 pyOpenSSL(因为不再有 msi 安装程序)。

以上是关于为啥 pyOpenSSL 中没有定义 context.set_tmp_ecdh()?的主要内容,如果未能解决你的问题,请参考以下文章

如何在LINQ-To-SQL中排除Contex.InsertOnSubmit()上的用户定义字段?

pyOpenSSL 密码列表失败

使用 pyOpenSSL 从证书或其他连接信息中提取公钥

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

PyopenSSL和scrapy安装在Python 27,Win 64 Bit中失败

计算机中的contex理解