[
https://issues.apache.org/jira/browse/IGNITE-29210?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18142545#comment-18142545
]
Anton Vinogradov commented on IGNITE-29210:
-------------------------------------------
[Ignite PR Checker|https://ignite-pr-checker.is-a.dev/?pr=13785] verdict for PR
13785 · RunAll build [9486523|https://ci2.ignite.apache.org/build/9486523] ·
tested
[405b249|https://github.com/apache/ignite/pull/13785/commits/405b249a2b0351b11f41f356f65650d364cb2d8d]
· 149 suites ran, 0 reused
(!) *This run doesn't cover the PR fully:*
- mixed run — Cache 21, Control Utility 1 and PDS (Compatibility) re-ran on
86035ce, the rest of the RunAll ran on 405b249; only a RunAll of the PR's head
can prove it clean
Everything below is what it did manage to say.
(x) *4 blockers in 1 suite:*
- Control Utility 1 · {{CommandHandlerParsingTest}} — 4 tests:
{{testParseAndValidateSSLArguments}}, {{testConnectionSettings}},
{{testParseAndValidateUserAndPassword}} and 1 more ·
[TC|https://ci2.ignite.apache.org/buildConfiguration/IgniteTests24Java8_ControlUtility/9486543?buildTab=tests]
_What each label means and what to do: [verdict
glossary|https://github.com/anton-vinogradov/ignite-pr-checker/blob/main/docs/features.md#verdict-glossary]._
_The PR is now at {{86035ce}}._
♻️ Settled after 2 auto re-run waves: #1 — 3 suites that failed mid-run; #2 — 1
suite with tests that started failing.
> 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
> Time Spent: 3h 50m
> Remaining Estimate: 0h
>
> Factories can reload key and trust stores, and new TCP connections can use
> the updated context. Administrators still have no command to trigger that
> reload across running nodes. Add {{control.sh --ssl reload}} to load updated
> key and trust stores and show which nodes succeeded.
> h3. What the command must do
> # Target all server and thick-client nodes in the current topology. Reload
> factories used by TCP discovery, communication, the client connector and
> binary REST that actually started with TLS. Configuration alone is not
> enough: a binary REST listener may fail to bind a port. Reload a shared
> factory once per node and report all transports using it.
> # Require {{ADMIN_OPS}} and confirmation, with {{--yes}} to skip the prompt.
> Each node logs the outcome and, when security is enabled, the initiator.
> # Report every target, including nodes with no TCP transports using TLS.
> Continue after individual failures and retain successful replacements. Return
> an error if any target fails, uses an unsupported factory or leaves before
> responding. Keep the full report. A result received from a node stays in the
> report even if the node leaves later.
> The command does not reload TLS for the HTTP REST endpoint (Jetty).
> h3. Which factories can reload
> Use {{AbstractSslContextFactory.init()}} and make it public. Run reloads of
> the same factory one at a time; cached {{create()}} calls can keep returning
> the working context during loading. Report factory types that do not extend
> {{AbstractSslContextFactory}} as unsupported.
> Document the contract for custom factories: an overridden {{create()}} must
> obtain the context from {{super.create()}} on every call. The key and trust
> loading hooks must read fresh material for their changes to take effect.
> Trust managers supplied through {{setTrustManagers()}} are reused.
> h3. Operator instructions
> Update “Upgrading Certificates” in the SSL/TLS guide: prepare peer trust
> across the cluster, replace stores at the configured paths with the same
> passwords, run reload and verify a new connection. To recover from a bad
> replacement, restore the previous files and reload again. Changing node
> configuration requires a restart.
> h3. Done when
> The control utility applies a replacement on servers and thick clients, and a
> new connection confirms it. Tests cover shared and custom factories,
> concurrent reloads of the same factory, confirmation, permissions and logs.
> The report must retain successes alongside failures, unsupported factories
> and departed nodes. A listener that did not start must not appear as
> reloaded; a node with no TCP transports using TLS must still appear.
> Depends on IGNITE-29256. This ticket adds the command and its documentation,
> not a separate status command, new certificate-date checks or background
> monitoring.
> [Implementation plan in PR #13785|https://github.com/apache/ignite/pull/13785]
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)