Skip to content

Commit

Permalink
SSL support for reactive DB2 client
Browse files Browse the repository at this point in the history
  • Loading branch information
tsegismont committed Jul 9, 2020
1 parent 0e0457c commit f560686
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 2 deletions.
5 changes: 3 additions & 2 deletions docs/src/main/asciidoc/native-and-ssl.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,9 @@ As SSL is de facto the standard nowadays, we decided to enable its support autom
* the Neo4j extension (`quarkus-neo4j`),
* the OAuth2 extension (`quarkus-elytron-security-oauth2`),
* the REST client extension (`quarkus-rest-client`),
* the Reactive client for PostgreSQL extension (`quarkus-reactive-pg-client`).
* the Reactive client for MySQL extension (`quarkus-reactive-mysql-client`).
* the Reactive client for PostgreSQL extension (`quarkus-reactive-pg-client`),
* the Reactive client for MySQL extension (`quarkus-reactive-mysql-client`),
* the Reactive client for DB2 extension (`quarkus-reactive-db2-client`).

As long as you have one of those extensions in your project, the SSL support will be enabled by default.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.annotations.ExecutionTime;
import io.quarkus.deployment.annotations.Record;
import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem;
import io.quarkus.deployment.builditem.FeatureBuildItem;
import io.quarkus.deployment.builditem.ServiceStartBuildItem;
import io.quarkus.deployment.builditem.ShutdownContextBuildItem;
Expand Down Expand Up @@ -42,6 +43,7 @@ ServiceStartBuildItem build(BuildProducer<FeatureBuildItem> feature,
DB2PoolRecorder recorder,
VertxBuildItem vertx,
BuildProducer<SyntheticBeanBuildItem> syntheticBeans, ShutdownContextBuildItem shutdown,
BuildProducer<ExtensionSslNativeSupportBuildItem> sslNativeSupport,
DataSourcesBuildTimeConfig dataSourcesBuildTimeConfig, DataSourcesRuntimeConfig dataSourcesRuntimeConfig,
DataSourceReactiveBuildTimeConfig dataSourceReactiveBuildTimeConfig,
DataSourceReactiveRuntimeConfig dataSourceReactiveRuntimeConfig,
Expand Down Expand Up @@ -71,6 +73,9 @@ ServiceStartBuildItem build(BuildProducer<FeatureBuildItem> feature,
boolean isDefault = true; // assume always the default pool for now
vertxPool.produce(new VertxPoolBuildItem(db2PoolValue, DatabaseKind.DB2, isDefault));

// Enable SSL support by default
sslNativeSupport.produce(new ExtensionSslNativeSupportBuildItem(Feature.REACTIVE_DB2_CLIENT));

return serviceStart;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

import static io.quarkus.credentials.CredentialsProvider.PASSWORD_PROPERTY_NAME;
import static io.quarkus.credentials.CredentialsProvider.USER_PROPERTY_NAME;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configureJksKeyCertOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configureJksTrustOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configurePemKeyCertOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configurePemTrustOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configurePfxKeyCertOptions;
import static io.quarkus.vertx.core.runtime.SSLConfigHelper.configurePfxTrustOptions;

import java.util.Map;

Expand Down Expand Up @@ -106,6 +112,18 @@ private DB2ConnectOptions toConnectOptions(DataSourceRuntimeConfig dataSourceRun
connectOptions.setCachePreparedStatements(dataSourceReactiveDB2Config.cachePreparedStatements.get());
}

connectOptions.setSsl(dataSourceReactiveDB2Config.ssl);

connectOptions.setTrustAll(dataSourceReactiveRuntimeConfig.trustAll);

configurePemTrustOptions(connectOptions, dataSourceReactiveRuntimeConfig.trustCertificatePem);
configureJksTrustOptions(connectOptions, dataSourceReactiveRuntimeConfig.trustCertificateJks);
configurePfxTrustOptions(connectOptions, dataSourceReactiveRuntimeConfig.trustCertificatePfx);

configurePemKeyCertOptions(connectOptions, dataSourceReactiveRuntimeConfig.keyCertificatePem);
configureJksKeyCertOptions(connectOptions, dataSourceReactiveRuntimeConfig.keyCertificateJks);
configurePfxKeyCertOptions(connectOptions, dataSourceReactiveRuntimeConfig.keyCertificatePfx);

return connectOptions;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,10 @@ public class DataSourceReactiveDB2Config {
@ConfigItem
public Optional<Boolean> cachePreparedStatements;

/**
* Whether SSL/TLS is enabled.
*/
@ConfigItem(defaultValue = "false")
public boolean ssl;

}

0 comments on commit f560686

Please sign in to comment.