Skip to content

SslHealthIndicator throws NullPointerException when using SslBundle with SslStoreBundle.NONE #43078

@matthew-js-porter

Description

@matthew-js-porter

SslHealthIndicator throws NullPointerException when using SslBundle with SslStoreBundle.NONE.

Stacktrace

java.lang.NullPointerException: Cannot invoke "java.security.KeyStore.aliases()" because "keyStore" is null
	at org.springframework.boot.info.SslInfo$BundleInfo.extractCertificateChains(SslInfo.java:80) ~[spring-boot-3.4.0-RC1.jar:3.4.0-RC1]
	at org.springframework.boot.info.SslInfo$BundleInfo.<init>(SslInfo.java:75) ~[spring-boot-3.4.0-RC1.jar:3.4.0-RC1]
	at org.springframework.boot.info.SslInfo.lambda$getBundles$0(SslInfo.java:60) ~[spring-boot-3.4.0-RC1.jar:3.4.0-RC1]
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[na:na]
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627) ~[na:na]
	at org.springframework.boot.info.SslInfo.getBundles(SslInfo.java:61) ~[spring-boot-3.4.0-RC1.jar:3.4.0-RC1]
	at org.springframework.boot.actuate.ssl.SslHealthIndicator.doHealthCheck(SslHealthIndicator.java:51) ~[spring-boot-actuator-3.4.0-RC1.jar:3.4.0-RC1]

Steps to Reproduce

  1. Create a project with spring-boot-starter-web and spring-boot-starter-actuator
  2. Register an SslBundle using SslStoreBundle.NONE
@Bean
public SslBundleRegistrar registrar() {
	final String[] ciphers = new String[] {
		"TLS_AES_256_GCM_SHA384"
	};
	final String[] protocols = new String[] {
			"TLSv1.2"
	};
	return registry -> registry.registerBundle("sample", SslBundle.of(SslStoreBundle.NONE,
			SslBundleKey.NONE, SslOptions.of(ciphers, protocols)));
}
  1. Observe error in logs and at /actuator/health endpoint.

This was observed using Spring Boot 3.4.0-RC1

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions