хранилище ключей ssl, созданное из certbot (автономно), не работает с загрузкой spring

#java #spring-boot #ssl

Вопрос:

Я пытаюсь добавить ssl-сертификат, сгенерированный из certbot, преобразованный в формат pkcs12, в мое приложение для весенней загрузки.

Вот шаги, которые я предпринял, чтобы создать сертификат:

 certbot certonly -a standalone -d api.example.com
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out pkcs.p12 -name tomcat -passout pass:aaaaaa
keytool -importkeystore -deststorepass aaaaaa -destkeypass aaaaaa -destkeystore .keystore -srckeystore pkcs.p12 -srcstoretype PKCS12 -srcstorepass aaaaaa -alias tomcat
 

Источник

Содержание приложения.yml :

 spring:
  datasource:
    url: jdbc:mariadb://localhost:3306/api?useSSL=false
    username: spring
    password: w7wqD6hd78HfYHLP
    driver-class-name: org.mariadb.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
    database-platform: org.hibernate.dialect.MariaDB103Dialect
    generate-ddl: true
    show-sql: true
server:
  port: 12345
  ssl:
    enabled: true
    key-alias: tomcat
    key-store-type: PKCS12
    key-password: aaaaaa
    key-store: /etc/letsencrypt/live/api.example.ovh/pkcs.p12
 

Это самая вложенная ошибка, которую я получаю :

 Caused by: java.lang.IllegalArgumentException: Private key must be accompanied by certificate chain
        at java.base/java.security.KeyStore.setKeyEntry(KeyStore.java:1170) ~[na:na]
        at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:365) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
        at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:246) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
        at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:97) ~[tomcat-embed-core-9.0.39.jar:9.0.39]
        ... 26 common frames omitted
 

pkcs12 был создан с полной цепочкой и ключом, поэтому в полученном сертификате p12 не должно быть никаких проблем. Это различные ответы в замечательном Интернете, которые направили меня в том же направлении, что и шаги по созданию сертификата.

Я хотел бы знать, есть ли у кого-нибудь решение для этого, чтобы просто использовать ssl по назначению. Если ответ очевиден, извините, я недостаточно разбираюсь в java-приложениях.

Ответ №1:

Добавьте key-store-password свойство следующим образом:

 server:
  ssl:
    key-store-password: aaaaaa