JAVA corretto21 SPRING "javax.net.ssl.SSLPeerUnverifiedException: узел не аутентифицирован"JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JAVA corretto21 SPRING "javax.net.ssl.SSLPeerUnverifiedException: узел не аутентифицирован"

Сообщение Anonymous »

У меня есть система микросервисов в Java Spring Boot
Я создаю свой самозаверяющий ключ SSL и сохраняю его таким образом
Файл «sub.conf»

Код: Выделить всё

[req]

default_bits = 4096

prompt = no

default_md = sha256

x509_extensions = v3_req

distinguished_name = dn

[dn]

C = IN

ST = MAH

L = PUNE

O = JAM

emailAddress = Domino.Admin@jam.com

CN = it+

[v3_req]

subjectAltName = @alt_names

[alt_names]

DNS.1 = localhost
Команды

Код: Выделить всё

"# Non-interactive and 10 years expiration"

> openssl -x509 -newkey rsa:4096 -sha256 -nodes -keyout "\key.pem" -days 3560 -out "crt.pem" -config "sub.conf"

"# > create the keystore"

> openssl pkcs12 -inkey key.pem -in crt.pem -export -out myapp.p12;

"# > create the truststore"

> keytool -importkeystore -srckeystore myapp.p12 -srcstoretype pkcs12 -destkeystore myapp.jks -deststoretype JKS
Клиент «application.yml»

Код: Выделить всё

# ==============================================================
# = Authentication Server JWT
# ==============================================================
server:
port: 9100
ssl:
enabled: true
trust-store: E:\myapp.p12   # The path to the keystore containing the certificate
trust-store-password: 
trust-store-type: PKCS12
bundle: "mybundle"

spring:
application:
name: AUTH-SERVICE
ssl:
bundle:
pem:
mybundle:
keystore:
certificate: "/crt.pem"
private-key: "/key.pem"
truststore:
certificate: "/crt.pem"
Сервер «application.yml»

Код: Выделить всё

server:
port: 5000
ssl:
enabled: true
key-store: E:\myapp.p12   # The path to the keystore containing the certificate
key-store-password: 
key-store-type: PKCS12
trust-store: E:\myapp.jks   # The path to the keystore containing the certificate
trust-store-password: 
trust-store-type: jks
bundle: "mybundle"

spring:
application:
name: GestUser
ssl:
bundle:
pem:
mybundle:
keystore:
certificate: "/crt.pem"
private-key: "/key.pem"
truststore:
certificate: "/crt.pem"
Он работает хорошо, но в журналах развертывания, между защитой и защищенным сообщением, появилось это исключение в развертывании журналов на стороне сервера.. хотел разрешить этот любопытный случай и кое-что понять..
"o.s.security.web.FilterChainProxy: Защита GET /api/utenti/cerca/userid/anonymous
o.a.tomcat.util.net.jsse.JSSESupport: Ошибка при попытке получить сертификат от клиента

Код: Выделить всё

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
o.s.security.web.FilterChainProxy: защищенный GET /api/utenti/cerca/userid/anonymous»
ВТОРОЕ РЕШЕНИЕ (это не полностью работает на стороне сервера)
если мне это нравится
клиент yml

Код: Выделить всё

  ssl:
bundle:
jks:
mybundle:
key:
alias: "1"
keystore:
location: "/myapp.p12"
password: 
type: "PKCS12"
yml сервера

Код: Выделить всё

      ssl:
bundle:
jks:
mybundle:
key:
alias: "1"
keystore:
location: "/myapp.p12"
password: 
type: "PKCS12"
truststore:
location: "/myapp.jks"
password: 
type: "JKS"
Я получаю эти журналы на стороне сервера и полностью не работаю сервер весной

Код: Выделить всё

LifecycleException: Protocol handler start failed
Caused by: java.lang.IllegalArgumentException: the trustAnchor parameter must be non-empty
Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Я следую схемам в SSL::Spring boot: https://docs.spring.io/spring-boot/refe ... atures.ssl
ОТЛАДКА В ПОДСИСТЕМЕ WINDOWS WSL РЕШЕНИЕ № 2
(следуя этому руководству https://medium.com/@gustavocalcaterra/d ... d9cb300f43)
если сделаю

Код: Выделить всё

java -Djavax.net.debug=all -Djavax.net.ssl.trustStore=/mnt/e/myapp.p12 -Djavax.net.ssl.trustStorePassword=
 -jar ./target/gestuser-0.0.1-SNAPSHOT.jar https://localhost 2>&1 | grep -i truststore
я получаю, что «тип TrustStore: pkcs12»
если я это сделаю

Код: Выделить всё

java -Djavax.net.debug=all -Djavax.net.ssl.trustStore=/mnt/e/myapp.jks -Djavax.net.ssl.trustStorePassword=
 -jar ./target/gestuser-0.0.1-SNAPSHOT.jar https://localhost 2>&1 | grep -i truststore
я получаю, что «тип TrustStore: pkcs12»
И это очень странно, это должно дать мне jks для одного из двух.. в обоих случаях я получаю

Код: Выделить всё

TrustStoreManager.java:346|Reloaded 1 trust certs
и этот журнал

Код: Выделить всё

"trustStore provider is:"
так что это должно работать, но это не так... всегда получается исключение

Код: Выделить всё

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
(я тоже пробовал эту конфигурацию

Код: Выделить всё

sudo keytool -import -alias myserver -keystore $JAVA_HOME/lib/jvm/java-21-openjdk-amd64/lib/security/cacerts -file /mnt/e/crt.pem

java -Djavax.net.ssl.trustStore=$JAVA_HOME/lib/jvm/java-21-openjdk-amd64/lib/security/cacert -Djavax.net.ssl.trustStorePassword=changeit -jar ./target/gestuser-0.0.1-SNAPSHOT.jar https://localhost
всегда одно и то же чертово исключение для параметраtrustAnchor.. так грустно

Подробнее здесь: https://stackoverflow.com/questions/798 ... -not-authe
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»