[ 
https://issues.apache.org/jira/browse/IGNITE-29210?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anton Vinogradov updated IGNITE-29210:
--------------------------------------
    Description: 
Allow administrators to replace node certificates and trust stores without 
restarting nodes. Add {{control.sh --ssl reload}} and {{--ssl status}} for 
server and client nodes in the current topology.

h3. Required behavior

* Keep one managed context per factory instance. Discovery, communication, the 
client connector and binary REST must use it. Transports sharing the same 
factory reload together. Distinct instances remain independent even if they 
compare equal.
* New connections use the replacement context. Existing connections stay open. 
Build and validate the replacement before installing it, and retain the 
previous context on failure.
* Reject unsupported TLS settings, known invalid certificate dates, explicitly 
missing private keys and a factory that returns the context already in use. 
Unknown certificate metadata alone must not prevent manual reload. Do not probe 
TLS connections or claim to verify peer trust.
* Report one result per factory on each node, listing its transports. Return an 
error if any selected node fails, including a node that leaves before its job 
is assigned. Continue processing the other nodes.
* Status reports loaded certificate metadata and reload results, including 
unavailable metadata and invalid loaded certificates.
* Require ADMIN_OPS for both commands. Log each factory reload attempt with its 
initiator.

h3. Tests and documentation

Cover all four transports, mutual TLS, trust-store changes, new and existing 
connections, shared and separate factories, custom factories, partial failures, 
nodes leaving the topology, permissions, audit output and command parsing. 
Include the shared test certificate generator and Bouncy Castle as a test 
dependency.

Explain certificate replacement, verification and recovery in the administrator 
guide. Document fresh context creation, optional metadata and serialized 
factory calls in the custom-factory reference.

h3. Dependencies and remaining work

The branch {{ignite-29210}} is prepared. Open its PR after IGNITE-29209 is 
merged, then run CI on the updated branch.

This task delivers manual reload and status. Automatic renewal is tracked in 
IGNITE-29211 and HTTP REST integration in IGNITE-29212.

  was:
Allow administrators to replace node certificates and trust stores without 
restarting nodes. Add control.sh --ssl reload and --ssl status for server and 
client nodes currently in the topology. Report each factory separately on each 
node, listing the transports that use it. Return an error if any target fails.

Introduce a node registry keyed by factory object identity. Discovery, 
communication, the client connector, and binary REST must use its current 
context. Transports sharing a factory reload together; distinct factory 
instances remain independent even if they compare equal. New connections use 
the replacement context and existing connections stay open.

Build and validate a candidate before installing it. Reject a replacement when 
its metadata explicitly reports missing private keys, its known certificate 
dates are invalid, its TLS settings are unsupported, or the factory returns the 
context already in use. Unknown metadata alone must not prevent manual reload. 
Failures retain the previous context. Validation must not perform TLS 
connection probes or claim to verify peer trust. Status reports loaded metadata 
and reload outcomes, including unavailable metadata and invalid loaded 
certificates.

Require ADMIN_OPS for both commands and audit reload results with the 
initiator. Document the custom-factory contract, including fresh creation, 
optional metadata, and serialized calls for each factory.

Include operator instructions for replacement, verification, and recovery. 
Tests must cover every core transport, mutual TLS and trust-store changes, new 
and existing connections, shared and separate factories, custom factories, 
partial failures, authorization, audit output, and command parsing.

Include the shared test certificate generator and Bouncy Castle with test scope 
in the first PR that needs them.

Depends on IGNITE-29209. This task delivers complete manual reload and status; 
scheduling and HTTP REST follow separately.


> Reload TLS certificates on running nodes
> ----------------------------------------
>
>                 Key: IGNITE-29210
>                 URL: https://issues.apache.org/jira/browse/IGNITE-29210
>             Project: Ignite
>          Issue Type: Sub-task
>            Reporter: Anton Vinogradov
>            Assignee: Anton Vinogradov
>            Priority: Major
>              Labels: ise
>
> Allow administrators to replace node certificates and trust stores without 
> restarting nodes. Add {{control.sh --ssl reload}} and {{--ssl status}} for 
> server and client nodes in the current topology.
> h3. Required behavior
> * Keep one managed context per factory instance. Discovery, communication, 
> the client connector and binary REST must use it. Transports sharing the same 
> factory reload together. Distinct instances remain independent even if they 
> compare equal.
> * New connections use the replacement context. Existing connections stay 
> open. Build and validate the replacement before installing it, and retain the 
> previous context on failure.
> * Reject unsupported TLS settings, known invalid certificate dates, 
> explicitly missing private keys and a factory that returns the context 
> already in use. Unknown certificate metadata alone must not prevent manual 
> reload. Do not probe TLS connections or claim to verify peer trust.
> * Report one result per factory on each node, listing its transports. Return 
> an error if any selected node fails, including a node that leaves before its 
> job is assigned. Continue processing the other nodes.
> * Status reports loaded certificate metadata and reload results, including 
> unavailable metadata and invalid loaded certificates.
> * Require ADMIN_OPS for both commands. Log each factory reload attempt with 
> its initiator.
> h3. Tests and documentation
> Cover all four transports, mutual TLS, trust-store changes, new and existing 
> connections, shared and separate factories, custom factories, partial 
> failures, nodes leaving the topology, permissions, audit output and command 
> parsing. Include the shared test certificate generator and Bouncy Castle as a 
> test dependency.
> Explain certificate replacement, verification and recovery in the 
> administrator guide. Document fresh context creation, optional metadata and 
> serialized factory calls in the custom-factory reference.
> h3. Dependencies and remaining work
> The branch {{ignite-29210}} is prepared. Open its PR after IGNITE-29209 is 
> merged, then run CI on the updated branch.
> This task delivers manual reload and status. Automatic renewal is tracked in 
> IGNITE-29211 and HTTP REST integration in IGNITE-29212.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to