Allow callers to specify a TLS version when constructing a FaultTolerantHttpClient.

This commit is contained in:
Jon Chambers 2021-03-08 15:53:55 -05:00 committed by Jon Chambers
parent a1434524a4
commit 933dd81d82
2 changed files with 15 additions and 4 deletions

View File

@ -37,6 +37,9 @@ public class FaultTolerantHttpClient {
private final Retry retry;
private final CircuitBreaker breaker;
public static final String SECURITY_PROTOCOL_TLS_1_2 = "TLSv1.2";
public static final String SECURITY_PROTOCOL_TLS_1_3 = "TLSv1.3";
public static Builder newBuilder() {
return new Builder();
}
@ -86,6 +89,7 @@ public class FaultTolerantHttpClient {
private String name;
private Executor executor;
private KeyStore trustStore;
private String securityProtocol = SECURITY_PROTOCOL_TLS_1_2;
private RetryConfiguration retryConfiguration;
private CircuitBreakerConfiguration circuitBreakerConfiguration;
@ -126,6 +130,11 @@ public class FaultTolerantHttpClient {
return this;
}
public Builder withSecurityProtocol(final String securityProtocol) {
this.securityProtocol = securityProtocol;
return this;
}
public Builder withTrustedServerCertificate(final String certificatePem) throws CertificateException {
this.trustStore = CertificateUtil.buildKeyStoreForPem(certificatePem);
return this;
@ -142,13 +151,14 @@ public class FaultTolerantHttpClient {
.version(version)
.executor(executor);
final SslConfigurator sslConfigurator = SslConfigurator.newInstance().securityProtocol(securityProtocol);
if (this.trustStore != null) {
builder.sslContext(SslConfigurator.newInstance()
.securityProtocol("TLSv1.2")
.trustStore(trustStore)
.createSSLContext());
sslConfigurator.trustStore(trustStore);
}
builder.sslContext(sslConfigurator.createSSLContext());
return new FaultTolerantHttpClient(name, builder.build(), retryConfiguration, circuitBreakerConfiguration);
}

View File

@ -46,6 +46,7 @@ public class SecureStorageClient {
.withRedirect(HttpClient.Redirect.NEVER)
.withExecutor(executor)
.withName("secure-storage")
.withSecurityProtocol(FaultTolerantHttpClient.SECURITY_PROTOCOL_TLS_1_3)
.withTrustedServerCertificate(configuration.getStorageCaCertificate())
.build();
}