如何在Python中导入OpenSSL

36

我正在尝试运行这段简单的代码以获取SSL证书:

import ssl, socket

#print ssl.get_server_certificate(('www.google.com', 443))
cert=ssl.get_server_certificate(('www.google.com', 443))
# OpenSSL
x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
x509.get_subject().get_components()

但我收到以下错误提示:

Traceback (most recent call last):
  File "C:\Users\e\Desktop\Python\ssl\test.py", line 6, in <module>
    x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
NameError: name 'OpenSSL' is not defined
我知道我需要导入OpenSSL。但是我不知道如何导入?我在哪里获取OpenSSL呢? 我从https://pypi.python.org/pypi/pyOpenSSL下载了一个名叫pyOpenSSL的模块,包含两个文件夹:pyOpenSSL-0.15.1.dist-info和OpenSSL。 当我尝试添加import OpenSSL或import pyOpenSSL时出现错误。 请问如何清晰地解释如何导入这些库或模块?它们应该放在哪里?如果不在代码文件的同一目录中,如何在导入语法中编写路径? 请帮忙解决。 编辑: 当我尝试在代码中添加from OpenSSL import SSL时,我遇到了错误:
    C:\Users\e\Desktop\Python\ssl>test.py
Traceback (most recent call last):
  File "C:\Users\e\Desktop\Python\ssl\test.py", line 2, in <module>
    from OpenSSL import SSL
  File "C:\Users\e\Desktop\Python\ssl\OpenSSL\__init__.py", line 8, in <module>
    from OpenSSL import rand, crypto, SSL
  File "C:\Users\e\Desktop\Python\ssl\OpenSSL\rand.py", line 9, in <module>
    from six import integer_types as _integer_types
ImportError: No module named six

1
pip install six 或 pip install requests[security] - Padraic Cunningham
2个回答

68

测试中:

from OpenSSL import SSL

对编辑的回应:pip install pyopenssl 应该已经安装了 six。如果您正在尝试自己安装,请勿这样做,但是您可以使用 pip install six cryptography 手动安装依赖项,然后您的导入应该可以正常工作。如果不行,请留言,我会进行进一步的调查。

对评论的回应:在Windows上安装pip有说明


我是一个Windows用户。我尝试了这个命令,但是我得到了以下提示:“'pip' 不是内部或外部命令,也不是可运行的程序或批处理文件。” - user2192774
@user2192774,请输入'python -m pip install pyopenssl'。 - lcieslak

0

这两种形式都可以工作。

import OpenSSL.SSL  # or
from OpenSSL import SSL

您也可以使用conda进行安装。

请注意,有两个类似名称的Python包:openssl和pyopenssl。

  • 两者都具有相同的导入名称OpenSSL
  • 两者都被许多其他软件包使用。因此,它们不是一个取代另一个。通常需要两者。
  • 安装pyopenssl看起来也会安装openssl。
  • 例如,Python本身使用openssl,而conda使用pyopenssl。

以下是查看代码片段的代码:

conda create -n x1 python=3.8 
conda list -n x1 | grep openssl # will see openssl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接