2

Я использую Intellij IDEA 15, IDE на основе Java. Это позволяет мне щелкнуть ссылку в любом классе Java с открытым исходным кодом в моем проекте и загрузить исходный код и документацию из Интернета. Однако эта функция сейчас не работает, потому что мы должны пройти через прокси-сервер, который выполняет замену сертификата. Хотя система Windows, на которой я работаю, знает о локальном сертификате, Java VM, которую я использую, не знает об этом, поэтому процесс загрузки завершается с этой ошибкой:

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Казалось бы, решение состоит в том, чтобы экспортировать соответствующий сертификат из хранилища сертификатов моей коробки Windows и добавить его в хранилище сертификатов JVM в /jre/lib/security/cacert , за исключением того, что я не знаю, какой из десятков сертификатов в Магазин Windows отсутствует.

Может кто-нибудь предложить метод отладки, чтобы определить, какой сертификат отсутствует? В моем собственном коде я установил бы точку останова, используя Intellij, и посмотрел бы на передаваемые значения, но поскольку проблема внутри Intellij, я действительно не знаю, как добраться до этих значений.

Любая помощь приветствуется, если ее нужно перенести в другое сообщество StackExchange, которое я понимаю.

1 ответ1

2

Прокси-серверы - это всегда весело!

Хорошо. Уловка, когда дело доходит до отслеживания проблем с сертификатом, заключается в том, что корневой сертификат является наиболее важным. Корневой сертификат цепочки доверия - это CA, и если ваша система доверяет CA, она также доверяет всему, что подписывает. И наоборот, если ЦС не является доверенным, все, что он подписывает, является недействительным.

Ваша Windows настроена на доверие к CA, возможно, любезно предоставлено местным ИТ-отделом. Java, однако, нет.

Поэтому: вам нужно получить ключ CA, который генерирует сертификаты на вашем прокси-сервере, и вставить его в хранилище ключей Java.

Вероятно, вы можете найти это, открыв любой безопасный сайт в любом веб-браузере, открыв свойства страницы и посмотрев фактический сертификат. На Firefox это выглядит примерно так:

Свойства сертификата Firefox

Вы щелкнете по первому уровню, называемому здесь "COMODO ECC Certification Authority", экспортируете его, а затем используете Java keytool чтобы установить его как CA.

Примечание: в вашей настройке имя будет отличаться. Скорее всего, это будет не название компании, известной своими сертификатами, такими как Comodo или Verisign, это будет название производителя оборудования, такого как Barracuda или Bluecoat.

Более подробная информация о работе keytool в Windows доступна здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .