Я пытаюсь соединиться с безопасным веб-сервисом.
Я получал отказ квитирования даже при том, что мой keystore и база доверенных сертификатов были установлены правильно.
После нескольких дней разочарования бесконечного поиска с помощью Google и выяснения у всех вокруг я узнал, что единственная проблема состояла в том, что Java принял решение не отправить клиентский сертификат серверу во время квитирования.
Конкретно:
- Сервер запросил, чтобы клиентский сертификат (CN=RootCA) - т.е. "дал мне сертификат, который подписывается полностью CA"
- Java изучил keystore и только нашел мой клиентский сертификат, который подписывается "SubCA", который в свою очередь выпущен "RootCA". Это не потрудилось изучать базу доверенных сертификатов... понятное дело хорошо я предполагаю
- Печально, когда я пытался добавить сертификат "SubCA" keystore, который не помог вообще. Я действительно проверял, загружаются ли сертификаты в keystore. Они делают, но KeyManager игнорирует все сертификаты кроме клиента один.
- Все вышеупомянутое приводит к тому, что Java решает, что это не имеет никаких сертификатов, которые удовлетворяют запрос сервера, и отправляет, ничто... tadaaa не квитирует отказ :-(
Мои вопросы:
- Действительно ли возможно, что я добавил сертификат "SubCA" keystore способом, который "повредил цепочку сертификата" или что-то так, чтобы KeyManager только загрузил клиентский сертификат и проигнорировал остальных? (Chrome и openssl удается понять это итак, почему не может Java? - отмечают, что сертификат "SubCA" всегда представляется отдельно как доверяемые полномочия, таким образом, Chrome, по-видимому, правильно упаковывает его наряду с клиентским сертификатом во время квитирования),
- Действительно ли это - формальная "проблема конфигурации" о стороне сервера? Сервер является третьим лицом. Я ожидал бы, что сервер запросит сертификат, подписанный полномочиями "SubCA", так как это - то, чем они предоставили нам. Я подозреваю, что то, что это работает в Chrome и openssl, - то, потому что они "менее строги", и Java просто идет "книгой" и сбоями.
Мне действительно удавалось соединить грязное обходное решение для этого, но я не очень доволен этим так, я буду радоваться, может ли кто-либо разъяснить этого для меня.
задан Camilo Martinez
12 December 2014 в 00:44
поделиться