diff --git a/spring-cloud-commons/src/main/java/org/springframework/cloud/configuration/TLS.java b/spring-cloud-commons/src/main/java/org/springframework/cloud/configuration/TLS.java new file mode 100644 index 00000000..ad4ac858 --- /dev/null +++ b/spring-cloud-commons/src/main/java/org/springframework/cloud/configuration/TLS.java @@ -0,0 +1,55 @@ +/* + * Copyright 2022-2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.configuration; + +/** + * Represents TLS versions to be used while setting up Apache HC5 HttpClient. + * + * @author Olga Maciaszek-Sharma + */ +public enum TLS { + + /** + * Represents TLS 1.0. Not recommended due to lower security level. + */ + V_1_0("TLSv1"), + + /** + * Represents TLS 1.1. Not recommended due to lower security level. + */ + V_1_1("TLSv1.1"), + + /** + * Represents TLS 1.2. + */ + V_1_2("TLSv1.2"), + + /** + * Represents TLS 1.3. + */ + V_1_3("TLSv1.3"); + + /** + * TLS version name used to match with Apache HC5 HttpClient. + */ + public final String name; + + TLS(String name) { + this.name = name; + } + +} diff --git a/spring-cloud-commons/src/main/java/org/springframework/cloud/configuration/TlsProperties.java b/spring-cloud-commons/src/main/java/org/springframework/cloud/configuration/TlsProperties.java index 6b8befa6..c53fe5cc 100644 --- a/spring-cloud-commons/src/main/java/org/springframework/cloud/configuration/TlsProperties.java +++ b/spring-cloud-commons/src/main/java/org/springframework/cloud/configuration/TlsProperties.java @@ -19,6 +19,7 @@ package org.springframework.cloud.configuration; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Set; import org.springframework.core.io.Resource; @@ -47,6 +48,8 @@ public class TlsProperties { private String trustStorePassword = ""; + private Set tlsVersions = Set.of(TLS.V_1_2, TLS.V_1_3); + private static Map extTypes() { Map result = new HashMap<>(); @@ -139,6 +142,14 @@ public class TlsProperties { return trustStorePassword.toCharArray(); } + public Set getTlsVersions() { + return tlsVersions; + } + + public void setTlsVersions(Set tlsVersions) { + this.tlsVersions = tlsVersions; + } + private String storeTypeOf(Resource resource) { String extension = fileExtensionOf(resource); String type = EXTENSION_STORE_TYPES.get(extension);