Java Web Start (JWS) сообщает, что не может запустить мое приложение, потому что файл jar не подписан:
Error: Unsigned application requesting unrestricted access to system
Unsigned resource: .../dynaccn.jar
Но файл jar подписан:
$ jarsigner -keystore ... dynaccn.jar idv
$ jar tf dynaccn.jar
META-INF/MANIFEST.MF
META-INF/IDV.SF
META-INF/IDV.RSA
META-INF/
edu/
edu/ucar/
edu/ucar/unidata/
edu/ucar/unidata/dynaccn/
App$1.class
...
$ jarsigner -verbose -certs -verify dynaccn.jar
28325 Tue Aug 17 09:41:58 MDT 2010 META-INF/MANIFEST.MF
28404 Tue Aug 17 09:41:58 MDT 2010 META-INF/IDV.SF
2880 Tue Aug 17 09:41:58 MDT 2010 META-INF/IDV.RSA
0 Tue Aug 17 09:41:58 MDT 2010 META-INF/
0 Mon Aug 16 10:10:34 MDT 2010 edu/
0 Mon Aug 16 10:10:34 MDT 2010 edu/ucar/
0 Mon Aug 16 10:10:34 MDT 2010 edu/ucar/unidata/
0 Mon Aug 16 10:10:34 MDT 2010 edu/ucar/unidata/dynaccn/
...
sm 486 Mon Aug 16 10:10:34 MDT 2010 App$1.class
X.509, CN=University Corporation for Atmospheric Research, OU=UNIDATA, O=University Corporation for Atmospheric Research, L=Boulder, ST=Colorado, C=US
[certificate will expire on 2/6/11 4:59 PM]
X.509, CN=Thawte Code Signing CA, O=Thawte Consulting (Pty) Ltd., C=ZA
[certificate is valid from 8/5/03 6:00 PM to 8/5/13 5:59 PM]
[KeyUsage extension does not support code signing]
X.509, [email protected], CN=Thawte Premium Server CA, OU=Certification Services Division, O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA
[certificate is valid from 7/31/96 6:00 PM to 12/31/20 4:59 PM]
[CertPath not validated: null]
...
jar verified.
Warning:
This jar contains entries whose signer certificate's KeyUsage extension doesn't allow code signing.
This jar contains entries whose signer certificate will expire within six months.
This jar contains entries whose certificate chain is not validated.
This jar contains signed entries that's not signed by alias in this keystore.
и у JWS, и у моего браузера есть сертификат "Thawte Premium Server CA".
Проблема возникает, даже если кеш JWS и область загрузки браузера пусты.
Я не верю, что сообщение «KeyUsage» актуально, потому что 1) та же цепочка сертификатов используется для другого приложения, которое запускается успешно; и 2) документация, которую я прочитал, указывает на то, что ЦС для подписи кода Thawte используется только для проверки сертификата UNIDATA, а не для подписи кода.
Моя среда - Linux 2.6.27.41-170.2.117.fc10.x86_64, Firefox 3.6.8 (i686) и Java 1.7.0-ea.
Почему не запускается это приложение?
ОБНОВЛЕНИЕ: я обнаружил, что приложение запускается, если атрибут «codebase» в файле JNLP ссылается на локальный каталог, но не на URL-адрес, лежащий в основе аутентификации пользователя. В последнем случае javaws (1) интерпретирует веб-страницу аутентификации как файл JNLP (с очевидными результатами), если вызывается из командной строки. Если вызывается сценарием «deployJava» с аутентифицирующей пользователя веб-страницы (чтобы в браузере был файл cookie сеанса), то javaws (1) сообщает, что приложение не подписано. Я нахожу оба этих режима отказа странными, поскольку в документации javaws (1) говорится, что он понимает аутентификацию пользователей на веб-страницах, а файл jar подписан.
lazy=true
в значительной степени решило проблемы. - person Pram   schedule 17.08.2010