Home > OS >  Spring Boot 2.7.1 LetsEncrypt PEM keystore throws Resource location must not be null
Spring Boot 2.7.1 LetsEncrypt PEM keystore throws Resource location must not be null

Time:07-20

So I read that Spring Boot now supports PEM since 2.7.0

https://docs.spring.io/spring-boot/docs/2.7.0-SNAPSHOT/reference/htmlsingle/#howto.webserver.configure-ssl 17.3.7. Configure SSL

So I am using PEM generated by certbot.

My application.properties

spring.jpa.generate-ddl=true
spring1.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false
server.port=443
server.ssl.certificate=fullchain1.pem
server.ssl.certificate.certificate-private-key=privkey1.pem
server.ssl.trust-certificate=fullchain1.pem

When I launch I get

org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Could not load key store 'null'

Caused by: org.springframework.boot.web.server.WebServerException: Could not load key store 'null'

Caused by: java.lang.IllegalArgumentException: Resource location must not be null

CodePudding user response:

So this workaround works

@Configuration
public class SSLConfig {
    @Bean
    public ConfigurableServletWebServerFactory webServerFactory() throws Exception {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        Ssl ssl = new Ssl();
        ssl.setEnabled(true);
        ssl.setCertificate("cert1.pem");
        ssl.setCertificatePrivateKey("privkey1.pem");
        ssl.setKeyStoreType("PKCS12");
        ssl.setKeyStorePassword(""); // without this decrytption fails
        factory.setSsl(ssl);
        factory.setPort(443);

        return factory;
    }
}

CodePudding user response:

server.ssl.key-store=file:///Users/...

Have you tried this way of setting the path? First, make sure your application up with the correct path, then dig into the next step.

  • Related