Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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/7/neo4j/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 带有TLS和自签名证书的Neo4j螺栓:证书验证失败_Python_Neo4j_Openssl_Tls1.2_Neo4j Python Driver - Fatal编程技术网

Python 带有TLS和自签名证书的Neo4j螺栓:证书验证失败

Python 带有TLS和自签名证书的Neo4j螺栓:证书验证失败,python,neo4j,openssl,tls1.2,neo4j-python-driver,Python,Neo4j,Openssl,Tls1.2,Neo4j Python Driver,我正在尝试在CentOS7上为螺栓通信启用TLS的情况下设置Neo4j。服务器当前作为系统服务安装。我已生成自签名证书和密钥: sudo openssl genrsa -des3 -out /var/ssl/ca.key 4096`` sudo openssl req -new -x509 -days 365 -key /var/ssl/ca.key -out /var/ssl/ca.crt sudo openssl genrsa -des3 -out /var/ssl/neo4j/serv.k

我正在尝试在CentOS7上为螺栓通信启用TLS的情况下设置Neo4j。服务器当前作为系统服务安装。我已生成自签名证书和密钥:

sudo openssl genrsa -des3 -out /var/ssl/ca.key 4096``
sudo openssl req -new -x509 -days 365 -key /var/ssl/ca.key -out /var/ssl/ca.crt
sudo openssl genrsa -des3 -out /var/ssl/neo4j/serv.key 1024``
sudo openssl req -new -key /var/ssl/neo4j/serv.key -out /var/ssl/neo4j/server.csr
sudo openssl x509 -req -days 365 -in /var/ssl/neo4j/server.csr -CA /var/ssl/ca.crt -CAkey /var/ssl/ca.key -set_serial 01 -out /var/ssl/neo4j/server.crt
sudo openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in /var/ssl/neo4j/serv.key -out /var/ssl/neo4j/server.key
然后,我将server.crt文件复制到/var/ssl/trusted/neo4j(根据neo4j文档)中,并将以下行添加到我的neo4j.conf中:

dbms.ssl.policy.default.trusted_dir=/var/ssl/trusted/neo4j
dbms.ssl.policy.default.public_certificate=/var/ssl/neo4j/server.crt
dbms.ssl.policy.default.private_key=/var/ssl/neo4j/server.key
dbms.ssl.policy.default.base_directory=/var/ssl/neo4j/
dbms.connector.bolt.enabled=true
dbms.connector.bolt.tls_level=REQUIRED
最后,我将ca.crt文件添加到我的系统受信任证书链中:

sudo cp /var/ssl/ca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust
然后重新启动服务器,服务器正常运行。但是,在尝试使用Python客户端连接到服务器时,我看到以下错误:

neo4j.exceptions.SecurityError: Failed to establish secure connection to '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)'
产生错误的Python代码:

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

CA证书应添加到我的系统信任链中,其他应用程序似乎可以使用它,但Neo4j客户端似乎无法使用它来验证从服务器返回的证书。Neo4j是否仅将此CA用于HTTPS端点,而不用于TLS端点?如果是这样,如何将螺栓端点的CA证书获取到系统的信任链中?

如果螺栓连接尚未存在证书,并且它们与HTTPS端点证书配置分离,Neo4j将生成单独的证书


我的证书被生成到名为“neo4j.cert”和“neo4j.key”的/var/lib/neo4j/certificates/。在启动Neo4j服务器之前,当我将受信任CA签名的服务器证书和密钥复制到这些文件夹中时,它使用它们来保护Bolt端点,并且我能够连接到受保护的Python客户端。

我也遇到了类似的问题,对我来说,设置
encrypted=False
就成功了:

driver=GraphDatabase.driver(“bolt://localhost,auth=(“neo4j”,”),encrypted=False)

资料来源: