Как лучше добавить цепочку сертификатов 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-...
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос