LINUX.ORG.RU

javaws: выдать AllPermission неподписанному jar

 ,


0

0

или «человек разумный против макакотехнологии».

В общем, есть один jnlp-файл, который запрашивает неограниченные разрешения для .jar-файла. Но этот .jar-файл не подписан, и поэтому вылетает исключение, что мол не дадим разрешений неподписанному jar-у.

Найденный в интернете способ написать

grant {
    permission java.security.AllPermission;
};
в javaws.policy у Oracle Java 8 и IcedTeaWeb/OpenJDK-8 эффекта не возымели ни там, ни там. Исключение по-прежнему вылетает и запустить приложение нельзя. А очень нужно.

Всякие добавления сайтов в списки исключений и прочие отключения проверок сертификатов в Java Control Panel тоже не помогли.

Как это победить?

★★★

Последнее исправление: utf8nowhere (всего исправлений: 2)

Ответ на: комментарий от utf8nowhere

какая ОС? какая в точности ошибка? дай экзепшен

если это не секретная jnlp и джарка, дай инструкцию как скачать и воспроизвести

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

Ubuntu 16.10

javaws из OpenJDK:

netx: Initialization Error: Could not initialize application. (Fatal: Application Error: Cannot grant permissions to unsigned jars. Application requested security permissions, but jars are not signed.)
net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Could not initialize application. The application has not been initialized, for more information execute javaws from the command line.
	at net.sourceforge.jnlp.Launcher.createApplication(Launcher.java:813)
	at net.sourceforge.jnlp.Launcher.launchApplication(Launcher.java:532)
	at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:936)
Caused by: net.sourceforge.jnlp.LaunchException: Fatal: Application Error: Cannot grant permissions to unsigned jars. Application requested security permissions, but jars are not signed.
	at net.sourceforge.jnlp.runtime.JNLPClassLoader$SecurityDelegateImpl.getClassLoaderSecurity(JNLPClassLoader.java:2393)
	at net.sourceforge.jnlp.runtime.JNLPClassLoader.setSecurity(JNLPClassLoader.java:321)
	at net.sourceforge.jnlp.runtime.JNLPClassLoader.initializeResources(JNLPClassLoader.java:734)
	at net.sourceforge.jnlp.runtime.JNLPClassLoader.<init>(JNLPClassLoader.java:285)
	at net.sourceforge.jnlp.runtime.JNLPClassLoader.createInstance(JNLPClassLoader.java:357)
	at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:429)
	at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:403)
	at net.sourceforge.jnlp.Launcher.createApplication(Launcher.java:805)
	... 2 more

javaws из Oracle JRE говорит, что Error: Unsigned application requesting unrestricted access to system.

если это не секретная jnlp, дай инструкцию как воспроизвести

jnlp могу дать, но jar-ы тянутся не с внешнего ресурса, так что воспроизвести не выйдет.

utf8nowhere ★★★
() автор топика
Ответ на: комментарий от stevejobs

Вот jnlp

<?xml version="1.0" encoding="UTF-8"?>

<jnlp spec="1.0+" codebase="http://localhost:8080/">
     <information>
        <title>JavaRConsole</title>
        <vendor>Sun Microsystems</vendor>
        <description kind="one-line">JavaRConsole Console Redirection Application</description>
        <description kind="tooltip">JavaRConsole Console Redirection Application</description>
        <description kind="short">
            JavaRConsole enables a user to view the video display of an
            Andromeda computer equipped with a service processor.  It also enables
            the user to redirect his local keyboard, mouse, CD-ROM and floppy drives to
            the remote computer to give him complete control over the remote machine.
        </description>
    </information>
    <security>
        <all-permissions/>
    </security>
    <resources>
        <j2se version="1.5+" initial-heap-size="32m"  max-heap-size="128m"/>
        <jar href="Java/JavaRConsole.jar"/>
        <jar href="Java/RedirLib.jar"/>
        <property name="DEBUGLIST" value="ui,general,video,threads,cdrom,floppy,dispatcher,hid,scsi,network,cli"/>
        <property name="SEV_WARN" value="ilomrc.log"/>
        <property name="SEV_CRIT" value="ilomrc.log"/>
    </resources>
    <resources os="Linux" arch="i386">
        <nativelib href="Java/linuxi386.jar"/>
    </resources>
    <resources os="Windows" arch="x86">
        <nativelib href="Java/win32.jar"/>
    </resources>
    <resources os="SunOS" arch="x86">
        <nativelib href="Java/solarisx86.jar"/>
    </resources>
    <resources os="SunOS" arch="sparc">
        <nativelib href="Java/solarissparc.jar"/>
    </resources>
    <application-desc>
        <argument>16</argument>
                <argument>localhost</argument>
        <argument>******</argument>
        <argument>******</argument>

    </application-desc>
</jnlp>
utf8nowhere ★★★
() автор топика
Ответ на: комментарий от utf8nowhere

попробуй найти файл типа /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security

там будет строчка типа «jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024», удали из нее MD5

если не поможет, попробуй открыть гуй чая по пути типа:

/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/itweb-settings

и в нём на вкладке policy settings жмякнуть кнопку «открыть редактор» (или как-то так), выделить допустим вариант «все апплеты» и выставить галку execute unowned code

настоящее решение - не пользоваться всей этой криокамерной говниной :)

stevejobs ★★★★☆
()
Ответ на: комментарий от utf8nowhere

еще неплохо бы увидеть выхлоп относительно твоей джарки

jarsigner -verify -J-Djava.security.debug=jar устаревшая-говнина.jar

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Ничего не помогло.

Почему Java не даёт мне делать то, что я хочу?

настоящее решение - не пользоваться всей этой криокамерной говниной

Ничего другого для «поиграться» у меня нет.

utf8nowhere ★★★
() автор топика
Ответ на: комментарий от stevejobs
$ jarsigner -verify -J-Djava.security.debug=jar JavaRConsole.jar 
jar: beginEntry META-INF/MANIFEST.MF
jar: done with meta!
jar: nothing to verify!
jar: beginEntry META-INF/MANIFEST.MF
jar: beginEntry META-INF/ORACLE_J.SF
jar: processEntry: processing block
jar: beginEntry META-INF/ORACLE_J.RSA
jar: processEntry: processing block
jar: Signature Block Certificate: [
[
  Version: V3
  Subject: CN=Oracle Corporation, OU=Java Software Code Signing, O=Sun Microsystems Inc
  Signature Algorithm: SHA1withDSA, OID = 1.2.840.10040.4.3

  Key:  Sun RSA public key, 1024 bits
  modulus: 126736735906127446617017451530770884230135396576195157301080131807546968289689905625683858792249781584735058142821565791604653064000443456036209975564300806621497684329253761983224767311755476710132856738469865587353227243456923698855634045540858994241905046383116198587381639648842391478764958448225910184331
  public exponent: 65537
  Validity: [From: Mon Apr 11 10:00:43 MSK 2011,
               To: Thu Apr 14 09:00:43 MSK 2016]
  Issuer: CN=JCE Code Signing CA, OU=Java Software Code Signing, O=Sun Microsystems Inc, L=Palo Alto, ST=CA, C=US
  SerialNumber: [    0339]

Certificate Extensions: 5
[1]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 65 E2 F4 86 C9 D3 4E F0   91 4E 58 A2 6A F5 D8 78  e.....N..NX.j..x
0010: 5A 9A C1 A6                                        Z...
]
]

[2]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  DigitalSignature
  Non_repudiation
  Key_Encipherment
]

[3]: ObjectId: 2.16.840.1.113730.1.1 Criticality=false
NetscapeCertType [
   Object Signing
]

[4]: ObjectId: 2.5.29.17 Criticality=false
SubjectAlternativeName [
  RFC822Name: bradford.wetmore@oracle.com
]

[5]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: E5 81 EB 84 00 F7 5A 8F   60 41 91 32 70 59 A6 EC  ......Z.`A.2pY..
0010: D0 20 CD 45                                        . .E
]
]

]
  Algorithm: [SHA1withDSA]
  Signature:
0000: 30 2C 02 14 55 A1 08 25   AC 90 CC 83 11 B3 B0 61  0,..U..%.......a
0010: 52 EE 81 CC 6F 32 E2 A1   02 14 4A 9B 3B 13 50 7F  R...o2....J.;.P.
0020: 45 23 21 EA 8A 1E 6B F9   86 C0 A5 F8 89 57        E#!...k......W

]
jar: Signature File: Manifest digest SHA-256
jar:   sigfile  ee6a21bde720cac976f8dcad224c1e00c54757f4352ca26ae56a40dcb34d5d85
jar:   computed ee6a21bde720cac976f8dcad224c1e00c54757f4352ca26ae56a40dcb34d5d85
jar:
jar: processSignature signed name = sun/security/ec/ECKeyPairGenerator.class
jar: processSignature signed name = sun/security/ec/SunEC$1.class
jar: processSignature signed name = sun/security/ec/NamedCurve.class
jar: processSignature signed name = sun/security/ec/ECParameters.class
jar: processSignature signed name = sun/security/ec/ECDHKeyAgreement.class
jar: processSignature signed name = sun/security/ec/ECKeyFactory.class
jar: processSignature signed name = sun/security/ec/ECDSASignature$SHA256.class
jar: processSignature signed name = sun/security/ec/CurveDB.class
jar: processSignature signed name = source_tips
jar: processSignature signed name = sun/security/ec/ECDSASignature.class
jar: processSignature signed name = sun/security/ec/ECDSASignature$SHA384.class
jar: processSignature signed name = sun/security/ec/ECDSASignature$SHA1.class
jar: processSignature signed name = sun/security/ec/ECDSASignature$Raw.class
jar: processSignature signed name = sun/security/ec/ECPrivateKeyImpl.class
jar: processSignature signed name = sun/security/ec/ECDSASignature$SHA512.class
jar: processSignature signed name = sun/security/ec/ECDSASignature$SHA224.class
jar: processSignature signed name = sun/security/ec/SunEC.class
jar: processSignature signed name = sun/security/ec/SunECEntries.class
jar: processSignature signed name = sun/security/ec/ECPublicKeyImpl.class
jar: done with meta!
jar: beginEntry sun/security/ec/SunEC.class
jar: Manifest Entry: sun/security/ec/SunEC.class digest=SHA-256
jar:   manifest b232bcd0f08755c2ddd0d1debd49b475f88c3876e4b57ed0d31378a3012547dd
jar:   computed b232bcd0f08755c2ddd0d1debd49b475f88c3876e4b57ed0d31378a3012547dd
jar:
jar: beginEntry sun/security/ec/SunEC$1.class
jar: Manifest Entry: sun/security/ec/SunEC$1.class digest=SHA-256
jar:   manifest 15820a3fc0a513b4dba31cd22048b635338e1f66d9239fe75d5976c1944ad6c6
jar:   computed 15820a3fc0a513b4dba31cd22048b635338e1f66d9239fe75d5976c1944ad6c6
jar:
jar: beginEntry sun/security/ec/SunECEntries.class
jar: Manifest Entry: sun/security/ec/SunECEntries.class digest=SHA-256
jar:   manifest cb41b1f2d1fdc152e15deb8c1a5983a7588e07054d2cfa7a0928d1aed894f877
jar:   computed cb41b1f2d1fdc152e15deb8c1a5983a7588e07054d2cfa7a0928d1aed894f877
jar:
jar: beginEntry sun/security/ec/CurveDB.class
jar: Manifest Entry: sun/security/ec/CurveDB.class digest=SHA-256
jar:   manifest 8671ec7939876d76abeaf6d22f2304a97cea1dc0ee523fd3667e68fb9dd1b5b4
jar:   computed 8671ec7939876d76abeaf6d22f2304a97cea1dc0ee523fd3667e68fb9dd1b5b4
jar:
jar: beginEntry sun/security/ec/NamedCurve.class
jar: Manifest Entry: sun/security/ec/NamedCurve.class digest=SHA-256
jar:   manifest 78704fa7b2c95c0a5e0fc9ffdd2bac982a9cd6b37714646572ed7dc9e90844d9
jar:   computed 78704fa7b2c95c0a5e0fc9ffdd2bac982a9cd6b37714646572ed7dc9e90844d9
jar:
jar: beginEntry sun/security/ec/ECParameters.class
jar: Manifest Entry: sun/security/ec/ECParameters.class digest=SHA-256
jar:   manifest 72560d65a7cbd7fb47648081be40aa0026d3391a0fe56839c18fe6db27a63efa
jar:   computed 72560d65a7cbd7fb47648081be40aa0026d3391a0fe56839c18fe6db27a63efa
jar:
jar: beginEntry sun/security/ec/ECKeyFactory.class
jar: Manifest Entry: sun/security/ec/ECKeyFactory.class digest=SHA-256
jar:   manifest 46ac8877773bda5a1122949c7dedaff52c7275b3e0954aa07fe3d0fcb5052500
jar:   computed 46ac8877773bda5a1122949c7dedaff52c7275b3e0954aa07fe3d0fcb5052500
jar:
jar: beginEntry sun/security/ec/ECPublicKeyImpl.class
jar: Manifest Entry: sun/security/ec/ECPublicKeyImpl.class digest=SHA-256
jar:   manifest 5205903ffb6162fc7da331fad0e756bc4f9e8f4bcc8722451de54a94e53c335e
jar:   computed 5205903ffb6162fc7da331fad0e756bc4f9e8f4bcc8722451de54a94e53c335e
jar:
jar: beginEntry META-INF/manifest.mf
jar: beginEntry META-INF/zigbert.sf
jar: processEntry: processing block
jar: beginEntry META-INF/zigbert.rsa
jar: processEntry: processing block
jar: processEntry caught: java.security.SignatureException: Public key check failed. Disabled key used: 1023 bit RSA
jar: done with meta!
jar: nothing to verify!

jar is unsigned.
utf8nowhere ★★★
() автор топика
Ответ на: комментарий от utf8nowhere

читать умеешь? :) Disabled key used: 1023 bit RSA

пойди в java.security (и для jdk, и для jre) и убери из той строчки всё про «RSA < 1024»

браузер, конечно, нужно перезапустить. И на всякий случай sudo killall java.

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от utf8nowhere

Почему Java не даёт мне делать то, что я хочу?

потому что она считает, что такая слабая подпись опасна, и лох может запустить чего-нибудь не то

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Убрал про MD5 и RSA < 1024.

IcedTea запускает, а Oracle — нет (у него тоже убрал эти ограничения, теперь там какой-то другой эксепшн).

Теперь jarsigner (он, как я понял, из oracle jre) пишет

jar verified.

Warning: 
This jar contains entries whose signer certificate has expired. 
This jar contains signatures that does not include a timestamp. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (2010-05-16) or after any future revocation date.

utf8nowhere ★★★
() автор топика
Последнее исправление: utf8nowhere (всего исправлений: 1)
Ответ на: комментарий от stevejobs

Будем считать что да. Если нужно будет разбираться с Oracle, я уже разберусь сам или скастую и напишу конкретный эксепшн. Спасибо.

utf8nowhere ★★★
() автор топика
Ответ на: комментарий от utf8nowhere

Будущее жабы - это OpenJDK. Оракловская проприетарная сборка - легаси и проприетарщина для «особых клиентов». Пользоваться оракловской сборкой - это как сидеть на Windows 98, когда уже вышла XP :)

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

В Java Control Panel, вкладке Advanced, для «Perform signed code certificate revocation checks on» выставил «Do not check (not recommended)». Теперь оракловская жава тоже запускает.

utf8nowhere ★★★
() автор топика
Ответ на: комментарий от utf8nowhere

У оракловой жабы сейчас могут быть сильно лучше шрифты. Нужно если используешь какие-то приложухи на жабе, типа Eclipse и IDEA. Если да - лучше установить все-таки не JRE, а JDK, им это нужно. Если ничем таким не пользуешься - смело сноси к чертям их

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

С OpenJDK 8, ЕМНИП, были фризы IDEA. В багтрекере рекомендовали поставить вместо OpenJDK оракл. Если я ничего не путаю, я с этим всем больше года назад возился.

utf8nowhere ★★★
() автор топика
Последнее исправление: utf8nowhere (всего исправлений: 1)
Ответ на: комментарий от utf8nowhere

в багтрекере всегда рекомендуют Оракл, потому что - а вдруг поможет? И фиксить ничего не надо :)

сейчас с Идеей сразу идет «правильная» сборка, максимально вточенная для Идеи, нужно использовать её

олсо, для OpenJDK8 для Убунты есть фикс на шрифты: https://launchpad.net/~no1wantdthisname/ archive/ubuntu/openjdk-fontfix

олсо, уже вышла Java 9

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Каждый раз, когда хочется написать издевательский комментарий про эти страдания, осознаю, что, вероятно, так работает намного больше вещей, чем я подозреваю и кто-то же должен это делать. Спасибо всем безымянным энтерпрайзным джавистам. Ребята, следующий бокал - за вас!

cdshines ★★★★★
()
Ответ на: комментарий от cdshines

:)

автор хочет странного - использовать удалённый алгоритм. Какбе, удобство людей, хотящих странного, мало кого беспокоит

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Я хочу использовать удалённый доступ, а не алгоритм.

utf8nowhere ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.