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

Anton Vinogradov updated IGNITE-29212:
--------------------------------------
    Description: 
Let administrators use an SSL context factory for HTTPS on HTTP REST. They can 
then replace certificates and trust on running nodes.

h3. Configuration

# Add {{ConnectorConfiguration.httpSslFactory}} to enable HTTPS on the built-in 
connector. It also works on a Jetty XML connector that uses HTTP as its default 
protocol and has no TLS of its own. Add {{httpSslClientAuth}} to require a 
trusted client certificate.
# Use the factory's exact set of enabled protocols and cipher suites. Jetty's 
default exclusions do not apply to this connector. Keep configured Jetty Host 
and SNI checks. Without an explicit secure request customizer, Jetty checks the 
Host against the server certificate. The host name or IP address that clients 
use must match.
# Keep HTTPS configured directly in Jetty XML as it is and leave it out of 
reload and its results. When HTTP REST starts, reject a configured factory if 
the connector already defines TLS or has a default protocol other than HTTP. 
Also reject {{httpSslClientAuth}} without {{httpSslFactory}}. Fail node startup 
before the HTTP connector serves plaintext.
# Document HTTPS setup and how to move from TLS configured directly in Jetty 
XML. The move requires a restart.

h3. Reload and renewal

# Include HTTP REST in the reload command and results once factory-managed 
HTTPS starts. A factory that does not extend {{AbstractSslContextFactory}} 
supplies the startup context. The command reports it as unsupported.
# During loading and after a failed load, new connections use the previous 
context. After success, new connections use the replacement. Established 
connections stay open.
# Start and stop a {{LifecycleAware}} factory once per node, even when HTTP and 
binary REST share it. Use the same reload and automatic renewal as the other 
transports.

h3. Acceptance

Verify key and trust rotation, mutual TLS, exact protocol and cipher settings, 
Host checks, failed reload, established connections and shared-factory 
lifecycle. Test the built-in connector and the XML connector. Check that HTTPS 
configured directly in Jetty XML keeps working as before, rejected 
configurations never serve plaintext HTTP, and reload lists only 
factory-managed HTTPS that started.

Depends on IGNITE-29211. Include a test that shows scheduled renewal on a new 
HTTPS connection while an established connection stays usable. Add HTTPS to the 
reload and renewal documentation from IGNITE-29210 and IGNITE-29211.

[Implementation plan in PR #13787|https://github.com/apache/ignite/pull/13787]


  was:
Allow administrators to configure HTTPS for HTTP REST with an SSL context 
factory and rotate its certificates and trust material on running nodes.

h3. What to deliver

# Add {{ConnectorConfiguration.httpSslFactory}} to enable HTTPS on the built-in 
connector or on a Jetty XML connector whose default protocol is HTTP and which 
has no TLS of its own. Add {{httpSslClientAuth}} to require a trusted client 
certificate.
# Include HTTP REST in the reload command and its results once factory-managed 
HTTPS starts. A factory that does not extend {{AbstractSslContextFactory}} 
supplies the startup context and is reported as unsupported. During loading and 
after failure, new connections use the previous context. After success, they 
use the replacement. Established connections stay open.
# Use exactly the factory's enabled protocols and cipher suites, without 
Jetty's default exclusions. Keep configured Jetty Host/SNI checks. Jetty's 
default Host check applies when the connector has no explicit secure request 
customizer, so the host name or IP address clients use must match the server 
certificate.
# Keep HTTPS configured in Jetty XML unchanged and outside the reload command 
and its results. When starting HTTP REST, fail node startup without serving 
plaintext HTTP if a configured factory conflicts with the connector's TLS or 
non-HTTP default protocol, or if {{httpSslClientAuth}} is enabled without 
{{httpSslFactory}}. Document setup and migration from XML-managed TLS with a 
restart.
# Start and stop a {{LifecycleAware}} factory once per node, even when HTTP and 
binary REST share it. Use the same reload and automatic renewal as the other 
transports.

h3. Acceptance

Verify key and trust rotation, mutual TLS, exact protocol and cipher settings, 
Host checks, failed reload, continuity of established connections, and 
shared-factory lifecycle. Cover the built-in and XML connectors, unchanged 
HTTPS configured in Jetty XML, and rejected configurations that never serve 
plaintext HTTP. Check that only factory-managed HTTPS that started appears in 
reload results.

Depends on IGNITE-29211. Include a test showing scheduled renewal on a new 
HTTPS connection while an established connection remains usable. Add HTTPS to 
the reload and renewal documentation from IGNITE-29210 and IGNITE-29211.

[Implementation plan: PR #13787|https://github.com/apache/ignite/pull/13787]



> Configure HTTPS for HTTP REST with a reloadable SSL context factory
> -------------------------------------------------------------------
>
>                 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: 1h 10m
>  Remaining Estimate: 0h
>
> Let administrators use an SSL context factory for HTTPS on HTTP REST. They 
> can then replace certificates and trust on running nodes.
> h3. Configuration
> # Add {{ConnectorConfiguration.httpSslFactory}} to enable HTTPS on the 
> built-in connector. It also works on a Jetty XML connector that uses HTTP as 
> its default protocol and has no TLS of its own. Add {{httpSslClientAuth}} to 
> require a trusted client certificate.
> # Use the factory's exact set of enabled protocols and cipher suites. Jetty's 
> default exclusions do not apply to this connector. Keep configured Jetty Host 
> and SNI checks. Without an explicit secure request customizer, Jetty checks 
> the Host against the server certificate. The host name or IP address that 
> clients use must match.
> # Keep HTTPS configured directly in Jetty XML as it is and leave it out of 
> reload and its results. When HTTP REST starts, reject a configured factory if 
> the connector already defines TLS or has a default protocol other than HTTP. 
> Also reject {{httpSslClientAuth}} without {{httpSslFactory}}. Fail node 
> startup before the HTTP connector serves plaintext.
> # Document HTTPS setup and how to move from TLS configured directly in Jetty 
> XML. The move requires a restart.
> h3. Reload and renewal
> # Include HTTP REST in the reload command and results once factory-managed 
> HTTPS starts. A factory that does not extend {{AbstractSslContextFactory}} 
> supplies the startup context. The command reports it as unsupported.
> # During loading and after a failed load, new connections use the previous 
> context. After success, new connections use the replacement. Established 
> connections stay open.
> # Start and stop a {{LifecycleAware}} factory once per node, even when HTTP 
> and binary REST share it. Use the same reload and automatic renewal as the 
> other transports.
> h3. Acceptance
> Verify key and trust rotation, mutual TLS, exact protocol and cipher 
> settings, Host checks, failed reload, established connections and 
> shared-factory lifecycle. Test the built-in connector and the XML connector. 
> Check that HTTPS configured directly in Jetty XML keeps working as before, 
> rejected configurations never serve plaintext HTTP, and reload lists only 
> factory-managed HTTPS that started.
> Depends on IGNITE-29211. Include a test that shows scheduled renewal on a new 
> HTTPS connection while an established connection stays usable. Add HTTPS to 
> the reload and renewal documentation from IGNITE-29210 and IGNITE-29211.
> [Implementation plan in PR #13787|https://github.com/apache/ignite/pull/13787]



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

Reply via email to