首页 > 解决方案 > SecurityError: 无法建立到“EOF 违反协议 (_ssl.c:841)”的安全连接

问题描述

我正在尝试连接到 Neo4j,但我不断收到此错误。我试过

from neo4j.v1 import GraphDatabase
driver = GraphDatabase.driver(uri="bolt://localhost:7687", auth=("neo4j", "12345"))

但是当我尝试连接时出现此错误

SecurityError: 无法建立到“EOF 违反协议 (_ssl.c:841)”的安全连接

当我输入http://localhost:7474/browser/时,我可以连接到浏览器

这是完整的错误日志:

-------------------------------------------------- ------------------------- SSLEOFError Traceback(最近一次调用最后)~\AppData\Roaming\Python\Python36\site-packages\neobolt\direct .py in _secure(s, host, ssl_context, **config) 853 try: --> 854 s = ssl_context.wrap_socket(s, server_hostname=host if HAS_SNI and host else None) 855 除了 SSLError 作为原因:

c:\program files\python36\lib\ssl.py in wrap_socket(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, session) 406 server_hostname=server_hostname, --> 407 _context=self, _session=session) 408

c:\program files\python36\lib\ssl.py in init (self, sock, keyfile, certfile, server_side, cert_reqs, ssl_version, ca_certs, do_handshake_on_connect, family, type, proto, fileno, suppress_ragged_eofs, npn_protocols, ciphers, server_hostname, _context, _session) 813 raise ValueError("do_handshake_on_connect 不应为非阻塞套接字指定") --> 814 self.do_handshake() 815

c:\program files\python36\lib\ssl.py in do_handshake(self, block)
1067 self.settimeout(None) -> 1068 self._sslobj.do_handshake() 1069 最后:

c:\program files\python36\lib\ssl.py in do_handshake(self) 688 """开始 SSL/TLS 握手。""" --> 689 self._sslobj.do_handshake() 690 if self.context.check_hostname :

SSLEOFError: EOF 发生违反协议 (_ssl.c:841)

上述异常是以下异常的直接原因:

1 ----> 2 driver = GraphDatabase.driver(uri="bolt://localhost:7687", auth=("neo4j", "12345")) 中的 SecurityError Traceback (最近一次调用最后一次)

~\AppData\Roaming\Python\Python36\site-packages\neo4j__init__.py in driver(cls, uri, **config) 118 :class:.Driver子类实例直接。119 """ --> 120 返回驱动程序(uri, **config) 121 122

~\AppData\Roaming\Python\Python36\site-packages\neo4j__init__.py in new (cls, uri, **config) 159 用于驱动程序中的子类。subclasses (): 160 if parsed_scheme in subclass.uri_schemes: --> 161 return subclass(uri, **config) 162 raise ValueError("URI scheme %r not supported" % parsed.scheme) 163

~\AppData\Roaming\Python\Python36\site-packages\neo4j__init__.py in new (cls, uri, **config) 233 234 pool = ConnectionPool(connector, instance.address, **config) --> 235 pool。 release(pool.acquire()) 236 instance._pool = pool 237 instance._max_retry_time = config.get("max_retry_time", default_config["max_retry_time"])

~\AppData\Roaming\Python\Python36\site-packages\neobolt\direct.py in acquire(self, access_mode) 713 714 def acquire(self, access_mode=None): --> 715 return self.acquire_direct(self.address ) 716 717

~\AppData\Roaming\Python\Python36\site-packages\neobolt\direct.py in acquire_direct(self, address) 606 if can_create_new_connection: 607 try: --> 608 connection = self.connector(address, error_handler=self.connection_error_handler ) 609 除了 ServiceUnavailable: 610 self.remove(address)

~\AppData\Roaming\Python\Python36\site-packages\neo4j__init__.py in connector(address, **kwargs) 230 231 def connector(address, **kwargs): --> 232 return connect(address, **dict (config, **kwargs)) 233 234 pool = ConnectionPool(connector, instance.address, **config)

~\AppData\Roaming\Python\Python36\site-packages\neobolt\direct.py in connect(address, **config) 970 raise ServiceUnavailable("Failed to resolve address for %s" % address) 971 else: -->第972章

~\AppData\Roaming\Python\Python36\site-packages\neobolt\direct.py in connect(address, **config) 961 host = address[0] 962 s = _connect(resolved_address, **config) --> 963 s, der_encoded_server_certificate = _secure(s, host, security_plan.ssl_context, **config) 964 connection = _handshake(s, address, der_encoded_server_certificate, **config) 965 例外为错误:

~\AppData\Roaming\Python\Python36\site-packages\neobolt\direct.py in _secure(s, host, ssl_context, **config) 857 error = SecurityError("无法建立到 {!r} 的安全连接"。格式(cause.args[1]))858 错误。Cause = Cause --> 859 raise error 860 else: 861 # 检查服务器是否提供了证书

SecurityError: 无法建立到“EOF 违反协议 (_ssl.c:841)”的安全连接

标签: pythonpython-3.xneo4j

解决方案


我为可能有同样问题的人找到了解决方案。您需要添加encrypted=False.

代替

from neo4j.v1 import GraphDatabase
driver = GraphDatabase.driver(uri="bolt://localhost:7687", auth=("neo4j", "12345"))

它应该是:

driver = GraphDatabase.driver(uri="bolt://localhost:7687", auth=("neo4j", "12345"), encrypted=False)

希望这会对某人有所帮助


推荐阅读