diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ssl/PropertiesSslBundle.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ssl/PropertiesSslBundle.java index c16a5161e84..29baa16e69e 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ssl/PropertiesSslBundle.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ssl/PropertiesSslBundle.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 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. @@ -27,6 +27,7 @@ import org.springframework.boot.ssl.jks.JksSslStoreDetails; import org.springframework.boot.ssl.pem.PemSslStore; import org.springframework.boot.ssl.pem.PemSslStoreBundle; import org.springframework.boot.ssl.pem.PemSslStoreDetails; +import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; /** @@ -142,4 +143,14 @@ public final class PropertiesSslBundle implements SslBundle { properties.getPassword()); } + @Override + public String toString() { + ToStringCreator creator = new ToStringCreator(this); + creator.append("key", this.key); + creator.append("options", this.options); + creator.append("protocol", this.protocol); + creator.append("stores", this.stores); + return creator.toString(); + } + } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslBundle.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslBundle.java index 790b225df7a..218e44b68f6 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslBundle.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslBundle.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 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. @@ -20,6 +20,7 @@ import javax.net.ssl.KeyManager; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; +import org.springframework.core.style.ToStringCreator; import org.springframework.util.StringUtils; /** @@ -160,6 +161,16 @@ public interface SslBundle { return managersToUse; } + @Override + public String toString() { + ToStringCreator creator = new ToStringCreator(this); + creator.append("key", getKey()); + creator.append("options", getOptions()); + creator.append("protocol", getProtocol()); + creator.append("stores", getStores()); + return creator.toString(); + } + }; } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslBundleKey.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslBundleKey.java index cf941302002..13d095f9bf4 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslBundleKey.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslBundleKey.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 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. @@ -19,6 +19,7 @@ package org.springframework.boot.ssl; import java.security.KeyStore; import java.security.KeyStoreException; +import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -94,6 +95,14 @@ public interface SslBundleKey { return alias; } + @Override + public String toString() { + ToStringCreator creator = new ToStringCreator(this); + creator.append("alias", alias); + creator.append("password", (password != null) ? "******" : null); + return creator.toString(); + } + }; } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslOptions.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslOptions.java index d377d749efb..d45e9163a34 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslOptions.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslOptions.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 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. @@ -24,6 +24,8 @@ import java.util.Set; import javax.net.ssl.SSLEngine; +import org.springframework.core.style.ToStringCreator; + /** * Configuration options that should be applied when establishing an SSL connection. * @@ -81,6 +83,14 @@ public interface SslOptions { return enabledProtocols; } + @Override + public String toString() { + ToStringCreator creator = new ToStringCreator(this); + creator.append("ciphers", ciphers); + creator.append("enabledProtocols", enabledProtocols); + return creator.toString(); + } + }; } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslStoreBundle.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslStoreBundle.java index a5f5a0e7d88..c4a543121d2 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslStoreBundle.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/SslStoreBundle.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 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. @@ -18,6 +18,8 @@ package org.springframework.boot.ssl; import java.security.KeyStore; +import org.springframework.core.style.ToStringCreator; + /** * A bundle of key and trust stores that can be used to establish an SSL connection. * @@ -75,6 +77,15 @@ public interface SslStoreBundle { return keyStorePassword; } + @Override + public String toString() { + ToStringCreator creator = new ToStringCreator(this); + creator.append("keyStore.type", (keyStore != null) ? keyStore.getType() : "none"); + creator.append("keyStorePassword", (keyStorePassword != null) ? "******" : null); + creator.append("trustStore.type", (trustStore != null) ? trustStore.getType() : "none"); + return creator.toString(); + } + }; } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/jks/JksSslStoreBundle.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/jks/JksSslStoreBundle.java index ef0b924ffb2..8f475f1c833 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/jks/JksSslStoreBundle.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/jks/JksSslStoreBundle.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 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. @@ -26,6 +26,7 @@ import java.security.NoSuchProviderException; import java.security.cert.CertificateException; import org.springframework.boot.ssl.SslStoreBundle; +import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.util.ResourceUtils; import org.springframework.util.StringUtils; @@ -123,4 +124,14 @@ public class JksSslStoreBundle implements SslStoreBundle { } } + @Override + public String toString() { + ToStringCreator creator = new ToStringCreator(this); + creator.append("keyStore.type", (this.keyStore != null) ? this.keyStore.getType() : "none"); + String keyStorePassword = getKeyStorePassword(); + creator.append("keyStorePassword", (keyStorePassword != null) ? "******" : null); + creator.append("trustStore.type", (this.trustStore != null) ? this.trustStore.getType() : "none"); + return creator.toString(); + } + } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/pem/PemSslStoreBundle.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/pem/PemSslStoreBundle.java index 5834d2f84fc..f8f5eda84ef 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/pem/PemSslStoreBundle.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ssl/pem/PemSslStoreBundle.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 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. @@ -26,6 +26,7 @@ import java.security.cert.X509Certificate; import java.util.List; import org.springframework.boot.ssl.SslStoreBundle; +import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -145,4 +146,13 @@ public class PemSslStoreBundle implements SslStoreBundle { } } + @Override + public String toString() { + ToStringCreator creator = new ToStringCreator(this); + creator.append("keyStore.type", (this.keyStore != null) ? this.keyStore.getType() : "none"); + creator.append("keyStorePassword", null); + creator.append("trustStore.type", (this.trustStore != null) ? this.trustStore.getType() : "none"); + return creator.toString(); + } + } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/server/WebServerSslBundle.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/server/WebServerSslBundle.java index 38a9fba704d..15991a6c761 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/server/WebServerSslBundle.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/server/WebServerSslBundle.java @@ -29,6 +29,7 @@ import org.springframework.boot.ssl.jks.JksSslStoreBundle; import org.springframework.boot.ssl.jks.JksSslStoreDetails; import org.springframework.boot.ssl.pem.PemSslStoreBundle; import org.springframework.boot.ssl.pem.PemSslStoreDetails; +import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.util.function.ThrowingSupplier; @@ -226,6 +227,16 @@ public final class WebServerSslBundle implements SslBundle { || (ssl.getTrustStoreType() != null && ssl.getTrustStoreType().equals("PKCS11"))); } + @Override + public String toString() { + ToStringCreator creator = new ToStringCreator(this); + creator.append("key", this.key); + creator.append("protocol", this.protocol); + creator.append("stores", this.stores); + creator.append("options", this.options); + return creator.toString(); + } + /** * Class to adapt a {@link SslStoreProvider} into a {@link SslStoreBundle}. */ @@ -253,6 +264,17 @@ public final class WebServerSslBundle implements SslBundle { return ThrowingSupplier.of(this.sslStoreProvider::getTrustStore).get(); } + @Override + public String toString() { + ToStringCreator creator = new ToStringCreator(this); + KeyStore keyStore = getKeyStore(); + creator.append("keyStore.type", (keyStore != null) ? keyStore.getType() : "none"); + creator.append("keyStorePassword", null); + KeyStore trustStore = getTrustStore(); + creator.append("trustStore.type", (trustStore != null) ? trustStore.getType() : "none"); + return creator.toString(); + } + } private static final class WebServerSslStoreBundle implements SslStoreBundle { @@ -285,6 +307,15 @@ public final class WebServerSslBundle implements SslBundle { return this.keyStorePassword; } + @Override + public String toString() { + ToStringCreator creator = new ToStringCreator(this); + creator.append("keyStore.type", (this.keyStore != null) ? this.keyStore.getType() : "none"); + creator.append("keyStorePassword", (this.keyStorePassword != null) ? "******" : null); + creator.append("trustStore.type", (this.trustStore != null) ? this.trustStore.getType() : "none"); + return creator.toString(); + } + } }