WFLY-20443 Develop a quickstart which demonstrated the dynamic SSL Cotext capability - #1161
WFLY-20443 Develop a quickstart which demonstrated the dynamic SSL Cotext capability#1161fRandOmizer wants to merge 1 commit into
Conversation
|
@skyllarr , please. take a look. |
skyllarr
left a comment
There was a problem hiding this comment.
Hi @fRandOmizer , I just added some initial minor comments, I will try to run this quickstart once these are fixed to make sure it works.
| # Script to configure dynamic SSL context in the JBoss EAP server | ||
|
|
||
| # Create the server's keystores | ||
| /subsystem=elytron/key-store=twoWayKS1:add(path=server1.keystore.P12,relative-to=jboss.server.config.dir,credential-reference={clear-text=secret},type=JKS) |
There was a problem hiding this comment.
Let's not use JKS anywhere, it's becoming obsolete, we should use PKCS12
| . Make sure {productName} server is started. | ||
| . Open a terminal and navigate to the root directory of this quickstart. | ||
| ifdef::reactive-messaging[] | ||
| . Run this command to enable the MicroProfile Reactive Messaging functionality on the server |
There was a problem hiding this comment.
Let's not forget to remove this readme
| @@ -0,0 +1,16 @@ | |||
| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||
There was a problem hiding this comment.
what you exactly mean? <head></head> element is defined, I have added <h1></h1> title
There was a problem hiding this comment.
I meant copyright header, like here for example https://github.com/wildfly/quickstart/blob/main/ejb-remote/src/main/webapp/index.html
| @@ -0,0 +1,147 @@ | |||
| /* | |||
| * Copyright 2023 JBoss by Red Hat. | |||
There was a problem hiding this comment.
this is old version of header
| private static final String SERVER_HOST_FIRST_PORT = "https://localhost:9443"; | ||
| private static final String SERVER_HOST_SECOND_PORT = "https://localhost:10443"; | ||
| private static final String ARTIFACT_ID = "/helloworld-dynamic-ssl-context/"; | ||
| private static final String DEFAULT_SERVER_DIR = System.getProperty("user.dir") + "/target/server"; |
There was a problem hiding this comment.
Can it be JBOSS_HOME? We often use it
There was a problem hiding this comment.
I think, it is not a good idea, this test should run on clean WildFly instance with the this Quickstart.
Therefore, JBOSS_HOME should not be pointed at as customer WildFly should not contain the quickstart, which would cause the test to fail.
The whole reason as why I want them to have a clean WildFly, is the fact that, we are adding endpoints to the configuration and heavily modifing them, which could conflict with the already running customer WildFly instance that possibly uses these ports.
There was a problem hiding this comment.
Sorry not JBOSS_HOME but WILDFLY_HOME. In the README for this quickstart here https://github.com/fRandOmizer/quickstart/tree/WFLY-20443/helloworld-dynamic-client-ssl-context it mentions to start with a clean server install. And it mentions WILDFLY_HOME variable.
There was a problem hiding this comment.
@skyllarr Please don't use WILDFLY_HOME - https://redhat.atlassian.net/browse/WFLY-22020
There was a problem hiding this comment.
All QuickStarts should try to reuse the common integration tests setup, otherwise you can't reuse shared-docs content. Taking this into account please try to use the server.host/SERVER_HOST properties only, with full address to the app (e.g. http://localhost:8080/helloworld) and for that infer any other params you need, for instance you can parse the port and then add 1000 to calculate the second port...
There was a problem hiding this comment.
@fRandOmizer I was thinking something like this:
private static final String DEFAULT_SERVER_HOST = "https://localhost:9443";
private static final int SECOND_PORT_OFFSET = 1000;
private String getFirstServerHost() {
String serverHost = System.getenv("SERVER_HOST");
if (serverHost == null) {
serverHost = System.getProperty("server.host");
}
if (serverHost == null) {
serverHost = DEFAULT_SERVER_HOST;
}
serverHost += ARTIFACT_ID;
return serverHost;
}
private String getSecondServerHost() {
String serverHost = getFirstServerHost();
URI uri = URI.create(url);
int port = uri.getPort();
if (port == -1) {
port = "https".equalsIgnoreCase(uri.getScheme()) ? 443 : 80;
}
return String.format("%s://%s:%d%s",
uri.getScheme(),
uri.getHost(),
port + SECOND_PORT_OFFSET,
uri.getPath());
}
There was a problem hiding this comment.
@emmartins The ports are hardcoded in the cli script on line 78-81:
// Configure the "first" and "second" connections for the main server
// Add the socket binding to the full-sockets, used by the app-main server
/socket-binding-group=standard-sockets/socket-binding=first-socket-binding:add(port=9443)
/socket-binding-group=standard-sockets/socket-binding=second-socket-binding:add(port=10443)
Your approach however ignores the fact that the default port is 8443 as it is in test https://github.com/wildfly/quickstart/blob/main/helloworld-mutual-ssl-secured/src/test/java/org/jboss/as/quickstarts/helloworld_mutual_ssl_secured/BasicRuntimeIT.java#L55
Therefore, I have to edit both urls with predefined ports.
However, I will add validation of url. Even if it should not be done by this test.
|
|
||
| == What is it? | ||
|
|
||
| The `helloworld-dynamic-ssl-context` quickstart demonstrates enabled dynamic ssl context for specified URLs and their ports. The only function they represents is to be called via provided REST client and pass as successful call through the SSL/TLS configuration. |
There was a problem hiding this comment.
I would mention somewhere here that elytron client also supports dynamic ssl context and that it can be configured anywhere in the subsystem where ssl-context attribute can be configured. SO it is not just with the REST client
| include::../shared-doc/system-requirements.adoc[leveloffset=+1] | ||
| // Use of {jbossHomeName} | ||
| include::../shared-doc/use-of-jboss-home-name.adoc[leveloffset=+1] | ||
|
|
There was a problem hiding this comment.
we can mention how to run them here to be consistent with the rest of quickstarts
There was a problem hiding this comment.
something like this? https://github.com/wildfly/quickstart/blob/main/helloworld-mutual-ssl-secured/README.adoc#building-and-running-the-quickstart-application-with-provisioned-wildfly-server
I have already added parts that cover it:
../shared-doc/start-the-standalone-server.adoc
../shared-doc/build-and-deploy-the-quickstart.adoc
../shared-doc/run-integration-tests-with-server-distribution.adoc
...
I took a massive inspiration from https://github.com/wildfly/quickstart/blob/main/ejb-multi-server/README-source.adoc
| [[review_the_modified_server_configuration]] | ||
| == Review the Modified Server Configuration | ||
|
|
||
| There are too many additions to the configuration file to list here. Feel free to compare the `standalone.xml` to the backup copy to see the changes made to configure the server to run this quickstart. |
There was a problem hiding this comment.
I am lazy to check, but is this sentence consistent with some other quickstarts?
There was a problem hiding this comment.
yes, I have took the liberty to reuse this one:
There are too many additions to the configuration files to list here. Feel free to compare the
domain.xmlandhost.xmlto the backup copies to see the changes made to configure the server to run this quickstart.
https://github.com/wildfly/quickstart/blob/main/ejb-multi-server/README.adoc?plain=1#L349
| Send request to port 10443 | ||
| ---- | ||
|
|
||
| Each of links executes https GET request on server under specified ports, which has enabled dynamic SSL context. |
There was a problem hiding this comment.
I would mention that it is the same ssl context configured
skyllarr
left a comment
There was a problem hiding this comment.
I just added some minors. Thanks @fRandOmizer !
| @@ -0,0 +1,100 @@ | |||
| include::../shared-doc/attributes.adoc[] | |||
|
|
|||
| = helloworld-dynamic-ssl-context: Dynamic SSL Context between Server and Client | |||
There was a problem hiding this comment.
just a nitpick, it is only client ssl context, we can name this:
helloworld-dynamic-client-ssl-context: Dynamic client SSL Context
There was a problem hiding this comment.
Okay, I will update just the second part of the readme. Otherwise I would have to rename the whole project.
| :configureBytemanHaltDocUrl: {guidesBaseUrl}CONFIGURE_BYTEMAN.adoc#use_byteman_to_halt_the_application[ | ||
| :configureBytemanQuickstartsDocUrl: {guidesBaseUrl}CONFIGURE_BYTEMAN.adoc#configure_byteman_for_use_with_the_quickstarts | ||
|
|
||
| = helloworld-dynamic-ssl-context: Dynamic SSL Context between Server and Client |
There was a problem hiding this comment.
helloworld-dynamic-ssl-context: Dynamic client SSL Context
| :technologies: Dynamic TLS, Security, Undertow | ||
|
|
||
| [abstract] | ||
| The `helloworld-dynamic-ssl-context` quickstart shows the option to select different SSL/TLS configurations dynamically based on the host and port of the outbound connection by the Elytron subsystem. |
There was a problem hiding this comment.
The helloworld-dynamic-ssl-context quickstart shows the option to select different SSL/TLS configurations dynamically based on the host and port of the outbound connection.
I removed the ending to make it easier to read
|
|
||
| == What is it? | ||
|
|
||
| Elytron client supports dynamic ssl context. It can be configured everywhere in the subsystems similarly as ssl-context attribute. |
There was a problem hiding this comment.
Elytron client supports dynamic client SSL context. It can be configured everywhere in the subsystems similarly as client-ssl-context attribute.
|
|
||
| The `helloworld-dynamic-ssl-context` quickstart demonstrates enabled dynamic ssl context for specified URLs and their ports. The only function they represent is to be called via provided REST client and pass as successful call through the SSL/TLS configuration. | ||
|
|
||
| This example consists of the following two urls, each with enabled dynamic ssl context: |
There was a problem hiding this comment.
Let's unify how we write URL / url and SSL context / ssl context. So it is the same in all text
There was a problem hiding this comment.
It will be URL/URLs and SSL.
| Send request to port 10443 | ||
| ---- | ||
|
|
||
| Each of links executes https GET request on server under specified ports, which has enabled the same dynamic SSL context. |
There was a problem hiding this comment.
Each of links executes https GET request on server under specified ports. Each port uses a different TLS certificate. Both GET requests use the same dynamic client SSL context. For http://localhost:8080/helloworld-dynamic-ssl-context/rest/port9443request, it will display:
|
|
||
| [[system_requirements]] | ||
| = System Requirements | ||
| //****************************************************************************** |
There was a problem hiding this comment.
is this file needed? since it is commented out
There was a problem hiding this comment.
Honestly, I don't know. It is my first encounter with .adoc format and the way QuickStart it is using. I can delete it without problem.
There was a problem hiding this comment.
I have deleted almost all commented blocks of text.
| </properties> | ||
|
|
||
| <artifactId>helloworld-dynamic-ssl-context</artifactId> | ||
| <version>40.0.0.Beta1-SNAPSHOT</version> |
There was a problem hiding this comment.
above is version 39 and here is 40, is that correct?
There was a problem hiding this comment.
I had to update the project. It was correct.
Here is an example: https://github.com/wildfly/quickstart/blob/main/helloworld-mutual-ssl-secured/pom.xml#L33 and https://github.com/wildfly/quickstart/blob/main/helloworld-mutual-ssl-secured/pom.xml#L50
| <version>40.0.0.Beta1-SNAPSHOT</version> | ||
| <packaging>war</packaging> | ||
| <name>Quickstart: helloworld-dynamic-ssl-context</name> | ||
| <description>Helloworld Dynamic SSL Context</description> |
There was a problem hiding this comment.
I would rename this quickstat helloworld-dynamic-client-ssl-context and describe Hello world dynamic client SSL context
There was a problem hiding this comment.
okay... I will rename the whole project
|
|
||
| # Set up dynamic client SSL context | ||
| /subsystem=elytron/dynamic-client-ssl-context=dynamicClientSSLContext:add(authentication-context=a) | ||
| /subsystem=elytron:write-attribute(name=default-ssl-context,value=dynamicClientSSLContext) |
There was a problem hiding this comment.
Let's add a comment that we configure the dynamic client SSL context to be a default SSL Context for the whole server.
| @@ -0,0 +1,30 @@ | |||
| /* | |||
| * JBoss, Home of Professional Open Source | |||
| * Copyright 2015, Red Hat, Inc. and/or its affiliates, and individual | |||
There was a problem hiding this comment.
the problem is, there is like dozens of CopyRights(CR) and each have earlier date which does not match with initial commit date... if you have the most up to date CR, I will use it in all classes
There was a problem hiding this comment.
If it is a new file use the current year, if you are editing an existing file don't touch the date.
There was a problem hiding this comment.
ok, I will update the year, the rest of the CR is up to date?
There was a problem hiding this comment.
@emmartins Isn't this project under commonhouse? I am pretty sure it is, so the copyright notice is wrong, no?
There was a problem hiding this comment.
@rhusar yes the copyright should be same as in WildFly:
Java:
/*
* Copyright The WildFly Authors
* SPDX-License-Identifier: Apache-2.0
*/
XML:
<!--
~ Copyright The WildFly Authors
~ SPDX-License-Identifier: Apache-2.0
-->
Text:
#
# Copyright The WildFly Authors
# SPDX-License-Identifier: Apache-2.0
#
| @@ -0,0 +1,99 @@ | |||
| include::../shared-doc/attributes.adoc[] | |||
|
|
|||
| = helloworld-dynamic-client-ssl-context: Dynamic client SSL Context between Server and Client | |||
There was a problem hiding this comment.
Not sure why some QSs start with helloworld, but I would rename to just dynamic-client-ssl-context for simplicity and it's a bit shorter. The helloworld word seems redundant
| import java.security.cert.Certificate; | ||
|
|
||
| /** | ||
| * An interface to obtain the certificate from a keystore file and create s truststore. |
| @@ -0,0 +1,90 @@ | |||
| # Script to configure dynamic SSL context in the JBoss EAP server | |||
There was a problem hiding this comment.
Please avoid using WildFly or JBoss EAP, instead just use "server" or "application server". In README-source.adoc please use {productName}.
| /subsystem=undertow/server=default-server/https-listener=first-listener:add(socket-binding=first-socket-binding,ssl-context=twoWaySSC1,enable-http2=true) | ||
| /subsystem=undertow/server=default-server/https-listener=second-listener:add(socket-binding=second-socket-binding,ssl-context=twoWaySSC2,enable-http2=true) | ||
|
|
||
| # Add the authentication authentication context |
There was a problem hiding this comment.
s/authentication authentication context/authentication context
| /subsystem=elytron/authentication-context=a:add(match-rules=[{match-port=9443,ssl-context=client1-ssl-context},{match-port=10443,ssl-context=client2-ssl-context}]) | ||
|
|
||
| # Set up dynamic client SSL context to be a default SSL Context for the whole server | ||
| /subsystem=elytron/dynamic-client-ssl-context=dynamicClientSSLContext:add(authentication-context=a) |
There was a problem hiding this comment.
Maybe we can rename a for ac at least for the QS
|
|
||
| == What is it? | ||
|
|
||
| Elytron client supports dynamic client SSL context. It can be configured everywhere in the subsystems similarly as client-ssl-context attribute. |
There was a problem hiding this comment.
s/It can be configured everywhere in the subsystems similarly as client-ssl-context attribute./It can be configured everywhere in the subsystem where client-ssl-context attribute can be configured.
|
@fRandOmizer I've added some nitpicks otherwise looks good, thank you! |
| @Path("/port9443request") | ||
| @Produces(MediaType.TEXT_HTML) | ||
| public String pingFirstServer() { | ||
| Response response = client.target("https://127.0.0.1:9443/dynamic-client-ssl-context/").request().get(); |
There was a problem hiding this comment.
this host should not be hardcoded
| @Path("/port10443request") | ||
| @Produces(MediaType.TEXT_HTML) | ||
| public String pingSecondServer() throws IOException { | ||
| Response response = client.target("https://127.0.0.1:10443/dynamic-client-ssl-context/").request().get(); |
There was a problem hiding this comment.
this host should not be hardcoded
emmartins
left a comment
There was a problem hiding this comment.
This is also missing CI testing, but the whole CI is under redesign so I can add it this QS later to it, please note this means reviewers need to manually test the quickstart.
| /subsystem=elytron:write-attribute(name=default-ssl-context,value=dynamicClientSSLContext) | ||
|
|
||
| # Reload the server configuration | ||
| reload No newline at end of file |
There was a problem hiding this comment.
please remove the reload, it fails when executed by wildfly maven plugin
| <dependency> | ||
| <groupId>org.jboss.resteasy</groupId> | ||
| <artifactId>resteasy-client-api</artifactId> | ||
| <version>7.0.2.Final</version> |
There was a problem hiding this comment.
depend instead on resteasy-client, remove the version (it is managed by the imported BOM), and change scope to provided (otherwise it gets bundled in the deployment)
| <groupId>org.wildfly.plugins</groupId> | ||
| <artifactId>wildfly-maven-plugin</artifactId> | ||
| <configuration> | ||
| <feature-packs> |
There was a problem hiding this comment.
why not use Glow auto discovery of feature packs and layers, like all other quickstarts?
| @@ -0,0 +1,424 @@ | |||
| ifdef::env-github[] | |||
There was a problem hiding this comment.
please do not include a README.adoc, that is the flattened version of README-source.adoc, which is GitHub friendly and is auto built by one of our GitHub workflows
| This example consists of the following two URLs, each with enabled dynamic SSL context: | ||
|
|
||
| [cols="100%",options="headers"] | ||
| |=== | ||
| |URL paths with their ports | ||
|
|
||
| |`https://localhost:9443/dynamic-client-ssl-context/` | ||
|
|
||
| |`https://localhost:10443/dynamic-client-ssl-context/` |
There was a problem hiding this comment.
IMHO this doesn't belong to an abstract / "what is it" section, and should be removed
| ---- | ||
|
|
||
| // Server Distribution Testing | ||
| :integrationTestsDirectory: app-web/src/test/ |
There was a problem hiding this comment.
please remove this attribute set, that is specific to ejb-multi-server multi-module design
| // Undeploy the Quickstart | ||
| include::../shared-doc/undeploy-the-quickstart.adoc[leveloffset=+1] | ||
|
|
||
| // Restore the {productName} Managed Domain Configuration Manually |
|
|
||
| // Restore the {productName} Managed Domain Configuration Manually | ||
| include::../shared-doc/restore-standalone-server-configuration-manual.adoc[leveloffset=+1] | ||
|
|
There was a problem hiding this comment.
This quickstart includes provisioned-server maven profile, but no instructions related with that, please add the following include to fix this:
include::../shared-doc/build-and-run-the-quickstart-with-provisioned-server.adoc[leveloffset=+1]
| <relativePath/> | ||
| </parent> | ||
|
|
||
| <properties> |
There was a problem hiding this comment.
please resync property versions with values currently used by main branch
| <artifactId>dynamic-client-ssl-context</artifactId> | ||
| <version>41.0.0.Final-SNAPSHOT</version> | ||
| <packaging>war</packaging> | ||
| <name>Quickstart: dynamic-ssl-context</name> | ||
| <description>Dynamic client SSL context</description> | ||
|
|
||
| <licenses> | ||
| <license> | ||
| <name>Apache License, Version 2.0</name> | ||
| <url>http://www.apache.org/licenses/LICENSE-2.0.html</url> | ||
| <distribution>repo</distribution> | ||
| </license> | ||
| </licenses> |
There was a problem hiding this comment.
Please move this to below <parent/>
kstekovi
left a comment
There was a problem hiding this comment.
Reviewed the dynamic-client-ssl-context quickstart. The overall concept is sound — using a JAX-RS endpoint that calls itself on two different HTTPS ports is a clean way to demonstrate dynamic client SSL context selection. A few issues need to be addressed before this can merge, most importantly a build blocker in the CLI script.
| /subsystem=elytron:write-attribute(name=default-ssl-context,value=dynamicClientSSLContext) | ||
|
|
||
| # Reload the server configuration | ||
| reload No newline at end of file |
There was a problem hiding this comment.
Build blocker: reload breaks the provisioned-server build. When the WildFly Maven Plugin runs CLI scripts against its embedded server during mvn package, the reload command destroys the embedded process handle, resulting in:
Cannot invoke "BootstrappedEmbeddedProcess.getProcessStateNotifier()" because "this.embeddedProcess" is null
This was verified locally — the build fails after all CLI steps succeed. The fix is to comment it out, same as helloworld-mutual-ssl/configure-ssl.cli does:
#reload
The embedded packaging server does not need a reload — it re-provisions the server from scratch.
| /subsystem=elytron/key-store=twoWayKS2:add(path=server2.keystore.P12,relative-to=jboss.server.config.dir,credential-reference={clear-text=secret},type=PKCS12) | ||
|
|
||
| # Generate new server's key pairs. We'll use an DSA key of size 1024 and we'll use CN=localhost1 and CN=localhost2 | ||
| /subsystem=elytron/key-store=twoWayKS1:generate-key-pair(alias=localhost1 , algorithm=DSA, key-size=1024, validity=365, credential-reference={clear-text=secret}, distinguished-name="cn=localhost1") |
There was a problem hiding this comment.
DSA-1024 is deprecated and considered weak. This is a security quickstart — the key algorithm sends a message to users. Please use RSA-2048 or EC (e.g. algorithm=RSA, key-size=2048) for both server and client key pairs.
| /subsystem=elytron/trust-manager=twoWayTM2:add(key-store=twoWayTS2) | ||
|
|
||
| # Create the server-ssl-context to reference the newly created trust-managers with required client auth option | ||
| /subsystem=elytron/server-ssl-context=twoWaySSC1:add(key-manager=twoWayKM1,protocols=["TLSv1.2"],trust-manager=twoWayTM1,need-client-auth=true) |
There was a problem hiding this comment.
protocols=["TLSv1.2"] excludes TLS 1.3. Either add "TLSv1.3" to the list or omit the attribute entirely to inherit the server defaults. Same applies to lines 32, 75, and 76.
| private static final String ARTIFACT_ID = "/dynamic-client-ssl-context/"; | ||
|
|
||
| private ResteasyClientBuilder builder = (ResteasyClientBuilder) ClientBuilder.newBuilder(); | ||
| private ResteasyClient client = builder.hostnameVerifier((s, sslSession) -> true).sslContext(SSLContext.getDefault()).build(); // resteasy client must set default ssl context otherwise it uses null |
There was a problem hiding this comment.
Two issues here:
-
Resource leak:
ResteasyClientis a field on a request-scoped JAX-RS resource, so a new client (with its underlying connection pool) is created on every HTTP request and never closed. -
Unnecessary RESTEasy-specific API: Both
.hostnameVerifier()and.sslContext()are available on the standardjakarta.ws.rs.client.ClientBuildersince Jakarta REST 2.1 — there is no need to cast toResteasyClientBuilderor reference RESTEasy types at all.
Suggested fix — use standard API and create the client only once:
private static final Client CLIENT;
static {
try {
CLIENT = ClientBuilder.newBuilder()
.hostnameVerifier((s, session) -> true)
.sslContext(SSLContext.getDefault())
.build();
} catch (NoSuchAlgorithmException e) {
throw new ExceptionInInitializerError(e);
}
}This also lets you drop the resteasy-client-api compile dependency from pom.xml entirely.
| <dependency> | ||
| <groupId>org.jboss.resteasy</groupId> | ||
| <artifactId>resteasy-client-api</artifactId> | ||
| <version>7.0.2.Final</version> |
There was a problem hiding this comment.
resteasy-client-api at compile scope with a hardcoded version (7.0.2.Final) bypasses BOM management and bundles a RESTEasy jar into the WAR unnecessarily — the server already provides RESTEasy.
Since the only methods used (hostnameVerifier, sslContext) are part of the standard jakarta.ws.rs.client.ClientBuilder API (see comment on Endpoint.java), this dependency can be removed entirely. The standard Jakarta REST API is already available as provided via the EE BOM.
| KeyStore trustStore = keyStore.getInstance(keyStoreType); | ||
| trustStore.load(null, null); | ||
| trustStore.setCertificateEntry("server", cert); | ||
| trustStore.store(new FileOutputStream(serverDir + "/" + "client.truststore"), storePassword.toCharArray()); |
There was a problem hiding this comment.
loadKeyPairFromKeyStore() writes a file client.truststore to disk as an undocumented side effect. This is unexpected from a utility method named "load". The file is also never read back anywhere in the test code, so the write serves no purpose. Either remove the write or move it to a dedicated method with a clear name.
| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | ||
| <html lang="en"> | ||
| <head> | ||
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8; URL=rest/HelloWorld"> |
There was a problem hiding this comment.
URL=rest/HelloWorld in the <meta> tag is leftover from a helloworld template and is not applicable here. Should be removed or updated to a relevant URL.
|
|
||
| = dynamic-client-ssl-context: Dynamic client SSL Context between Server and Client | ||
| :author: Richard Záň | ||
| :level: Intermidiate |
There was a problem hiding this comment.
Typo: :level: Intermidiate → :level: Intermediate
| Send request to port 10443 | ||
| ---- | ||
|
|
||
| Each of links executes https GET request on server under specified ports. Each port uses a different TLS certificate. Both GET requests use the same dynamic client SSL context. For http://localhost:8080/dynamic-client-ssl-context/rest/port9443request, it will display: |
There was a problem hiding this comment.
The URL uses http:// but the application only exposes HTTPS listeners (ports 9443 and 10443) — there is no plain HTTP listener on 8080 for this endpoint. Should be https://. Same issue on line 81.
| ---- | ||
|
|
||
| // Server Distribution Testing | ||
| :integrationTestsDirectory: app-web/src/test/ |
There was a problem hiding this comment.
:integrationTestsDirectory: app-web/src/test/ is incorrect — the integration tests are under src/test/, not app-web/src/test/. This will render a wrong path in the generated documentation. Should be removed (let the shared-doc default apply) or set to src/test/.
WFLY-20443 Develop a quickstart which demonstrated the dynamic SSLContext capability