Здравствуйте, есть приложение на java spring boot, которое должно подключится через приватную сеть с использованиям tls сертификата к базе postgresql на другом сервере.
Сертификаты все самоподписные которые сделаны вот этими командами:
как генерировал сертификаты
openssl req -sha256 -new -x509 -days 5475 -nodes -out server-ca.crt -keyout server-ca.key
openssl req -sha256 -new -nodes -subj "/CN=10.0.0.3" -out server.csr -keyout server.key
openssl x509 -req -sha256 -days 5475 -in server.csr -CA server-ca.crt -CAkey server-ca.key -CAcreateserial -out server.crt
openssl req -sha256 -new -x509 -days 5475 -nodes -out client-ca.crt -keyout client-ca.key
openssl req -sha256 -new -nodes -subj "/CN=application" -out client.csr -keyout client.key
openssl x509 -req -sha256 -days 5475 -in client.csr -CA client-ca.crt -CAkey client-ca.key -CAcreateserial -out client.crt
Затем из корневого сертификата клиента и подписанного им сертификата, я создал новый:
как собирал сертификат клиента
cat client-ca.key client.crt > client.full.crt
И добавиляю сертификаты в trustStore:
как добавлял сертификаты в trustStore
keytool -keystore cacerts -alias client-full-crt -import -file client.full.crt
keytool -keystore cacerts -alias postgresql-server-crt -import -file server-ca.crt
client.key преобразовываю в client.pk8 исходя из документации:
как создавал ключ в формате pk8
openssl pkcs8 -topk8 -inform PEM -in client.key -outform DER -out client.pk8 -v1 PBE-MD5-DES
В application.properties прописываю конфиг:
app конфиг
spring.datasource.url=jdbc:postgresql://10.0.0.3:5432/application?ssl=true&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory&sslmode=verify-full&sslcert=/etc/ssl/postgres-client/client.crt&sslkey=/etc/ssl/postgres-client/client.pk8&sslrootcert=/etc/ssl/postgres-client/server-ca.crt
spring.datasource.username=application
И запускаю:
start app
java -Djavax.net.ssl.trustStore=cacerts -Djavax.net.ssl.trustStorePassword=changeit -jar backend.jar --spring.config.location=application.properties
И при запуске ошибка:
А со стороны Postgres:
2022-01-22 19:25:34.344 UTC [324199] [unknown]@[unknown] LOG: could not accept SSL connection: sslv3 alert certificate unknown
Хотя когда я пытаюсь подключится через psql все отлично подключается:
тест через psql
psql "host=10.0.0.3 \
user=application \
dbname=application \
sslmode=verify-full \
sslrootcert=/etc/ssl/postgres-client/server-ca.crt \
sslcert=/etc/ssl/postgres-client/client.crt \
sslkey=/etc/ssl/postgres-client/client.key"
Так же когда без использования сертификата подключаюсь тоже работает отлично.
И спустя кучи часов работы и изучения пары десятков статей не смог решить эту проблему.
Подскажите, что не так, в чем проблема?