如何在 Neo4j 中使用 SSL 证书而不是自签名证书(或 snakeoil.cert)
How to use SSL certificates in Neo4j instead of self-signed certificates (or snakeoil.cert)
对于生产 Neo4j 服务器,我需要使用非自签名的 SSL 证书。我将 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 server.key 4096
openssl req -new -key server.key -out server.csr
server.csr(证书签名请求)由您选择的证书颁发机构签名。
要安装签名证书,将其另存为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
谢谢 rvaneijk。对我有用。
安装签名证书(从您的 CA 获得)。将您的 pem 和密钥文件保存在同一个文件夹中。
- 创建扩展名为 .crt 的(der 格式)证书
sudo openssl x509 -outform der -in your_server_pem.pem -out /.crt
- 创建 DER 格式的密钥
sudo openssl rsa -in server.key -inform PEM -out /.key -outform DER
如果您的 neo4j 服务器在 public 子网中,并且您需要有效的 SSL 来保护传输中的数据。
对于证书生成,您可以使用原生 AWS 证书生成或 LetsEncrypt。
让我们加密 -
Let's Encrypt 是 Internet Security Research Group 的一个非盈利证书颁发机构 运行,它免费提供用于传输层安全加密的 X.509 证书。
安装 LetsEncrypt-
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install -y certbot
生成免费证书-
$ sudo certbot certonly
Saving debug log to /var/log/letsencrypt/letsencrypt.log
# Change group of all letsencrypt files to neo4j
sudo chgrp -R neo4j /etc/letsencrypt/*
# Make sure all directories and files are group readable.
sudo chmod -R g+rx /etc/letsencrypt/*
设置符号链接和 neo4j 期望的目录结构
cd /var/lib/neo4j/certificates
sudo mkdir revoked trusted bak
# Move old generated certificates into a backup directory
sudo mv neo4j.* bak
export MY_DOMAIN=graph.somehost.com
# Configure cert neo4j will use
sudo ln -s /etc/letsencrypt/live/$MY_DOMAIN/fullchain.pem neo4j.cert
# Configure private key neo4j will use
sudo ln -s /etc/letsencrypt/live/$MY_DOMAIN/privkey.pem neo4j.key
# Indicate that this cert is trusted for neo4j
sudo ln -s /etc/letsencrypt/live/$MY_DOMAIN/fullchain.pem trusted/neo4j.cert
更新 Neo4jConf 文件
dbms.connectors.default_listen_address=0.0.0.0
dbms.connectors.default_advertised_address=your.hostname.com
bolt.ssl_policy=default
dbms.ssl.policy.default.base_directory=/var/lib/neo4j/certificates
dbms.ssl.policy.default.allow_key_generation=false
dbms.ssl.policy.default.private_key=/var/lib/neo4j/certificates/neo4j.key
dbms.ssl.policy.default.public_certificate=/var/lib/neo4j/certificates/neo4j.cert
dbms.ssl.policy.default.revoked_dir=/var/lib/neo4j/certificates/revoked
dbms.ssl.policy.default.client_auth=NONE
重新启动所有节点。
对于生产 Neo4j 服务器,我需要使用非自签名的 SSL 证书。我将 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 server.key 4096
openssl req -new -key server.key -out server.csr
server.csr(证书签名请求)由您选择的证书颁发机构签名。
要安装签名证书,将其另存为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
谢谢 rvaneijk。对我有用。
安装签名证书(从您的 CA 获得)。将您的 pem 和密钥文件保存在同一个文件夹中。
- 创建扩展名为 .crt 的(der 格式)证书
sudo openssl x509 -outform der -in your_server_pem.pem -out /.crt
- 创建 DER 格式的密钥
sudo openssl rsa -in server.key -inform PEM -out /.key -outform DER
如果您的 neo4j 服务器在 public 子网中,并且您需要有效的 SSL 来保护传输中的数据。
对于证书生成,您可以使用原生 AWS 证书生成或 LetsEncrypt。
让我们加密 - Let's Encrypt 是 Internet Security Research Group 的一个非盈利证书颁发机构 运行,它免费提供用于传输层安全加密的 X.509 证书。
安装 LetsEncrypt-
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install -y certbot
生成免费证书-
$ sudo certbot certonly
Saving debug log to /var/log/letsencrypt/letsencrypt.log
# Change group of all letsencrypt files to neo4j
sudo chgrp -R neo4j /etc/letsencrypt/*
# Make sure all directories and files are group readable.
sudo chmod -R g+rx /etc/letsencrypt/*
设置符号链接和 neo4j 期望的目录结构
cd /var/lib/neo4j/certificates
sudo mkdir revoked trusted bak
# Move old generated certificates into a backup directory
sudo mv neo4j.* bak
export MY_DOMAIN=graph.somehost.com
# Configure cert neo4j will use
sudo ln -s /etc/letsencrypt/live/$MY_DOMAIN/fullchain.pem neo4j.cert
# Configure private key neo4j will use
sudo ln -s /etc/letsencrypt/live/$MY_DOMAIN/privkey.pem neo4j.key
# Indicate that this cert is trusted for neo4j
sudo ln -s /etc/letsencrypt/live/$MY_DOMAIN/fullchain.pem trusted/neo4j.cert
更新 Neo4jConf 文件
dbms.connectors.default_listen_address=0.0.0.0
dbms.connectors.default_advertised_address=your.hostname.com
bolt.ssl_policy=default
dbms.ssl.policy.default.base_directory=/var/lib/neo4j/certificates
dbms.ssl.policy.default.allow_key_generation=false
dbms.ssl.policy.default.private_key=/var/lib/neo4j/certificates/neo4j.key
dbms.ssl.policy.default.public_certificate=/var/lib/neo4j/certificates/neo4j.cert
dbms.ssl.policy.default.revoked_dir=/var/lib/neo4j/certificates/revoked
dbms.ssl.policy.default.client_auth=NONE
重新启动所有节点。