Задать вопрос

Как добавить цепочку сертификатов pkcs12 в java8 для взаимной аутентификации TLS?

Добрый день.

Есть веб-сервис с REST API, требующий взаимной аутентификации TLS (1.2).
Есть JMS-сервер (Aurea) с java8, которому надо обратиться к этому сервису.

Выданная сервисом цепочка в pkcs12 СА-провайдер-клиент(+клиентский ключ) успешно применяется в тестовом запросе в Postman, просто указанием предоставленного .pfx файла в настройках.
А из JMS не удается обратиться к сервису:

1) в java, в \lib\security\cacerts при импорте цепочки pkcs12 импортируется только закрытый ключ

keytool.exe
 -importkeystore
 -destkeystore
 .\cacerts
 -deststoretype JKS
 -deststorepass changeit
 -srckeystore
 d:\_work\test.pfx
 -srcstoretype PKCS12
 -srcstorepass xxx

Entry for alias {...} successfully imported.
Import command completed:  1 entries successfully imported, 0 entries failed or cancelled

!!! 1 entries successfully imported
в цепочке импортируется только закрытый ключ клиента, без 3-х сертификатов

2. В локальном win mmc-Сертификаты импортирую цепочку .pfx и экспортирую три сертификата отдельными файлами
Через keytool импортирую их

keytool.exe
 -import
 -deststorepass changeit
 -trustcacerts
 -keystore
 .\cacerts
 -noprompt
 -alias ca
 -file "d:\_work\ca.cer"
..
 -alias ca_serv
 -file "d:\_work\serv_der.cer"
...
 -alias client
 -file "d:\_work\clnt.cer"

Certificate was added to keystore


После импорта запрос к API из JMS возвращает:
400 Bad Request
No required SSL certificate was sent


В локальном хранилище cacerts уже есть три сертификата и закрытый ключ:
keytool.exe -list -keystore ./cacerts | findstr /V jdk | findstr /V finger

ca_serv, 04.12.2025, trustedCertEntry,
ca, 04.12.2025, trustedCertEntry,
{...}, 04.12.2025, PrivateKeyEntry,
clnt, 04.12.2025, trustedCertEntry,


Смущает, что после импорта pkcs12 - keytool стал постоянно выдавать варнинг.
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore ./cacerts -destkeystore ./cacerts -deststoretype pkcs12".
Keystore type: JKS
Keystore provider: SUN


Попытка выполнить совет и сконвертировать в PKCS12 привела вообще к ошибке:
the trustAnchors parameter must be non-empty

Журнал JMS:

[25/12/05 12:14:04] ID=dev_ESBTest (severe) [] Failed delivery for (MessageId: ID-VM-TEST-51337-1764925865905-0-3 on ExchangeId: ID-VM-TEST-51337-1764925865905-0-4). Exhausted after delivery attempt: 1 caught: org.apache.camel.component.cxf.CxfOperationException: JAXRS operation failed invoking directsonicesb://Resource.testapi_v2_APIClaim.APIclaim?bindingStrategy=%23InvokeBindingStrategy.Resource.testapi_v2_APIClaim.APIclaim&headerFilterStrategy=%23InvokeHeaderFilterStrategy.Resource.testapi_v2_APIClaim.APIclaim&uriTemplate=%23URITemplate.Resource.testapi_v2_APIClaim.APIclaim with statusCode: 400org.apache.camel.component.cxf.CxfOperationException: JAXRS operation failed invoking directsonicesb://Resource.testapi_v2_APIClaim.APIclaim?bindingStrategy=%23InvokeBindingStrategy.Resource.testapi_v2_APIClaim.APIclaim&headerFilterStrategy=%23InvokeHeaderFilterStrategy.Resource.testapi_v2_APIClaim.APIclaim&uriTemplate=%23URITemplate.Resource.testapi_v2_APIClaim.APIclaim with statusCode: 400
	at org.apache.camel.component.cxf.jaxrs.CxfRsProducer.populateCxfRsProducerException(CxfRsProducer.java:317)
	at org.apache.camel.component.cxf.jaxrs.CxfRsProducer.invokeHttpClient(CxfRsProducer.java:177)
	at org.apache.camel.component.cxf.jaxrs.CxfRsProducer.process(CxfRsProducer.java:87)
...


Подскажите, пожалуйста, что может быть неверно выполнено?
В каком направлении пробовать искать решение?

Updated:
Вопрос решился настройкой TLS в компоненте Apache CXF (см. лог JMS: ... at org.apache.camel.component.cxf. ...)
https://cxf.apache.org/docs/client-http-transport-...
  • Вопрос задан
  • 123 просмотра
Подписаться 2 Средний 5 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Java-разработчик с нуля
    12 месяцев
    Далее
  • Яндекс Практикум
    Java-разработчик
    10 месяцев
    Далее
  • Академия Eduson
    Java-разработчик
    8 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ИТРУМ Ростов-на-Дону
от 75 000 ₽
СофтМоушен Санкт-Петербург
от 150 000 до 250 000 ₽