Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Апплеты > подпись апплета |
Автор: 1sanek1 28.10.2008, 14:36 |
Хочу сказать сразу, спасибо автору, за следующую статью: ![]() http://forum.vingrad.ru/faq/topic-157929.html Но уменя, по этой теме возникло несколько вопросов и поскольку та статья закрыта, решил открыть свою тему. 1)Я правильно понимаю, что JAVA_HOME это переменная среды и её можно выстовить следующим образом: пуск - панель управления - производительность и обслуживание - система - дополнительно - параметры среды И там присвоить JAVA_HOME=С:\Program Files\Java\jdk1.6.0_05 (правильно я присваиваю значение и можно ли в место SDK, использовать jdk) 2)Я так понял что следующий задача, это прописать в комадной строке: С:\ProgramFiles\Java\jdk1.6.0_05\bin> $JAVA_HOME\jre\lib\security\java.policy (здесь уменя возникает ошбка"Системе не удаётся найти указанный путь"), после чего откроется файл, куда надо вписать следующий код: keystore "file:E:/TEMP/TEST/JAR/.keystore"; grant { permission java.io.FilePermission "C:/AUTOEXEC.BAT", "read", signedBy "Vingrad"; }; 3)Что означает keystore "file:E:/TEMP/TEST/JAR/.keystore";, это стандартный вариант (странный какой то путь ![]() grant{ permission java.io.FilePermission "C:/AUTOEXEC.BAT", "read", "write" , signedBy "Vingrad"; }; Буду очень благодарен за помощь! ![]() |
Автор: LSD 31.10.2008, 16:19 | ||
1. Да. Под SDK в данном случае и понимается JDK. 2. Надо просто создать или отредактировать файл С:\ProgramFiles\Java\jdk1.6.0_05\jre\lib\security\java.policy и добавить туда указанные строки. 3. Это означает что для приложений подписанных сертификатами из хранилища E:\TEMP\TEST\JAR\.keystore нужно установить следующие разрешения. Для того чтобы дать права на чтение и запись, надо писать так:
|
Автор: 1sanek1 1.11.2008, 12:50 | ||
Спасибо за помощь! Правдо, у меня ни чего не получается. ![]() Я пишу апплет, который если существует файл data.txt и в нем что то записанно, то данные извлекаются(Ip,port,...), если нет, вводит пользователь. Затем пользователь нажимает кнопку ок и данные записываются в файл data.txt. После чего, используя данные(Ip,port,...), коннектимся к базе данный и извлекаем координаты, по которым строим графики. Возникает следующая ошибка: C:\Program Files\Java\jdk1.6.0_05\bin>appletviewer grsf.html Exception in thread "AWT-EventQueue-1" java.security.AccessControlExceptio ess denied (java.io.FilePermission date.txt write) at java.security.AccessControlContext.checkPermission(AccessContro xt.java:323) at java.security.AccessController.checkPermission(AccessController 546) at java.lang.SecurityManager.checkPermission(SecurityManager.java: at java.lang.SecurityManager.checkWrite(SecurityManager.java:962) at java.io.FileOutputStream.<init>(FileOutputStream.java:169) at java.io.FileOutputStream.<init>(FileOutputStream.java:102) at Zapis.Zapiss(Zapis.java:28) at Main.actionPerformed(Main.java:146) at java.awt.Button.processActionEvent(Button.java:392) at java.awt.Button.processEvent(Button.java:360) at java.awt.Component.dispatchEventImpl(Component.java:4413) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispat ad.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchT java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispat ad.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.jav at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.jav at java.awt.EventDispatchThread.run(EventDispatchThread.java:121) Класс Zapis отвечает, соответственно за запись. Я так понимаю выскакивает ошибка, сообщающая о том, что нет прав записывать в файл. Я подписываю апплет так: 1)Создаю архив .jar: jar cvf rfa.jar Main.class Connect.class Izvlechenie.class Zapis.class SampleFrame.class 2)Создаю локльное хранилище: keytool -genkey -keystore .keystore -alias "Vingrad" ввожу пароль 123456 подтверждаю пароль 123456 затем нажимаю Entor и в конце ...[no]: yes затем опять Entor 3)Записываю в файл С:\ProgramFiles\Java\jdk1.6.0_05\jre\lib\security\java.policy следующее: keystore "file:E:/TEMP/TEST/JAR/.keystore"; grant { permission java.io.FilePermission "C:/AUTOEXEC.BAT", "read,write", signedBy "Vingrad"; }; Собственно и всё, HTML файл выглядит так:
Все операции произвожу в C:\Program Files\Java\jdk1.6.0_05\bin, тоесть по этому адресу можно найти .keystore Может ошибка возникает, из-за того, что путь указан не верно keystore "file:E:/TEMP/TEST/JAR/.keystore";? И ещё вопрос, надо ли давать права, когда я конекчусь к базе данных(использу JDBC драйвер) , если да то как? Я так понимаю надо, что то дописать в grant. |
Автор: LSD 1.11.2008, 13:51 |
В java.policy надо указать путь до твоего keystore, если он лежит в C:\Program Files\Java\jdk1.6.0_05\bin то и надо указывать C:\Program Files\Java\jdk1.6.0_05\bin\.keystore |
Автор: 1sanek1 1.11.2008, 14:03 |
Эх, что то не помогло.( Испрвил на keystore "file:C:\Program Files\Java\jdk1.6.0_05\bin\.keystore"; а ошибка та же самая( |
Автор: LSD 1.11.2008, 16:03 |
Слеши какие у тебя стоят и в примере ![]() |
Автор: 1sanek1 1.11.2008, 16:41 |
Не совсем понял каке слеши. ![]() Вообще вот такие: C:\Program Files\Java\jdk1.6.0_05\bin\.keystore попробовал так C:/Program Files/Java/jdk1.6.0_05/bin/.keystore, ошибка та же, а что означает "C:/AUTOEXEC.BAT", это случайно не влияет на права? |
Автор: Keyo 4.11.2008, 15:57 |
омг, человек, Ты так долго не можешь апплет подписать? Кошмар. Когда у меня такая задача была, делал по вот этой статье http://www.javaportal.ru/java/articles/trustapplet/trustapplet.html получилось с первого раза |
Автор: 1sanek1 6.11.2008, 19:42 |
Спасибо за помомощь! Правдо я уже нашёл как дать права, чуть иначе. Создаю файл политики, используя policytool после чего прописываю в java.security: policy.url.1=file:/C:/Program Files/Java/jdk1.6.0_05/jre/lib/security/java.policy policy.url.2=file:/C:/Test/mypolicy Если запускать апплет используя appletviewer, то всё работает замечательно. Только щас мучаюсь с другой проблемой, неполучается запустить с помощью браузера(почему то опять нет прав) , видимо когда я загружаю HTML через браузер, файл java.security не загружается и соответственно файл политики то же.. |
Автор: Keyo 6.11.2008, 23:18 |
1sanek1, мне приходилось подписывать jar архив каждый раз после ребилда, используя утилиту jarsigner |
Автор: 1sanek1 8.11.2008, 18:01 |
Спасибо, ещё раз за помощь!!! Keyo, а что такое ребилд, первый раз слышу такое слово? ![]() Я нашёл у себя ошибку, так что теперь апплет работает. Делал по следующей технологии: если зайти на сылку http://www.javable.com/tutorials/ , там будит "Учебник JavaTM Tutorial" зарегистрировшись, можно перейти на http://www.javable.com/tutorials/tjt/security1.2/tour1/index.html , там будит отличнай статья, как предаставить права на запись и чтение, для апплета. Сделал как там написанно и всё заработало.) С помощью программы Process Monitor http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx, обнаружил почему не предоставлялись права, когда я запускал с помощью браузера. Дело в том, что не запускался java.security, а точнее все корективы я вносил в C:\Program Files\Java\jdk1.6.0_05\jre\lib\security\java.securit а запускался C:\Program Files\Java\jre1.6.0_07\lib\security\java.securit просто у меня было два jre, а точнее даже три, но в процессах запускался именно jre1.6.0_07 |
Автор: Keyo 9.11.2008, 00:39 |
ребилд это ребилд ![]() |
Автор: 1sanek1 9.11.2008, 12:07 |
а..., ясненько, теперь буду знать.)) |