Skip to content

Commit d6ecddf

Browse files
committed
basic security tutorial now mostly works for private/3P CA case
1 parent 59aaf4d commit d6ecddf

File tree

2 files changed

+31
-18
lines changed

2 files changed

+31
-18
lines changed

deploy-manage/security/self-tls-considerations.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ applies_to:
66
eck:
77
products:
88
- id: elasticsearch
9-
navigation_title: External CA considerations
9+
navigation_title: Private or 3P CA considerations
1010
---
1111

12-
# Considerations for using an external CA for transport layer security
12+
# Considerations for using an private or third-party CA for transport layer security
1313

1414
By default, {{es}} uses mutual TLS (mTLS) to secure node-to-node transport connections. Mutual TLS means that data is encrypted in transit, ensuring confidentiality and integrity, and also that both nodes in a connection must present a valid certificate to the other node when establishing the connection. Each node requires that certificates be issued by a trusted certificate authority, ensuring that only authorized nodes can connect. Configure trusted certificate authorities using settings in the [`xpack.security.transport.ssl.*`](elasticsearch://reference/elasticsearch/configuration-reference/security-settings.md#transport-tls-ssl-settings) namespace, such as `xpack.security.transport.ssl.certificate_authorities` and `xpack.security.transport.ssl.truststore.path`.
1515

1616
::::{warning}
1717
Transport connections between {{es}} nodes are security-critical and you must protect them carefully. Malicious actors who can observe or interfere with unencrypted node-to-node transport traffic can read or modify cluster data. A malicious actor who can establish a transport connection might be able to invoke system-internal APIs, including APIs that read or modify cluster data.
1818
::::
1919

20-
## External CA mTLS transport certificate requirements
20+
## mTLS transport certificate requirements for private or third-party CAs
2121

2222
Obtain your transport certificates from a certificate authority that only issues certificates to {{es}} nodes permitted to connect to your cluster. Do not use a public certificate authority or an organization-wide private certificate authority, because these issue certificates to entities beyond your authorized cluster nodes. Use a dedicated private certificate authority for each {{es}} cluster.
2323

deploy-manage/security/set-up-basic-security.md

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,45 @@ Configuring TLS between nodes is the basic security setup to prevent unauthorize
1717

1818
This document focuses on the **manual configuration** of TLS for [{{es}} transport protocol](./secure-cluster-communications.md#encrypt-internode-communication) in self-managed environments. Use this approach if you want to provide your own TLS certificates, generate them with Elastic’s tools, or have full control over the configuration. Alternatively, {{es}} can [automatically generate and configure HTTPS certificates](./self-auto-setup.md) for you.
1919

20+
In this guide, you will learn how to:
21+
22+
* [Either provide or generate security certificates](#obtain-certificates).
23+
* [Configure your {{es}} nodes to use the generated certificate for the transport layer](#encrypt-internode-communication).
24+
25+
Refer to [Transport TLS/SSL settings](elasticsearch://reference/elasticsearch/configuration-reference/security-settings.md#transport-tls-ssl-settings) for the complete list of available settings in {{es}}.
26+
2027
::::{note}
2128
For other deployment types, such as {{ech}}, {{ece}}, or {{eck}}, refer to [](./secure-cluster-communications.md).
2229
::::
2330

24-
In this guide, you will learn how to:
31+
## Obtain certificates
2532

26-
* [Generate a Certificate Authority (CA) and a server certificate using the `elasticsearch-certutil` tool](#generate-certificates).
27-
* [Configure your {{es}} nodes to use the generated certificate for the transport layer](#encrypt-internode-communication).
33+
You can add as many nodes as you want in a cluster but they must be able to communicate with each other. The communication between nodes in a cluster is handled by the transport module. To secure your cluster, you must ensure that internode communications are encrypted and verified, which is achieved with mutual TLS.
2834

29-
Refer to [Transport TLS/SSL settings](elasticsearch://reference/elasticsearch/configuration-reference/security-settings.md#transport-tls-ssl-settings) for the complete list of available settings in {{es}}.
35+
In a secured cluster, {{es}} nodes use certificates to identify themselves when communicating with other nodes.
3036

31-
## Considerations for using an external CA
37+
The cluster must validate the authenticity of these certificates. The recommended approach is to trust a specific certificate authority (CA). When nodes are added to your cluster they must use a certificate signed by the same CA.
3238

33-
You might choose to use an external CA to generate transport certificates for node-to-node connections.
39+
For the transport layer, we recommend using a separate, dedicated CA instead of an existing, possibly shared CA so that node membership is tightly controlled.
3440

35-
Transport connections between {{es}} nodes are security-critical and you must protect them carefully. Malicious actors who can observe or interfere with unencrypted node-to-node transport traffic can read or modify cluster data. A malicious actor who can establish a transport connection might be able to invoke system-internal APIs, including APIs that read or modify cluster data.
41+
When you manually set up transport TLS, you can choose from the following CA options:
3642

37-
Carefully review [](/deploy-manage/security/self-tls-considerations.md) to ensure that the certificates that you provide meet the security requirements for transport connections.
43+
* [Provide certificates from a private or third-party CA](#private-3p)
44+
* [Use the `elasticsearch-certutil` tool to generate a CA unique to your cluster](#generate-certificates)
3845

39-
## Generate the certificate authority [generate-certificates]
46+
### Provide certificates from a private or third-party CA [private-3p]
4047

41-
You can add as many nodes as you want in a cluster but they must be able to communicate with each other. The communication between nodes in a cluster is handled by the transport module. To secure your cluster, you must ensure that internode communications are encrypted and verified, which is achieved with mutual TLS.
48+
You might choose to use a private or third-party CA to generate transport certificates for node-to-node connections.
4249

43-
In a secured cluster, {{es}} nodes use certificates to identify themselves when communicating with other nodes.
50+
Transport connections between {{es}} nodes are security-critical and you must protect them carefully. Malicious actors who can observe or interfere with unencrypted node-to-node transport traffic can read or modify cluster data. A malicious actor who can establish a transport connection might be able to invoke system-internal APIs, including APIs that read or modify cluster data.
4451

45-
The cluster must validate the authenticity of these certificates. The recommended approach is to trust a specific certificate authority (CA). When nodes are added to your cluster they must use a certificate signed by the same CA.
52+
Carefully review [](/deploy-manage/security/self-tls-considerations.md) to ensure that the certificates that you provide meet the security requirements for transport connections.
53+
54+
After you obtain your certificate, place the certificate file in the `$ES_PATH_CONF` directory on **every** node in your cluster.
4655

47-
For the transport layer, we recommend using a separate, dedicated CA instead of an existing, possibly shared CA so that node membership is tightly controlled. Use the `elasticsearch-certutil` tool to generate a CA for your cluster.
56+
### Generate the certificate authority using `elasticsearch-certutil` [generate-certificates]
57+
58+
You can use the `elasticsearch-certutil` tool to generate a CA for your cluster. Using `elasticsearch-certutil` guarantees that your certificates meet {{es}} certificate requirements and security best practices.
4859

4960
1. Before starting {{es}}, use the `elasticsearch-certutil` tool on any single node to generate a CA for your cluster.
5061

@@ -67,7 +78,7 @@ For the transport layer, we recommend using a separate, dedicated CA instead of
6778
1. Enter the password for your CA, or press **Enter** if you did not configure one in the previous step.
6879
2. Create a password for the certificate and accept the default file name.
6980

70-
The output file is a keystore named `elastic-certificates.p12`. This file contains a node certificate, node key, and CA certificate.
81+
The output file is a keystore named `elastSic-certificates.p12`. This file contains a node certificate, node key, and CA certificate.
7182

7283
3. On **every** node in your cluster, copy the `elastic-certificates.p12` file to the `$ES_PATH_CONF` directory.
7384

@@ -76,7 +87,9 @@ For the transport layer, we recommend using a separate, dedicated CA instead of
7687

7788
The transport networking layer is used for internal communication between nodes in a cluster. When security features are enabled, you must use TLS to ensure that communication between the nodes is encrypted.
7889

79-
Now that you’ve generated a certificate authority and certificates, you’ll update your cluster to use these files.
90+
Now that you’ve obtained your certificates, you’ll update your cluster to use these files.
91+
92+
These steps assume that you [generated a CA and certificates](#generate-certificates) using `elasticsearch-certutil`. The `xpack.security.transport.ssl` settings that you need to set differ if you're using a private or third-party CA. Refer to [Transport TLS/SSL settings](elasticsearch://reference/elasticsearch/configuration-reference/security-settings.md#transport-tls-ssl-settings) full list of available settings.
8093

8194
::::{note}
8295
{{es}} monitors all files such as certificates, keys, keystores, or truststores that are configured as values of TLS-related node settings. If you update any of these files, such as when your hostnames change or your certificates are due to expire, {{es}} reloads them. The files are polled for changes at a frequency determined by the global {{es}} `resource.reload.interval.high` setting, which defaults to 5 seconds.

0 commit comments

Comments
 (0)