Anton Vinogradov created IGNITE-29211:
-----------------------------------------

             Summary: Renew TLS certificates automatically before expiry
                 Key: IGNITE-29211
                 URL: https://issues.apache.org/jira/browse/IGNITE-29211
             Project: Ignite
          Issue Type: Sub-task
            Reporter: Anton Vinogradov
            Assignee: Anton Vinogradov


Allow a node to pick up certificates delivered by an external system before the 
loaded chain expires. Add opt-in renewal settings to AbstractSslContextFactory, 
disabled by default, and schedule attempts from the certificate lifetime and 
earliest expiry in its chain. Enabling renewal without chain metadata must fail 
at startup.

Use the existing reload validation and install only a valid replacement whose 
chain expires later. An unchanged chain, a loading error, or a rejected 
replacement leaves the current context in use and triggers retries with bounded 
backoff and jitter. Continue retrying after expiry, with useful logs and the 
next attempt time in --ssl status.

Publish ssl.ConsecutiveRenewalFailures as the sum of consecutive unsuccessful 
automatic attempts across distinct factory instances. Count a shared factory 
once, including unchanged-certificate attempts. Reset only the affected 
factory's count when automatic renewal or manual reload installs a chain with a 
later expiry. Failed manual reloads must not increment this metric.

Serialize manual and automatic work for each factory, replan after successful 
reload, and prevent a superseded renewal attempt from installing a stale 
context. Interrupt and finish renewal work during shutdown without recording 
cancellation as a renewal failure. Automatic work must use the node's operation 
context.

Include renewal and metric documentation. Tests should cover timing, chain 
expiry, retries after expiry, unchanged certificates, counter aggregation and 
reset, manual reload races, shutdown, and default-off behavior.

Depends on IGNITE-29210; it can proceed independently of HTTP REST integration.



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

Reply via email to