[ 
https://issues.apache.org/jira/browse/IGNITE-29209?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18133033#comment-18133033
 ] 

Anton Vinogradov commented on IGNITE-29209:
-------------------------------------------

[Ignite PR Checker|https://ignite-pr-checker.is-a.dev/?pr=13751] verdict for PR 
13751 · RunAll build [9447228|https://ci2.ignite.apache.org/build/9447228] · 
tested 
[a360d09|https://github.com/apache/ignite/pull/13751/commits/a360d09a188ebdddf4bc68d771bcfa2f16086d77]
 · 149 suites ran, 0 reused

(!) *This run doesn't cover the PR fully:*
- mixed run — Cache (Full API) and Consistency re-ran on fecbd9e, PDS 1 on 
b672056, the rest of the RunAll ran on a360d09; only a RunAll of the PR's head 
can prove it clean

Everything below is what it did manage to say.

(?) *No blockers found — but the run above can't prove the PR is clean.* 25 
failing tests are not blamed on this PR. Re-run after you handle what is listed 
above.

_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 {{fecbd9e}}._

♻️ Settled after 2 auto re-run waves: #1 — 2 suites that failed mid-run; #2 — 1 
broken suite.

> Add fresh SSL contexts with certificate metadata
> ------------------------------------------------
>
>                 Key: IGNITE-29209
>                 URL: https://issues.apache.org/jira/browse/IGNITE-29209
>             Project: Ignite
>          Issue Type: Sub-task
>            Reporter: Anton Vinogradov
>            Assignee: Anton Vinogradov
>            Priority: Major
>              Labels: ise
>          Time Spent: 2h 10m
>  Remaining Estimate: 0h
>
> Provide a fresh SSL context together with the certificate chains actually 
> loaded into it. IGNITE-29210 needs this information to validate replacement 
> certificates and report status; IGNITE-29211 needs certificate expiry dates 
> to schedule renewal. Reading the store separately for reporting could 
> describe different material from the context in use.
> h3. Result
> {{createSslBundle()}} returns an {{SslBundle}} containing an initialized 
> context and an immutable map of all private-key aliases to their X.509 
> chains. {{KeyMaterial}} holds the loaded key store, its key password and 
> manager algorithm, so key managers and metadata come from the same store 
> load. Multiple private keys are supported; the metadata describes all loaded 
> keys, not the certificate selected for a particular connection.
> A {{null}} map means the private-key aliases are unknown. An empty map means 
> there are no private keys, while an empty list preserves a private-key alias 
> whose X.509 chain is unknown. This lets node reload reject a known keyless 
> replacement without rejecting unknown metadata. The API itself continues to 
> allow keyless client contexts. {{SSLContextWrapper}} remains responsible only 
> for TLS parameters.
> h3. Compatibility and verification
> Preserve source and binary compatibility for existing factories. The 
> deprecated {{create()}} retains its original key-manager hook and protected 
> {{sslCtx}} cache; it neither inspects nor calls {{createSslBundle()}}. Bundle 
> creation is independent of that cache. A new factory implementing only bundle 
> creation must also provide an explicit adapter or the legacy key-manager hook 
> if it serves {{Factory.create()}} callers.
> Regression coverage checks fresh versus cached contexts, matching metadata 
> from one store load, all private-key aliases, defensive copies, and existing 
> subclasses and hooks. It also covers a legacy custom store loader returning 
> {{null}}: {{create()}} still produces an initialized context and caches it. 
> Generate the test stores with explicit keys and certificates. Keep the shared 
> generator and its Bouncy Castle dependency in test code for reuse by the 
> follow-up tasks.
> Validation: 14 metadata tests and the peer-address regression test pass, as 
> do source/binary compatibility checks and Checkstyle. Full CI is still 
> pending.
> h3. Dependencies and consumers
> IGNITE-29208's peer-address fix is already in master. The [prepared node 
> integration|https://github.com/anton-vinogradov/ignite/compare/ignite-29209...ignite-29210]
>  demonstrates the consumers and explicit bundle opt-in for custom factories. 
> IGNITE-29210 owns manual reload, validation and status; IGNITE-29211 adds 
> automatic renewal; IGNITE-29212 connects HTTP REST to the shared reload 
> mechanism. Those changes are outside this API task.



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

Reply via email to