Skip to content

Conversation

@jfreden
Copy link
Contributor

@jfreden jfreden commented Nov 10, 2025

This adds documentation for the RCS Strong Verification feature added in #136299, #134137, #134893, #135674 and #134604.

@jfreden jfreden requested a review from gmjehovich November 10, 2025 13:41
@jfreden jfreden added >docs General docs changes :Security/Security Security issues without another label labels Nov 10, 2025
@elasticsearchmachine elasticsearchmachine added Team:Docs Meta label for docs team Team:Security Meta label for security team v9.3.0 labels Nov 10, 2025
@elasticsearchmachine
Copy link
Collaborator

Pinging @elastic/es-security (Team:Security)

@elasticsearchmachine
Copy link
Collaborator

Pinging @elastic/core-docs (Team:Docs)

@github-actions
Copy link
Contributor

github-actions bot commented Nov 10, 2025

🔍 Preview links for changed docs

@github-actions
Copy link
Contributor

ℹ️ Important: Docs version tagging

👋 Thanks for updating the docs! Just a friendly reminder that our docs are now cumulative. This means all 9.x versions are documented on the same page and published off of the main branch, instead of creating separate pages for each minor version.

We use applies_to tags to mark version-specific features and changes.

Expand for a quick overview

When to use applies_to tags:

✅ At the page level to indicate which products/deployments the content applies to (mandatory)
✅ When features change state (e.g. preview, ga) in a specific version
✅ When availability differs across deployments and environments

What NOT to do:

❌ Don't remove or replace information that applies to an older version
❌ Don't add new information that applies to a specific version without an applies_to tag
❌ Don't forget that applies_to tags can be used at the page, section, and inline level

🤔 Need help?

Copy link
Contributor

@shainaraskas shainaraskas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a few questions and comments. overall, it would be good to understand whether these settings would apply to anything other than vanilla self-managed to vanilla self-managed connections.

cc-ing @eedugon because he's deep into this area and should probably also take a look

: ([Secure](docs-content://deploy-manage/security/secure-settings.md)) Password for the truststore specified by `cluster.remote.signing.truststore.path`.

`cluster.remote.signing.truststore.algorithm`
: ([Dynamic](docs-content://deploy-manage/stack-settings.md#dynamic-cluster-setting)) The algorithm for the truststore. Defaults to the default algorithm for the Java KeyManagerFactory.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would people know where this is? what options does this setting accept?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed it to specify the algorithm. Thanks!

: ([Secure](docs-content://deploy-manage/security/secure-settings.md)) The passphrase that is used to decrypt the private key specified by `cluster.remote.<cluster_alias>.signing.key`. Since the key might not be encrypted, this value is optional.

`cluster.remote.<cluster_alias>.signing.certificate`
: ([Dynamic](docs-content://deploy-manage/stack-settings.md#dynamic-cluster-setting)) Specifies the path for the PEM encoded certificate (or certificate chain) that is associated with the signing key. This certificate is sent as part of the signature and must be trusted by the remote cluster's `cluster.remote.signing.certificate_authorities` or `cluster.remote.signing.truststore.path` configuration. This setting can be used only if `cluster.remote.<cluster_alias>.signing.key` is set.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
: ([Dynamic](docs-content://deploy-manage/stack-settings.md#dynamic-cluster-setting)) Specifies the path for the PEM encoded certificate (or certificate chain) that is associated with the signing key. This certificate is sent as part of the signature and must be trusted by the remote cluster's `cluster.remote.signing.certificate_authorities` or `cluster.remote.signing.truststore.path` configuration. This setting can be used only if `cluster.remote.<cluster_alias>.signing.key` is set.
: ([Dynamic](docs-content://deploy-manage/stack-settings.md#dynamic-cluster-setting)) The path for the PEM encoded certificate (or certificate chain) that is associated with the signing key. This certificate is sent as part of the signature and must be trusted by the remote cluster's `cluster.remote.signing.certificate_authorities` or `cluster.remote.signing.truststore.path` configuration. This setting can be used only if `cluster.remote.<cluster_alias>.signing.key` is set.


### Request signing settings [remote-cluster-request-signing]

The following per-cluster settings are used on the local cluster to sign outgoing cross-cluster requests. A private key and certificate
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might want to clarify here that it will sign outgoing cross-cluster requests for connections to a certain alias (not global)

@jfreden
Copy link
Contributor Author

jfreden commented Nov 11, 2025

Thanks for the great review @shainaraskas !

overall, it would be good to understand whether these settings would apply to anything other than vanilla self-managed to vanilla self-managed connections.

This is general purpose but was built specifically for a customer running on ECH. Does that answer your question? Should this be added somewhere else to cover the ECH configuration in detail?

@gmjehovich
Copy link
Contributor

I got a comment from Alex on the allowlist PR saying to be sure to include that these settings are cloud configurable https://github.com/elastic/cloud/pull/148921#pullrequestreview-3449669258

Copy link
Contributor

@eedugon eedugon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great! I've added a few minor comments for your consideration.

One thing that might be important is to mark the settings with the icon for cloud if they are available for ECE & ECH, but please confirm that with @shainaraskas , as I might be wrong ---> Update : this has been confirmed by @gmjehovich already, thanks!

private key and certificate must be configured for each remote cluster that requires signature verification.


### PEM encoded files [remote-cluster-signing-pem-files]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### PEM encoded files [remote-cluster-signing-pem-files]
#### PEM encoded files [remote-cluster-signing-pem-files]

I think this should be inside Request signing settings. Please ignore otherwise!

: ([Dynamic](docs-content://deploy-manage/stack-settings.md#dynamic-cluster-setting)) The path for the PEM encoded certificate (or certificate chain) that is associated with the signing key. This certificate is sent as part of the signature and must be trusted by the remote cluster's `cluster.remote.signing.certificate_authorities` or `cluster.remote.signing.truststore.path` configuration. This setting can be used only if `cluster.remote.<cluster_alias>.signing.key` is set.


### Java keystore files [remote-cluster-signing-keystore-files]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Java keystore files [remote-cluster-signing-keystore-files]
#### Java keystore files [remote-cluster-signing-keystore-files]

I think this should be inside Request signing settings. Please ignore otherwise!

## Remote cluster strong verification settings [remote-cluster-signing-settings]
```{applies_to}
deployment:
self: preview 9.3
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be stack now (aka "all deployment types") because you confirmed it works for cloud. :)

Suggested change
self: preview 9.3
stack: preview 9.3

@shainaraskas
Copy link
Contributor

@jfreden

This is general purpose but was built specifically for a customer running on ECH. Does that answer your question? Should this be added somewhere else to cover the ECH configuration in detail?

the reason I asked this is because, in your other PR, you added the content in a file specific to completely self-managed deployments. we'll need to refactor some stuff on that side so this information is surfaced appropriately. cc: @eedugon


`cluster.remote.signing.truststore.algorithm`
: ([Dynamic](docs-content://deploy-manage/stack-settings.md#dynamic-cluster-setting)) The algorithm for the truststore. Defaults to
`SunX509`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are there any limitations on what algorithms can be used?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it's very limited SunX509 or PKIX are the common ones. This is copied from https://www.elastic.co/docs/reference/elasticsearch/configuration-reference/security-settings#ref-pki-settings (truststore.algorithm)

Copy link
Contributor

@bytebilly bytebilly left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM (pending discussion on the naming raised in the other doc PR)

@jfreden
Copy link
Contributor Author

jfreden commented Nov 13, 2025

I've addressed all the comments and also talked to @eedugon over zoom. He's working on a refactor of this section so will go ahead and merge it as is and he will work further with organising this documentation. Thanks all!

@jfreden jfreden enabled auto-merge (squash) November 13, 2025 13:11
@jfreden jfreden merged commit 298c76c into elastic:main Nov 13, 2025
11 checks passed
jfreden added a commit to elastic/docs-content that referenced this pull request Nov 13, 2025
This adds documentation for the RCS Strong Verification feature added in
elastic/elasticsearch#136299,
elastic/elasticsearch#134137,
elastic/elasticsearch#134893,
elastic/elasticsearch#135674 and
elastic/elasticsearch#134604.

Related settings docs PR:
elastic/elasticsearch#137822

---------

Co-authored-by: shainaraskas <[email protected]>
Co-authored-by: Edu González de la Herrán <[email protected]>
szybia added a commit to szybia/elasticsearch that referenced this pull request Nov 13, 2025
…-json

* upstream/main: (158 commits)
  Cleanup files from repo root folder (elastic#138030)
  Implement OpenShift AI integration for chat completion, embeddings, and reranking (elastic#136624)
  Optimize AsyncSearchErrorTraceIT to avoid failures (elastic#137716)
  Removes support for null TransportService in RemoteClusterService (elastic#137939)
  Mute org.elasticsearch.index.mapper.DateFieldMapperTests testSortShortcuts elastic#138018
  rest-api-spec: fix type of enums (elastic#137521)
  Update Gradle wrapper to 9.2.0 (elastic#136155)
  Add RCS Strong Verification Documentation (elastic#137822)
  Use docvalue skippers on dimension fields (elastic#137029)
  Introduce INDEX_SHARD_COUNT_FORMAT (elastic#137210)
  Mute org.elasticsearch.xpack.inference.integration.AuthorizationTaskExecutorIT testCreatesChatCompletion_AndThenCreatesTextEmbedding elastic#138012
  Fix ES|QL search context creation to use correct results type (elastic#137994)
  Improve Snapshot Logging (elastic#137470)
  Support extra output field in TOP function (elastic#135434)
  Remove NumericDoubleValues class (elastic#137884)
  [ML] Fix ML calendar event update scalability issues (elastic#136886)
  Task may be unregistered outside of the trace context in exceptional cases. (elastic#137865)
  Refine workaround for S3 repo analysis known issue (elastic#138000)
  Additional DEBUG logging on authc failures (elastic#137941)
  Cleanup index resolution (elastic#137867)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

>docs General docs changes :Security/Security Security issues without another label Team:Docs Meta label for docs team Team:Security Meta label for security team v9.3.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants