#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