2014-10-27 3 views
1

У меня есть апплет Java, который подписан, который загружает отлично в v7u67, но с v7u71 он больше не загружается. Кроме того, апплет все еще загружается отлично в v7u71 на моем тестовом сервере, который находится на локальной машине, хотя теги JAR и <object> весьма похожи. В обоих случаях доступ к веб-сайту осуществляется с помощью HTTPS (хотя сервер тестирования использует самозаверяющий сертификат для HTTPS).Java 1.7.0u71 не может загрузить апплет, который может обладать 1.7.0u67

Полный журнал трассировки/отладки доступен по адресу http://pastebin.com/7JNavVVq с примечаниями об утесе ниже.

security: Expected Main URL: https://popcornmanager.com/manager/grid.1.2.8e.jar 
basic: Plugin2ClassLoader.addURL parent called for https://popcornmanager.com/manager/grid.1.2.8e.jar 
security: Accessing keys and certificate in Mozilla user profile: null 
security: JSS is not configured 
network: Cache entry not found [url: https://popcornmanager.com/manager/grid.1.2.8e.jar, version: null] 
network: Connecting https://popcornmanager.com/manager/grid.1.2.8e.jar with proxy=DIRECT 
network: Cache entry not found [url: file:/C:/Program%20Files%20(x86)/Java/jre7/lib/ext/sunec.jar, version: null] 
basic: Loading Java Applet ... 
network: Cache entry not found [url: file:/C:/Program%20Files%20(x86)/Java/jre7/lib/ext/sunjce_provider.jar, version: null] 
network: Connecting http://popcornmanager.com:443/ with proxy=DIRECT 
security: Loading SSL Root CA certificates from C:\Program Files (x86)\Java\jre7\lib\security\cacerts 
security: Loaded SSL Root CA certificates from C:\Program Files (x86)\Java\jre7\lib\security\cacerts 
security: Obtain certificate collection in SSL Root CA certificate store {x2} 
security: Loading certificates from Deployment session certificate store 
security: Loaded certificates from Deployment session certificate store 
security: Loaded blacklisted.certs file: D:\AppData\LocalLow\Sun\Java\Deployment\security\blacklisted.certs 
security: SHA-256Certificate finger print: E0E41A12187A9196056D01CC1774D98FED57B0B6FD8A035C815C35073EB0A54B 
security: SHA-256Certificate finger print: 09ED6E991FC3273D8FEA317D339C02041861973549CFA6E1558F411F11211AA3 
security: SHA-256Certificate finger print: 18F8A7A151B4EC280898093DF5BD537CA099CC277405D0281DE0DADFD14420DA 
security: SHA-256Certificate finger print: 58D017279CD4DC63ABDDB196A6C9906C30C4E08783EAE8C1609954D69355596B 
security: Checking if SSL certificate is in Deployment permanent certificate store 
security: Obtain certificate collection in SSL Root CA certificate store {x4} 
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors 
    ... 
Caused by: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors 
    ... 
Caused by: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors 
    ... 
[try to load https://popcornmanager.com/manager/grid.1.2.8e.jar again] 
[try to load https://popcornmanager.com/manager/com/popcornmanager/datagrid/DataGrid.class as above but doesn't throw an exception, twice] 

java.lang.ClassNotFoundException: com.popcornmanager.datagrid.DataGrid 
    ... 
basic: load: class com.popcornmanager.datagrid.DataGrid not found. 
java.lang.ClassNotFoundException: com.popcornmanager.datagrid.DataGrid 
    ... 
Ignored exception: java.lang.ClassNotFoundException: com.popcornmanager.datagrid.DataGrid 
basic: Dialog type is not candidate for embedding 
security: Reset deny session certificate store 
basic: Removed progress listener: [email protected] 
security: Reset deny session certificate store 

Похоже, что какой-либо сертификат недействителен в соответствии с правилами Java, но v7u67 действительно считал его действительным. Я не могу сказать, является ли его сертификат HTTPS сертификата подписи кода (оба из которых действительны). HTTPS передает тесты проверки браузеров.

Испытание можно посмотреть по телефону https://popcornmanager.com/test/TestDataGrid.php.

То, что я заглянул в:

  • Пробовал Chrome, Firefox и IE на Windows, и все показывают одни и те же симптомы.
  • Пробные <applet> и <object> теги с и без .class в пути кода.
  • Просмотрел все ошибки, исправленные в обновлении, и ни один из них не объясняет это изменение в поведении.
  • Настройка минимальных параметров безопасности Java («Средний»), добавление сайта в список исключений и добавление сертификата HTTPS вручную в сертификаты Java (похоже, сертификат кода был автоматически добавлен, когда я нажал «Запомнить», в диалоговом окне безопасности).
+1

Результат, кажется, предлагает что проблема связана с сертификатом подписи кода, а не с сертификатом SSL. Вы подтвердили, что корневой ЦС сертификата подписи кода находится в списке известных ЦС в Java? Возможно, этот список изменился между обновлением 67 и обновлением 71. – VGR

+0

Конечный корень CA - это «AddTrust External CA Root», который я могу найти в списке корней 7u45 и 7u71 (у меня не было сразу 7u67). Список с использованием http://stackoverflow.com/questions/3508050/how-can- i-get-a-list-of-trusted-root-certificates-in-java. Записи идентичны. Есть ли способ лучше определить, какой сертификат вызывает проблему и почему? Должен ли я связаться с эмитентом трески сертификат e-sign (он по-прежнему действителен)? – coderforlife

+1

К сожалению. Я только заметил, что ваше самое верхнее исключение - это исключение SSLHandshakeException, которое указывает на проблему с сертификатом HTTPS, а не с сертификатом подписи кода. Однако я написал небольшую программу, которая дает ваш .jar URLClassLoader, и 'classLoader.loadClass (« com.popcornmanager.datagrid.DataGrid »)' отлично работал для меня, используя Java 1.7.0_72. – VGR

ответ

2

Просмотрите настройки панели настроек JAVA Advanced Settings и попробуйте проверить TLS 1.0 и отменить проверку TLS 1.1 и TLS 1.2.

Я борюсь с проблемой, когда ИТ-специалисты моего работодателя подталкивали JAVA JRE 8 u92 на мою машину разработки, и я больше не мог обращаться к приложению, которое мы разрабатываем и храним на тестовом сервере.

Это происходит со мной каждые 6-12 месяцев в течение нескольких лет, и я продолжаю удалять их последнюю JRE и переустанавливать версию 7u55, которая устраняет проблему. Это началось, когда они меня обновили от 7u55 до 7u71 или 72, насколько я помню.

На этот раз я хотел продолжить расследование и попытаться выяснить, могу ли я понять, почему он всегда ломается с более новой JRE. Я попробовал все, что мог найти, отправленный несколькими людьми, которые три года назад занимались нитями, и НИЧЕГО когда-либо работали, пока я не увидел анонимную запись от кого-то из Source Forge.

У меня были настройки TLS 1.0, 1.1 и 1.2, все проверены. Человек сказал теоретически, что это должно быть хорошо, и сервер должен был выбрать тот, который ему нужен. Но просто переустановка 1.1 и 1.2 заставила меня работать и работать!

Однако все еще существует большая тайна. Я дважды проверил, и ноутбук моего коллеги проверял TLS 1.0, 1.1 и 1.2, и она может просто запускать наши приложения с новым обновлением JRE 8u92! У нее такая же модель ноутбука, что и у той же ОС, той же версии IE11, той же версии JAVA, все те же настройки на панели JAVA, что и у меня (до изменения TLS), одинаковые настройки в IE, одинаковые доверенные сайты и т. Д. Мы не можем найти причин, по которым один из них ведет себя иначе, чем другой. У каждого, кто имел подобные проблемы, определенно следует попытаться снять флажки TLS1.1 и 1.2 на панели JAVA Advanced Settings. Благодарим вас за это анонимное лицо. Я провел 5 рабочих дней, сражаясь с этим на этот раз (и я сражался с ним каждый раз, когда они меня обновляли, пытаясь найти решение, отличное от того, чтобы вернуться к действительно старой 7u55 JRE!

Смежные вопросы