Update LoadedPemSslStore to use lazy loading
Update `LoadedPemSslStore` so that it loads content lazily. This restores the behavior of Spring Boot 3.1 and allows bundles to be defined with files that don't exist as long as they are never accessed. Fixes gh-38659
This commit is contained in:
@@ -16,9 +16,6 @@
|
||||
|
||||
package org.springframework.boot.autoconfigure.ssl;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.UncheckedIOException;
|
||||
|
||||
import org.springframework.boot.autoconfigure.ssl.SslBundleProperties.Key;
|
||||
import org.springframework.boot.ssl.SslBundle;
|
||||
import org.springframework.boot.ssl.SslBundleKey;
|
||||
@@ -99,23 +96,17 @@ public final class PropertiesSslBundle implements SslBundle {
|
||||
* @return an {@link SslBundle} instance
|
||||
*/
|
||||
public static SslBundle get(PemSslBundleProperties properties) {
|
||||
try {
|
||||
PemSslStore keyStore = getPemSslStore("keystore", properties.getKeystore());
|
||||
if (keyStore != null) {
|
||||
keyStore = keyStore.withAlias(properties.getKey().getAlias())
|
||||
.withPassword(properties.getKey().getPassword());
|
||||
}
|
||||
PemSslStore trustStore = getPemSslStore("truststore", properties.getTruststore());
|
||||
SslStoreBundle storeBundle = new PemSslStoreBundle(keyStore, trustStore);
|
||||
return new PropertiesSslBundle(storeBundle, properties);
|
||||
}
|
||||
catch (IOException ex) {
|
||||
throw new UncheckedIOException(ex);
|
||||
PemSslStore keyStore = getPemSslStore("keystore", properties.getKeystore());
|
||||
if (keyStore != null) {
|
||||
keyStore = keyStore.withAlias(properties.getKey().getAlias())
|
||||
.withPassword(properties.getKey().getPassword());
|
||||
}
|
||||
PemSslStore trustStore = getPemSslStore("truststore", properties.getTruststore());
|
||||
SslStoreBundle storeBundle = new PemSslStoreBundle(keyStore, trustStore);
|
||||
return new PropertiesSslBundle(storeBundle, properties);
|
||||
}
|
||||
|
||||
private static PemSslStore getPemSslStore(String propertyName, PemSslBundleProperties.Store properties)
|
||||
throws IOException {
|
||||
private static PemSslStore getPemSslStore(String propertyName, PemSslBundleProperties.Store properties) {
|
||||
PemSslStore pemSslStore = PemSslStore.load(asPemSslStoreDetails(properties));
|
||||
if (properties.isVerifyKeys()) {
|
||||
CertificateMatcher certificateMatcher = new CertificateMatcher(pemSslStore.privateKey());
|
||||
|
||||
Reference in New Issue
Block a user