Skip to content

Commit c89eac2

Browse files
authored
Update Netty-TCNative for 2025.01 and other updates (#2060)
This PR replaces #2058
1 parent 61a7d3b commit c89eac2

File tree

6 files changed

+57
-104
lines changed

6 files changed

+57
-104
lines changed

modules/ROOT/pages/authentication-authorization/index.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ xref:authentication-authorization/built-in-roles.adoc#auth-built-in-roles-overvi
8282

8383
The Neo4j security model is stored in the system graph, which is maintained in the xref:database-administration/index.adoc#manage-databases-system[`system` database].
8484
All administrative commands need to be executed against it.
85-
When connected to the DBMS over xref:configuration/connectors.adoc[], administrative commands are automatically routed to the `system` database.
85+
When connected to the DBMS over xref:configuration/connectors.adoc[Configure network connectors], administrative commands are automatically routed to the `system` database.
8686

8787
[[auth-terminology]]
8888
== Terminology

modules/ROOT/pages/configuration/configuration-settings.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -889,7 +889,7 @@ m|+++PRIMARY+++
889889

890890
Connection settings control the communication between servers and between a server and a client.
891891
Neo4j provides support for Bolt, HTTP, and HTTPS protocols via connectors.
892-
For more information about the connectors, see xref:configuration/connectors.adoc[Configure connectors].
892+
For more information about the connectors, see xref:configuration/connectors.adoc[Configure network connectors].
893893

894894
When configuring the HTTPS or xref:/performance/bolt-thread-pool-configuration.adoc[Bolt], see also <<_security_settings>> and xref:security/ssl-framework.adoc[SSL framework] for details on how to work with SSL certificates.
895895

modules/ROOT/pages/configuration/ports.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ Default port: `7474`
114114

115115
* Used by Neo4j Browser and the HTTP API.
116116

117-
For more information, see xref:configuration/connectors.adoc[].
117+
For more information, see xref:configuration/connectors.adoc[Configure network connectors].
118118

119119

120120
=== HTTPS
@@ -145,7 +145,7 @@ Default port: `7473`
145145

146146
* Used by Neo4j Browser and the HTTP API.
147147

148-
For more information, see xref:configuration/connectors.adoc[].
148+
For more information, see xref:configuration/connectors.adoc[Configure network connectors].
149149

150150

151151
=== Bolt
@@ -180,7 +180,7 @@ Default port: `7687`
180180

181181
* Used by Cypher Shell, Neo4j Browser, and the official Neo4j drivers.
182182

183-
For more information, see xref:configuration/connectors.adoc[].
183+
For more information, see xref:configuration/connectors.adoc[Configure network connectors].
184184

185185

186186
[role=enterprise-edition]

modules/ROOT/pages/docker/security.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ dbms.ssl.policy.bolt.public_certificate=public.crt
7777
====
7878
For more information on configuring SSL policies, see xref:security/ssl-framework.adoc#ssl-configuration[Configuration].
7979
80-
For more information on configuring connectors, see xref:configuration/connectors.adoc#connectors-configuration-options[Configuration options].
80+
For more information on configuring network connectors, see xref:configuration/connectors.adoc#connectors-configuration-options[Configure network connectors -> Configuration options].
8181
====
8282

8383

modules/ROOT/pages/security/checklist.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Refer to xref:configuration/file-locations.adoc#file-locations-permissions[File
2828
For details, see xref:clustering/setup/encryption.adoc[Intra-cluster encryption].
2929
.. If using clustering, configure and use encryption for backups.
3030
This ensures that only servers with the specified SSL policy and SSL certificates can access the server and perform the backup.
31-
.. For configuring your Bolt and HTTPS connectors, refer to xref:configuration/connectors.adoc[Configure connectors].
31+
.. For configuring your Bolt and HTTPS connectors, refer to xref:configuration/connectors.adoc[Configure network connectors].
3232
.. If using LDAP, configure your LDAP system with encryption via StartTLS.
3333
For more information, see xref:authentication-authorization/ldap-integration.adoc#auth-ldap-encrypted-starttls[Use LDAP with encryption via StartTLS].
3434
. Be on top of the security for custom extensions:

modules/ROOT/pages/security/ssl-framework.adoc

Lines changed: 50 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -18,70 +18,37 @@ This page describes how to set up SSL within your environment, how to view, vali
1818

1919
The secure networking in Neo4j is provided through the Netty library, which supports both the native JDK SSL provider as well as Netty-supported OpenSSL derivatives.
2020
Each version of Neo4j ships with a version of Netty and Netty requires a specific version of the `netty-tcnative` library for compatibility, which can be found in the `lib/` directory of the Neo4j installation.
21+
2025.01.0 ships with _Netty 2.0.69.Final_ and requires _netty-tcnative-boringssl-static-2.0.69.Final_.
2122

22-
Follow these steps to use OpenSSL:
23+
// To uncomment the following when the table contains more than one entry.
24+
//==================================
25+
// The following table shows information about supported Neo4j versions and the required `netty-tcnative` dependency.
26+
// If a Neo4j version is not listed, use the table entry for the previous Neo4j version.
27+
28+
// .Netty-TCNative support per Neo4j version
29+
// [options="header,autowidth", cols="1,4"]
30+
// |===
31+
// | Neo4j version
32+
// | tcnative version
2333
24-
* Install a suitable `netty-tcnative` dependency into the `plugins/` directory of Neo4j.
25-
** Dependencies can be downloaded from https://netty.io/wiki/forked-tomcat-native.html.
26-
** Which `netty-tcnative` version you need depends upon the Neo4j version.
27-
For versioning details, see the <<table, Netty support per Neo4j version>> table.
28-
Make sure to install a build variant that matches your OS and architecture.
29-
* Set `xref:configuration/configuration-settings.adoc#config_dbms.netty.ssl.provider[dbms.netty.ssl.provider]=OPENSSL`.
30-
* Restart Neo4j.
34+
// | 2025.01
35+
// | 2.0.69.Final and netty-tcnative-boringssl-static-2.0.69.Final
36+
// |===
3137
3238
[NOTE]
3339
====
34-
Using dynamic versions of tcnative will require installation of platform-specific dependency libraries as described in https://netty.io/wiki/forked-tomcat-native.html.
40+
Using dynamic versions of tcnative requires installation of platform-specific dependency libraries as described in https://netty.io/wiki/forked-tomcat-native.html.
3541

36-
In most use cases, the statically linked `boringssl` variant of `netty-tcnative` will be sufficient to enable SSL encryption.
42+
In most use cases, the statically linked `boringssl` variant of `netty-tcnative` is sufficient to enable SSL encryption.
3743
====
3844
39-
The following table shows information about supported Neo4j versions and when the `netty-tcnative` dependency was updated.
40-
If a Neo4j version is not listed, use the table entry for the previous Neo4j version.
41-
42-
[[table]]
43-
.Netty-TCNative support per Neo4j version
44-
[options="header,autowidth", cols="1,4,2"]
45-
|===
46-
| Neo4j version
47-
| tcnative version
48-
| Direct link
49-
50-
| 5.23
51-
| 2.0.65.Final. Only netty-tcnative-boringssl-static is required.
52-
| https://search.maven.org/artifact/io.netty/netty-tcnative-boringssl-static/2.0.65.Final/jar[netty-tcnative-boringssl-static-2.0.65.Final]
53-
54-
| 5.20
55-
| 2.0.65.Final. Both netty-tcnative-boringssl-static and netty-tcnative-classes are required.
56-
| https://search.maven.org/artifact/io.netty/netty-tcnative-boringssl-static/2.0.65.Final/jar[netty-tcnative-boringssl-static-2.0.65.Final]
57-
https://search.maven.org/artifact/io.netty/netty-tcnative-classes/2.0.65.Final/jar[netty-tcnative-classes-2.0.65.Final]
58-
59-
| 5.10
60-
| 2.0.61.Final. Both netty-tcnative-boringssl-static and netty-tcnative-classes are required.
61-
| https://search.maven.org/artifact/io.netty/netty-tcnative-boringssl-static/2.0.61.Final/jar[netty-tcnative-boringssl-static-2.0.61.Final]
62-
https://search.maven.org/artifact/io.netty/netty-tcnative-classes/2.0.61.Final/jar[netty-tcnative-classes-2.0.61.Final]
63-
64-
| 5.8
65-
| 2.0.60.Final. Both netty-tcnative-boringssl-static and netty-tcnative-classes are required.
66-
| https://search.maven.org/artifact/io.netty/netty-tcnative-boringssl-static/2.0.60.Final/jar[netty-tcnative-boringssl-static-2.0.60.Final]
67-
https://search.maven.org/artifact/io.netty/netty-tcnative-classes/2.0.60.Final/jar[netty-tcnative-classes-2.0.60.Final]
68-
69-
| 5.5
70-
| 2.0.56.Final. Both netty-tcnative-boringssl-static and netty-tcnative-classes are required.
71-
| https://search.maven.org/artifact/io.netty/netty-tcnative-boringssl-static/2.0.56.Final/jar[netty-tcnative-boringssl-static-2.0.56.Final]
72-
https://search.maven.org/artifact/io.netty/netty-tcnative-classes/2.0.56.Final/jar[netty-tcnative-classes-2.0.56.Final]
73-
74-
| 5.1
75-
| 2.0.54.Final. Both netty-tcnative-boringssl-static and netty-tcnative-classes are required.
76-
| https://search.maven.org/artifact/io.netty/netty-tcnative-boringssl-static/2.0.54.Final/jar[netty-tcnative-boringssl-static-2.0.54.Final]
77-
https://search.maven.org/artifact/io.netty/netty-tcnative-classes/2.0.54.Final/jar[netty-tcnative-classes-2.0.54.Final]
78-
|===
79-
45+
Follow these steps to use OpenSSL:
8046
81-
[NOTE]
82-
====
47+
. Install a suitable `netty-tcnative` dependency into the `plugins/` directory of Neo4j.
48+
Which `netty-tcnative` version you need depends on your OS and architecture.
49+
. Set `xref:configuration/configuration-settings.adoc#config_dbms.netty.ssl.provider[dbms.netty.ssl.provider]=OPENSSL`.
8350
Using OpenSSL can significantly improve performance, especially for AES-GCM-cryptos, e.g. TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256.
84-
====
51+
. Restart Neo4j.
8552
8653
[[ssl-certificates]]
8754
== Certificates and private keys
@@ -110,21 +77,21 @@ To achieve this, you should concatenate each PEM-encoded certificate, starting f
11077
11178
[TIP]
11279
====
113-
If the same certificates are used across all instances of the cluster, make sure that when generating the certificates to include the DNS names of all the cluster instances in the certificates.
80+
If the same certificates are used across all instances of the cluster, ensure that the DNS names of all cluster instances are included in the certificates when generating them.
11481
Multi-host and wildcard certificates are also supported.
11582
====
11683
11784
[TIP]
11885
====
11986
If setting up intra-cluster encryption as part of a cluster configuration, ensure that the certificates used on the cluster endpoint support server and client usage.
120-
This is because when connecting between the Neo4j servers for clustering, each server uses its own certificate to authenticate as a client on the connection to another server.
87+
This is because when connecting the servers for clustering, each server uses its own certificate to authenticate as a client on the connection to another server.
12188

12289
This could be verified from within the certificate details:
12390

12491
----
12592
openssl x509 -in public.crt -noout -text
12693
----
127-
We should see that the X509v3 Extended Key Usage section shows both the usages listed:
94+
You should see that the X509v3 Extended Key Usage section shows both the usages listed:
12895

12996
----
13097
X509v3 Extended Key Usage:
@@ -231,14 +198,14 @@ openssl x509 -in public.crt –text –noout
231198
----
232199
233200
[[ssl-connectors]]
234-
== Connectors
201+
== Network connectors
235202
236-
Before enabling SSL support, you must ensure the following connector configurations to avoid errors:
203+
Before enabling SSL support, you must ensure the following network connector configurations to avoid errors:
237204
238205
* Set `server.https.enabled` to `true` when using HTTPS.
239206
* Set `server.bolt.tls_level` to `REQUIRED` or `OPTIONAL` when using Bolt.
240207
241-
For more information on configuring connectors, see xref:configuration/connectors.adoc[Configure connectors].
208+
For more information on configuring network connectors, see xref:configuration/connectors.adoc[Configure network connectors].
242209
243210
[[ssl-configuration]]
244211
== Configuration
@@ -263,7 +230,7 @@ The SSL policies are configured by assigning values to parameters of the followi
263230
| `trusted_dir` | A directory populated with certificates of trusted parties. | `trusted/`
264231
| `revoked_dir` | A directory populated with certificate revocation lists (CRLs). | `revoked/`
265232
3+^.^| *Advanced*
266-
| `verify_hostname` footnote:[In Neo4j 2025.01, the default value is changed from `false` to `true`.] | Enabling this setting turns on client-side hostname verification.
233+
| `verify_hostname` footnote:[In Neo4j 2025.01, the default value is changed from `false` to `true`.] | This setting turns on client-side hostname verification.
267234
After receiving the server's public certificate, the client compares the
268235
address it uses against the certificate Common Name (CN) and Subject Alternative
269236
Names (SAN) fields.
@@ -293,9 +260,7 @@ Note that the existence of the directories, the certificate file, and the privat
293260
Ensure that only the Neo4j user can read the private key.
294261
====
295262
296-
Each policy needs to be explicitly enabled by setting:
297-
298-
`dbms.ssl.policy.<scope>.enabled=true`
263+
Each policy needs to be explicitly enabled by setting `dbms.ssl.policy.<scope>.enabled=true`.
299264
300265
[[ssl-bolt-config]]
301266
=== Configure SSL over Bolt
@@ -450,10 +415,8 @@ server.bolt.tls_level=REQUIRED (default is DISABLED)
450415
+
451416
[TIP]
452417
====
453-
In Neo4j version 3.5, the default value is `OPTIONAL`.
454-
In the Neo4j 4.x versions, the default value is `DISABLED`, where only unencrypted client connections are to be accepted by this connector, and all encrypted connections will be rejected.
455-
Use `REQUIRED` when only encrypted client connections are to be accepted by this connector, and all unencrypted connections will be rejected.
456-
Use `OPTIONAL` where either encrypted or unencrypted client connections are accepted by this connector.
418+
`REQUIRED` means the connector accepts only encrypted client connections and reject the unencrypted ones.
419+
`OPTIONAL` means the connector accepts either encrypted or unencrypted client connections.
457420
====
458421
459422
. Test the SSL connection to the specified host and Bolt port and view the certificate:
@@ -514,15 +477,17 @@ or
514477
cypher-shell -a bolt+s://<Server DNS or IP>:<Bolt port>
515478
----
516479
517-
Neo4j Browser::
518-
From the *Connect URL* dropdown menu, select the URI scheme you want to use (`neo4j+s` or `bolt+s`).
519-
+
520-
[NOTE]
521-
====
522-
URI schemes ending `+ssc` are not supported by Neo4j Browser since the browser’s OS handles certificate trust.
523-
If it is necessary to connect to a Neo4j instance using a self-signed certificate from Neo4j Browser, first visit a web page that uses the self-signed certificate in order to prompt the browser to request that certificate trust be granted.
524-
Once that trust has been granted, you can connect with URI schemes ending `+s`.
525-
====
480+
// This should be described in the Browser guide, not here.
481+
// ===========================
482+
// Neo4j Browser::
483+
// From the *Connect URL* dropdown menu, select the URI scheme you want to use (`neo4j+s` or `bolt+s`).
484+
// +
485+
// [NOTE]
486+
// ====
487+
// URI schemes ending `+ssc` are not supported by Neo4j Browser since the browser’s OS handles certificate trust.
488+
// If it is necessary to connect to a Neo4j instance using a self-signed certificate from Neo4j Browser, first visit a web page that uses the self-signed certificate in order to prompt the browser to request that certificate trust be granted.
489+
// Once that trust has been granted, you can connect with URI schemes ending `+s`.
490+
// ====
526491
527492
[[ssl-https-config]]
528493
=== Configure SSL over HTTPS
@@ -830,7 +795,7 @@ dbms.ssl.policy.cluster.client_auth=REQUIRE
830795
[NOTE]
831796
====
832797
The policy must be configured on every server with the same settings.
833-
The actual xref:security/ssl-framework.adoc#term-ssl-cryptographic-objects[cryptographic objects] installed will be mostly different since they do not share the same private keys and corresponding certificates.
798+
The actual xref:security/ssl-framework.adoc#term-ssl-cryptographic-objects[cryptographic objects] installed will mostly be different since they do not share the same private keys and corresponding certificates.
834799
The trusted CA certificate will be shared however.
835800
====
836801
@@ -845,7 +810,7 @@ nmap --script ssl-enum-ciphers -p <port> <hostname>
845810
[NOTE]
846811
====
847812
The hostname and port have to be adjusted according to your configuration.
848-
This can prove that TLS is in fact enabled and that only the intended cipher suites are enabled.
813+
This can prove that TLS is enabled and that only the intended cipher suites are enabled.
849814
All servers and all applicable ports should be tested.
850815
If the intra-cluster encryption is enabled, the output should indicate the port is open and it is using TLS with the ciphers used.
851816
====
@@ -1066,22 +1031,10 @@ For more information, see xref:configuration/command-expansion.adoc[Command expa
10661031
There are cases where Neo4j Enterprise requires the use of specific ciphers for encryptions.
10671032
One can set up a Neo4j configuration by specifying the list of cipher suites that will be allowed during cipher negotiation.
10681033
Valid values depend on the current JRE and SSL provider.
1069-
For Oracle JRE here is the list of supported ones - https://docs.oracle.com/en/java/javase/17/docs/specs/security/standard-names.html#jsse-cipher-suite-names.
1034+
For Oracle JRE here is the list of supported ones - https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html#jsse-cipher-suite-names.
10701035
1071-
[role=label--deprecated-5.26]
1072-
[IMPORTANT]
1073-
====
1074-
1075-
CBC (cipher block chaining) ciphers, as used in TLS v1.2 network encryption, have several security vulnerabilities that make them less secure than alternative methods.
1076-
The Internet Engineering Task Force (IETF) does not recommend using CBC-based ciphers (RFC 8447), and these ciphers were removed from the TLS standard with the development of TLS v1.3.
1077-
1078-
Note that the use of the following CBC-based ciphers are deprecated from Neo4j 5.26:
1079-
1080-
* TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
1081-
* TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
1082-
* TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
1083-
* TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
1084-
====
1036+
Note that CBC (cipher block chaining)-based ciphers (RFC 8447), used in TLS v1.2 network encryption, are not supported in 2025.01.
1037+
See xref:changes-deprecations-removals.adoc[] for more information.
10851038
10861039
.Bolt
10871040
[source, properties]
@@ -1110,7 +1063,7 @@ dbms.ssl.policy.backup.ciphers=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE
11101063
[[ssl-ocsp-config]]
11111064
=== Using OCSP stapling
11121065
1113-
From Neo4j 4.2, Neo4j supports OCSP stapling, which is implemented on the server side, and can be configured in the _neo4j.config_ file.
1066+
Neo4j supports OCSP stapling, which is implemented on the server side, and can be configured in the _neo4j.config_ file.
11141067
OCSP stapling is also available for Java Bolt driver and HTTP API.
11151068
11161069
On the server side in the _neo4j.conf_ file, configure the following settings:
@@ -1139,8 +1092,8 @@ You can also enable additional debug logging for SSL by adding the following con
11391092
server.jvm.additional=-Djavax.net.debug=ssl:handshake
11401093
----
11411094
1142-
This will log additional information in the _neo4j.log_ file.
1143-
In some installations done using `rpm` based installs, _neo4j.log_ is not created.
1095+
This logs additional information in the _neo4j.log_ file.
1096+
In some installations, for example, RPM-based installs, _neo4j.log_ is not created.
11441097
To get the contents of this, since _neo4j.log_ just contains `STDOUT` content, look for the `neo4j` service log contents using `journalctl`:
11451098
11461099
[source]

0 commit comments

Comments
 (0)