Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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中的ssl错误是什么意思?_Python_Ssl_Ssl Certificate - Fatal编程技术网

python中的ssl错误是什么意思?

python中的ssl错误是什么意思?,python,ssl,ssl-certificate,Python,Ssl,Ssl Certificate,我有以下简单的python代码,用于在客户端和服务器之间执行ssl握手和验证证书: ssl\u test.py: import ssl import socket s = socket.socket() print "connecting..." #logging.debug("Connecting") # Connect with SSL mutual authentication # We only trust our server's CA, and it only trusts use

我有以下简单的python代码,用于在客户端和服务器之间执行ssl握手和验证证书:

ssl\u test.py:

import ssl
import socket

s = socket.socket()
print "connecting..."
#logging.debug("Connecting")
# Connect with SSL mutual authentication
# We only trust our server's CA, and it only trusts user certificates signed by it
c = ssl.wrap_socket(s, cert_reqs=ssl.CERT_REQUIRED,
                    ssl_version=ssl.PROTOCOL_SSLv3, ca_certs='ca.crt',
                    certfile='user.crt', keyfile='user.key')
c.connect((constants.server_addr, constants.port))
当我执行此操作时,我得到以下错误

>python ssl_test.py
Traceback (most recent call last):
  File "ssl_test.py", line 12, in <module>
    c.connect(('192.168.1.82', 7070))
  File "C:\Python27\lib\ssl.py", line 331, in connect
    self._real_connect(addr, False)
  File "C:\Python27\lib\ssl.py", line 314, in _real_connect
    self.ca_certs, self.ciphers)
ssl.SSLError: [Errno 0] _ssl.c:340: error:00000000:lib(0):func(0):reason(0)
python ssl_test.py 回溯(最近一次呼叫最后一次): 文件“ssl_test.py”,第12行,在 c、 连接('192.168.1.82',7070)) 文件“C:\Python27\lib\ssl.py”,第331行,在connect中 self.\u real\u connect(地址,错误) 文件“C:\Python27\lib\ssl.py”,第314行,在\u real\u connect中 self.ca_证书、self.ciphers) ssl.SSLError:[Errno 0]\u ssl.c:340:error:00000000:lib(0):func(0):原因(0) 这个错误是什么意思?我如何解决它?

这看起来像是,给出了以下答案:

不,问题在于客户端的“ca_certs”参数。 您不能使用目录。您必须使用一个包含多个 连接的证书。我会加强文档来做到这一点 更清楚

我看到你的
ca_certs
是一个文件,而不是一个目录,但也许这仍然能说明问题。ca.crt文件的格式是否正确,位置是否正确?

这看起来像是,给出了以下答案:

不,问题在于客户端的“ca_certs”参数。 您不能使用目录。您必须使用一个包含多个 连接的证书。我会加强文档来做到这一点 更清楚


我看到你的
ca_certs
是一个文件,而不是一个目录,但也许这仍然能说明问题。ca.crt文件的格式是否正确,位置是否正确?

我是Python新手,在搜索原始ssl.SSLError后发现了这条线索。我知道这对原始海报没有帮助,但它可能会帮助其他人克服这个错误。大多数Python示例都使用:

    ca_certs="/etc/ca_certs_file"
由于此文件不存在,因此会出现此错误。要在最新版本的Linux上使用系统CA证书,请使用:

    ca_certs="/etc/ssl/certs/ca-certificates.crt"

我是Python新手,在搜索了原始的ssl.SSLError之后,我终于找到了这条线索。我知道这对原始海报没有帮助,但它可能会帮助其他人克服这个错误。大多数Python示例都使用:

    ca_certs="/etc/ca_certs_file"
由于此文件不存在,因此会出现此错误。要在最新版本的Linux上使用系统CA证书,请使用:

    ca_certs="/etc/ssl/certs/ca-certificates.crt"

可能是格式不正确。不确定这是怎么发生的,但我直接从服务器下载了证书(我有ssh访问权限)并使用了该证书,并且能够使其工作。谢谢@ewok,您可以检查是否需要更通用的CA证书列表。它可能格式不正确。不确定这是怎么发生的,但我直接从服务器下载了证书(我有ssh访问权限)并使用了该证书,并且能够使其工作。谢谢@ewok,您可以查看是否需要更通用的CA证书列表。