mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-09-17 12:09:16 +00:00
Fail fast if ssl.enabled = true without an SSL bundle
Setting spring.ldap.embedded.ssl.enabled without an SSL bundle started a plain LDAP listener silently. It now fails at startup as a bundle is required to provide the server's certificate and private key. Closes gh-51471
This commit is contained in:
@@ -809,3 +809,7 @@ spring:
|
||||
ssl:
|
||||
bundle: "example"
|
||||
----
|
||||
|
||||
The bundle must provide the server's certificate and private key.
|
||||
|
||||
NOTE: An SSL bundle is required for LDAPS. Setting configprop:spring.ldap.embedded.ssl.enabled[] without configprop:spring.ldap.embedded.ssl.bundle[] fails at startup.
|
||||
|
||||
+7
-4
@@ -132,11 +132,14 @@ public final class EmbeddedLdapAutoConfiguration implements DisposableBean {
|
||||
|
||||
private @Nullable SslBundle getSslBundle(@Nullable SslBundles sslBundles) {
|
||||
Ssl ssl = this.embeddedProperties.getSsl();
|
||||
if (ssl.isEnabled() && StringUtils.hasLength(ssl.getBundle())) {
|
||||
Assert.notNull(sslBundles, "SSL bundle name has been set but no SSL bundles found in context");
|
||||
return sslBundles.getBundle(ssl.getBundle());
|
||||
if (!ssl.isEnabled()) {
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
String bundle = ssl.getBundle();
|
||||
Assert.state(StringUtils.hasLength(bundle), "SSL is enabled but no SSL bundle has been set. "
|
||||
+ "An SSL bundle providing the server's certificate and private key is required for LDAPS");
|
||||
Assert.notNull(sslBundles, "SSL bundle name has been set but no SSL bundles found in context");
|
||||
return sslBundles.getBundle(bundle);
|
||||
}
|
||||
|
||||
private void setSchema(InMemoryDirectoryServerConfig config) {
|
||||
|
||||
+1
-1
@@ -141,7 +141,7 @@ public class EmbeddedLdapProperties {
|
||||
|
||||
/**
|
||||
* Whether to enable SSL support. Enabled automatically if "bundle" is provided
|
||||
* unless specified otherwise.
|
||||
* unless specified otherwise. A "bundle" is required when enabled.
|
||||
*/
|
||||
private @Nullable Boolean enabled;
|
||||
|
||||
|
||||
+11
@@ -411,6 +411,17 @@ class EmbeddedLdapAutoConfigurationTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void whenSslIsEnabledWithoutAnSslBundleThenStartFails() {
|
||||
this.contextRunner
|
||||
.withPropertyValues("spring.ldap.embedded.port:0", "spring.ldap.embedded.base-dn:dc=spring,dc=org",
|
||||
"spring.ldap.embedded.ssl.enabled:true")
|
||||
.run((context) -> {
|
||||
assertThat(context).hasFailed();
|
||||
assertThat(context).getFailure().hasMessageContaining("SSL is enabled but no SSL bundle has been set");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void sslIsNotEnabledWhenBundleIsEmpty() {
|
||||
EmbeddedLdapProperties properties = new EmbeddedLdapProperties();
|
||||
|
||||
Reference in New Issue
Block a user