diff --git a/assets/css/index.css b/assets/css/index.css index f91f8f6f3..45f32786a 100644 --- a/assets/css/index.css +++ b/assets/css/index.css @@ -579,6 +579,11 @@ html { scrollbar-gutter: stable; } +/* Auto-clickable for standalone images */ +img:not(a img):not(.image-card-img):not([src*="#no-click"]) { + cursor: pointer; +} + /* Chroma syntax highlighting */ /* Background */ diff --git a/content/operate/rs/security/certificates/_index.md b/content/operate/rs/security/certificates/_index.md index a7e9c1731..7bb5c12c0 100644 --- a/content/operate/rs/security/certificates/_index.md +++ b/content/operate/rs/security/certificates/_index.md @@ -22,7 +22,9 @@ Here's the list of supported certificates that create secure, encrypted connecti | Certificate name | Autogenerated | Description | |------------------|:---------------:|-------------| | `api` | | Encrypts [REST API]({{< relref "/operate/rs/references/rest-api/" >}}) requests and responses. | +| `ccs_internode_encryption` | | Control plane [internode encryption]({{< relref "/operate/rs/security/encryption/internode-encryption" >}}). Encrypts internal traffic for cluster management. | | `cm` | | Secures connections to the Redis Enterprise Cluster Manager UI. | +| `data_internode_encryption` | | Data plane [internode encryption]({{< relref "/operate/rs/security/encryption/internode-encryption" >}}). Encrypts internal data traffic between shards and the data management controller (DMC). | | `ldap_client` | :x: | Secures connections between LDAP clients and LDAP servers. | | `metrics_exporter` | | Sends Redis Enterprise metrics to external [monitoring tools]({{< relref "/operate/rs/monitoring/" >}}) over a secure connection. | | `mtls_trusted_ca` | :x: | Required to enable certificate-based authentication for secure, passwordless access to the REST API. | diff --git a/content/operate/rs/security/certificates/updating-certificates.md b/content/operate/rs/security/certificates/updating-certificates.md index aac5195b9..04dc784cf 100644 --- a/content/operate/rs/security/certificates/updating-certificates.md +++ b/content/operate/rs/security/certificates/updating-certificates.md @@ -16,7 +16,7 @@ When you update the certificates, the new certificate replaces the same certific ## How to update certificates -You can use the [`rladmin`]({{< relref "/operate/rs/references/cli-utilities/rladmin" >}}) command-line interface (CLI) or the [REST API]({{< relref "/operate/rs/references/rest-api" >}}) to update certificates. The Cluster Manager UI lets you update proxy and syncer certificates on the **Cluster > Security > Certificates** screen. +You can use the [`rladmin`]({{< relref "/operate/rs/references/cli-utilities/rladmin" >}}) command-line interface (CLI) or the [REST API]({{< relref "/operate/rs/references/rest-api" >}}) to update certificates. The Cluster Manager UI lets you update proxy, syncer, and internode encryption certificates on the **Cluster > Security > Certificates** screen. The new certificates are used the next time the clients connect to the database. @@ -33,6 +33,7 @@ To replace proxy or syncer certificates using the Cluster Manager UI: 1. Go to **Cluster > Security > Certificates**. 1. Expand the section for the certificate you want to update: + - For internode encryption certificates, expand **Internode encryption certificates**. - For the proxy certificate, expand **Server authentication**. - For the syncer certificate, expand **Replica Of and Active-Active authentication**. diff --git a/content/operate/rs/security/encryption/internode-encryption.md b/content/operate/rs/security/encryption/internode-encryption.md index c83958ac4..9aebbc51c 100644 --- a/content/operate/rs/security/encryption/internode-encryption.md +++ b/content/operate/rs/security/encryption/internode-encryption.md @@ -87,7 +87,11 @@ To enable internode encryption for new databases by default, use one of the foll { "data_internode_encryption": true } ``` -## Encryption ciphers and settings +## Self-signed certificates + +By default, Redis Enterprise Software uses self-signed certificates for internode encryption. These certificates are automatically generated, managed, and rotated by the system. + +### Encryption ciphers and settings To encrypt internode communications, Redis Enterprise Software uses TLS 1.2 and the following cipher suites: @@ -103,7 +107,7 @@ The TLS layer determines which TLS version to use. No configurable settings are exposed; internode encryption is used internally within a cluster and not exposed to any outside service. -## Certificate authority and rotation +### Certificate authority and rotation Starting with v6.2.4, internode communication is managed, in part, by two certificates: one for the control plane and one for the data plane. These certificates are signed by a private certificate authority (CA). The CA is not exposed outside of the cluster, so it cannot be accessed by external processes or services. In addition, each cluster generates a unique CA that is not used anywhere else. @@ -118,3 +122,90 @@ You can use the Redis Enterprise Software REST API to rotate certificates manual ``` rest POST /v1/cluster/certificates/rotate ``` + +## Customer-provided certificates + +Instead of using Redis Enterprise Software's self-signed certificates for internode encryption, you can provide certificates generated by your Certificate Authority (CA). + +### Certificate requirements + +Customer-provided internode encryption certificates must meet the following requirements: + +- Certificates must be in PEM format. + +- Certificates must contain the certificate chain and the leaf certificate. + +### Upload customer-provided certificates + +You can upload either: + +- One certificate for both data plane internode encryption (DPINE) and control plane internode encryption (CPINE). + +- Two separate certificates: one for DPINE and one for CPINE. + +To upload internode encryption certificates, use one of the following methods: + +{{< multitabs id="get-module-versions" +tab1="Cluster Manager UI" +tab2="rladmin" +tab3="REST API" >}} + +1. In the Cluster Manager UI, go to **Cluster > Security > Certificates**. + +1. Expand the **Internode encryption certificates** section. + +1. Click **Replace certificates**. + +1. In the **Internode encryption certificates** panel, select one of the following options: + + - Use the same certificate for data and control plane internode encryption + + - Use separate certificates for data and control plane internode encryption + +1. For each certificate and key, click **Upload** and use the file browser to select the relevant PEM file. + +1. Click **Save & Rotate**. + +-tab-sep- + + + +Run [`rladmin cluster certificate`]({{< relref "/operate/rs/references/cli-utilities/rladmin/cluster/certificate" >}}). + +To upload a single certificate for both CPINE and DPINE: + +```sh +rladmin cluster certificate set cpine_dpine certificate_file .pem key_file .pem +``` + +To upload 2 different certificate and key pairs for CPINE and DPINE: + +```sh +rladmin cluster certificate set cpine certificate_file .pem key_file .pem dpine certificate_file .pem key_file .pem +``` + +-tab-sep- + + + +Send a [`PUT /v1/certificates`]({{< relref "/operate/rs/references/rest-api/requests/certificates#put-certificates" >}}) request: + +```sh +PUT https://:/v1/certificates +``` + +{{< /multitabs >}} + + +### Certificate expiration and rotation + +Customer-provided internode encryption certificates are not rotated automatically. To prevent possible issues with cluster and database unavailability caused by expired internode encryption certificates: + +- You should monitor the certificates' expiration dates and renew them before they expire. + +- In case you do not renew the customer-managed certificates before they expire, Redis Enterprise Software automatically replaces them with self-signed certificates 5 days before expiration. You can upload new customer-provided certificates to replace these certificates anytime. + +### Performance recommendations + +For optimal performance with customer-provided certificates, follow the same recommendations as for self-signed certificates detailed in the [Encryption ciphers and settings](#encryption-ciphers-and-settings) section. + diff --git a/static/js/index.js b/static/js/index.js index fd0c66ffd..23a1ef2b2 100644 --- a/static/js/index.js +++ b/static/js/index.js @@ -184,4 +184,17 @@ const mobileMenu = (() => { document.addEventListener('click', clickHandler, false) document.addEventListener('keydown', keyHandler, false) -})() \ No newline at end of file +})() + +// Simple click-to-open for standalone images +document.addEventListener('click', function(e) { + // Check if clicked element is a standalone img (not inside an anchor, not image-card, not no-click) + if (e.target.tagName === 'IMG' && + !e.target.closest('a') && + !e.target.classList.contains('image-card-img') && + !e.target.src.includes('#no-click')) { + + // Open image in same tab, just like clicking a regular link + window.location.href = e.target.src + } +}) \ No newline at end of file