Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用Python 2.7.18连接到NBD服务器_Python_Python 2.7 - Fatal编程技术网

无法使用Python 2.7.18连接到NBD服务器

无法使用Python 2.7.18连接到NBD服务器,python,python-2.7,Python,Python 2.7,我正在尝试使用python 2.7.18连接到NBD服务器。我的代码在centOS服务器(可能是较旧的python/ssl库)上运行时能够连接,但由于迁移到Ubuntu 20.04,当我尝试协商TLS连接时,出现以下错误: File "/usr/lib/python2.7/ssl.py", line 369, in wrap_socket _context=self) File "/usr/lib/python2.7/ssl.py", line 599,

我正在尝试使用python 2.7.18连接到NBD服务器。我的代码在centOS服务器(可能是较旧的python/ssl库)上运行时能够连接,但由于迁移到Ubuntu 20.04,当我尝试协商TLS连接时,出现以下错误:

File "/usr/lib/python2.7/ssl.py", line 369, in wrap_socket
_context=self)
File "/usr/lib/python2.7/ssl.py", line 599, in __init__
self.do_handshake()
File "/usr/lib/python2.7/ssl.py", line 828, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727) 
在我看来,要么是由于这两个设备无法协商合适的密码导致我无法连接,要么是python/python SSL库中发生了禁止自签名证书的更改

我在网上阅读了一些解决方案(错误有点模糊),然后指出了ssl的用法。_创建_未经验证的_上下文分配,我已经尝试过(如下面的代码所示),但这似乎不起作用,这让我相信不是这样,或者我可能没有将其正确应用到我的代码中

我的代码(下面的“修复”当前不起作用)如下:

def _upgrade_socket_to_TLS(self):
    thesocket = self._s
    # Forcing the client to use TLSv1_2
    ssl._create_default_https_context = ssl._create_unverified_context
    context = ssl.create_default_context()
    ssl._create_default_https_context = ssl._create_unverified_context
    context.load_verify_locations(cafile=self.ca_cert)
    self._s = context.wrap_socket(thesocket, server_side=False,
                                  do_handshake_on_connect=True,
                                  server_hostname=self.tls_hostname)
我可以确认证书路径是正确的,并且在升级到Ubuntu20.04之前,这段代码(未验证的上下文位除外)工作正常

值得注意的是,ubuntu服务器运行的是openssl 1.1.1F,而我连接的服务器运行的是1.0.2k-fips

  • 对于我来说,确定这是一个连接问题(与密码相关)还是由于SSL验证引起的最好方法是什么
  • 如果这是由于SSL验证,我假设我在错误地应用下面的上下文
**编辑** 好的,在玩了一些游戏之后,我可以确定这不是密码问题,因为以下代码可以工作:

 context = ssl._create_unverified_context()
    self._s = context.wrap_socket(thesocket, server_side=False,
                                  do_handshake_on_connect=True,
                                  server_hostname=self.tls_hostname)
由于我在网络中的连接是完全内部的,所以我假设这是合适的,但是我想考虑安全选项。我仍然不知道为什么主机名验证会导致问题