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

Anton Vinogradov updated IGNITE-29212:
--------------------------------------
    Description: 
With {{ConnectorConfiguration.httpSslFactory}}, operators can rotate HTTP REST 
certificates and peer trust through the node's existing TLS commands. New HTTPS 
connections use the accepted material. Established connections stay open and a 
failed reload keeps the working context.

h3. Result

* Support the built-in HTTP connector and connectors supplied by Jetty XML. 
Preserve the factory's TLS protocols and ciphers, Jetty exclusions, and 
explicit secure request customizers.
* With {{httpSslClientAuth=true}}, require a trusted client certificate on 
every new connection. The connector must use HTTP as its default protocol and 
leave TLS to the Ignite factory.
* An Ignite-managed connector accepts a Host name absent from the certificate 
by default. To keep Jetty host checks, configure a {{SecureRequestCustomizer}} 
explicitly. Jetty-owned TLS retains its own policy. Moving ownership requires a 
rolling restart. The [migration 
guide|https://github.com/anton-vinogradov/ignite/blob/ignite-29212/docs/_docs/restapi.adoc#https-and-certificate-reload]
 covers optional client authentication, alias selection, revocation and host 
validation.

[PR #13787 and validation|https://github.com/apache/ignite/pull/13787] builds 
on IGNITE-29210. Once this task and IGNITE-29211 are present, apply the [HTTPS 
renewal test and 
documentation|https://github.com/anton-vinogradov/ignite/commit/d554ba23f34e7227f6c998284934a3e1af426d2b]
 once in the PR merged second.

  was:
Let HTTP REST use the same certificate reload and status workflow as other node 
transports. {{ConnectorConfiguration.httpSslFactory}} allows HTTPS certificate 
and trust-store rotation without restarting the connector. With IGNITE-29211, 
the same factory can also renew certificates automatically.

h3. Result and acceptance

* Support built-in and XML-supplied Jetty HTTP connectors. New HTTPS 
connections use replacement material, established connections remain usable, 
and failed reloads retain the working context.
* Preserve factory protocols/cipher suites, applicable Jetty cipher exclusions 
and explicitly configured {{SecureRequestCustomizer}} settings.
* {{httpSslClientAuth=true}} requires {{httpSslFactory}} and a trusted client 
certificate before and after certificate/trust changes. Reject a managed 
factory combined with the connector's own TLS configuration or PROXY protocol.
* Keep existing Jetty-owned TLS working when {{httpSslFactory}} is absent. 
Verify real HTTPS connections, mutual TLS, XML connectors and rejected startup 
configurations.

h3. Migration boundaries

Moving TLS ownership from Jetty XML requires a rolling restart. Client 
authentication, host/SNI checks and revocation policy must be preserved 
explicitly; settings are not all transferred automatically.

The standard Ignite factory has no key-alias selector: preserve a selected 
alias with a store containing only that key and matching key/store passwords. 
{{httpSslClientAuth}} does not represent optional {{wantClientAuth}}; use a 
custom factory or retain Jetty TLS. Reproduce Jetty CRL/OCSP checks through 
suitable trust managers or retain Jetty TLS. Explicitly configured 
{{trustManagers}} remain in use; peer trust remains an operator responsibility.

See [Jetty XML 
migration|https://github.com/anton-vinogradov/ignite/blob/ignite-29212/docs/_docs/restapi.adoc#https-and-certificate-reload],
 including implicit {{SecureRequestCustomizer}} host checks, and the 
[ConnectorConfiguration 
contracts|https://github.com/anton-vinogradov/ignite/blob/ignite-29212/modules/core/src/main/java/org/apache/ignite/configuration/ConnectorConfiguration.java#L528].

h3. Delivery and automatic renewal

Depends on IGNITE-29210 and works independently of IGNITE-29211. Once both 
renewal and HTTP are present, include the [joint integration 
commit|https://github.com/anton-vinogradov/ignite/commit/889a3fde5349850cc29428f0511bc51f42a6d599]
 once in the PR that merges second; it adds HTTPS renewal coverage and 
documentation.

Local checks: all 9 HTTP cases and Checkstyle passed at {{271ff0ed}}; combined 
HTTPS renewal passed at {{fe6d4afd}}. This is not full CI.



> Support certificate reload for HTTP REST
> ----------------------------------------
>
>                 Key: IGNITE-29212
>                 URL: https://issues.apache.org/jira/browse/IGNITE-29212
>             Project: Ignite
>          Issue Type: Sub-task
>            Reporter: Anton Vinogradov
>            Assignee: Anton Vinogradov
>            Priority: Major
>              Labels: ise
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> With {{ConnectorConfiguration.httpSslFactory}}, operators can rotate HTTP 
> REST certificates and peer trust through the node's existing TLS commands. 
> New HTTPS connections use the accepted material. Established connections stay 
> open and a failed reload keeps the working context.
> h3. Result
> * Support the built-in HTTP connector and connectors supplied by Jetty XML. 
> Preserve the factory's TLS protocols and ciphers, Jetty exclusions, and 
> explicit secure request customizers.
> * With {{httpSslClientAuth=true}}, require a trusted client certificate on 
> every new connection. The connector must use HTTP as its default protocol and 
> leave TLS to the Ignite factory.
> * An Ignite-managed connector accepts a Host name absent from the certificate 
> by default. To keep Jetty host checks, configure a 
> {{SecureRequestCustomizer}} explicitly. Jetty-owned TLS retains its own 
> policy. Moving ownership requires a rolling restart. The [migration 
> guide|https://github.com/anton-vinogradov/ignite/blob/ignite-29212/docs/_docs/restapi.adoc#https-and-certificate-reload]
>  covers optional client authentication, alias selection, revocation and host 
> validation.
> [PR #13787 and validation|https://github.com/apache/ignite/pull/13787] builds 
> on IGNITE-29210. Once this task and IGNITE-29211 are present, apply the 
> [HTTPS renewal test and 
> documentation|https://github.com/anton-vinogradov/ignite/commit/d554ba23f34e7227f6c998284934a3e1af426d2b]
>  once in the PR merged second.



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

Reply via email to