如何在 Neo4j 中使用自定义自签名证书(而不是 snakeoil.cert)?

How to use custom self signed certificates in Neo4j (instead of snakeoil.cert)?

最近我 运行 遇到了在 Neo4j 中生成不绑定到 0.0.0.0 的自定义证书的问题。事实证明,与文档相反,Neo4j 需要 public 和私钥的 DER 证书。

我会post吸取教训来回答这个问题。

罗布

sudo vi /etc/neo4j/neo4j-server.properties

uncomment org.neo4j.server.webserver.address=0.0.0.0
check: org.neo4j.server.webserver.https.enabled=true
check: org.neo4j.server.webserver.https.port=7473
change: org.neo4j.server.webserver.https.cert.location=/var/ssl/neo4j/server.crt
change: org.neo4j.server.webserver.https.key.location=/var/ssl/neo4j/server.key

现在设置对 https 的访问 注意:私钥和证书都需要是DER格式

openssl genrsa -des3 -out ca.key 4096
openssl req -new -x509 -days 365 -key ca.key -out ca.pem
openssl genrsa -des3 -out server.key 4096
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca.key -set_serial 01 -out server.pem
sudo mkdir -p /var/ssl/neo4j
sudo openssl x509 -outform der -in server.pem -out /var/ssl/neo4j/server.crt
sudo openssl rsa -in server.key -inform PEM -out /var/ssl/neo4j/server.key -outform DER

另见[我的笔记] (http://www.blaeu.com/nl/doku.php/Notes)

从 3.0 开始,这已经改变了。

  • 打开 /etc/neo4j/neo4j.conf 并取消注释并更改以下行:

      # dbms.directories.certificates=/PATH/TO/YOUR/CERTIFICATES
    
  • 确保该目录包含名为 neo4j.keyneo4j.cert.

    的证书文件
  • 确保文件可以被 neo4j 写入。

如果您只使用 .pem 文件,您可以将它们重命名为 .cert.key,它们都是纯文本文件,.pem 是只是一个扩展。

reference

Directory for storing certificates to be used by Neo4j for TLS connections.

Certificates are stored in the certificates directory, and are called neo4j.key and neo4j.cert.