я могу проверить, доверен ли сертификат апплета Java перед запуском моего апплета? - PullRequest
6 голосов
/ 04 мая 2011

У меня есть подписанный апплет на сайте.Из-за этого появляется диалоговое окно безопасности Java, и пользователь должен предоставить разрешение апплету, прежде чем он сможет выполнить свою работу.Я хочу сделать следующее:

  • Я хочу, чтобы веб-сайт объяснил пользователю диалоговое окно безопасности до его появления.На странице будет показан текст с пояснениями в div, и через несколько секунд появится диалоговое окно безопасности.
  • Если пользователь уже разрешил сертификат в предыдущем сеансе, он должен просто запустить апплет без каких-либо дополнительныхДиалог.

Проблема в том, что диалог безопасности появляется, как только апплет внедряется в страницу.Я могу отложить встраивание, но нет способа проверить его разрешения у самого апплета, поскольку он должен сделать это до того, как загрузится.

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

Спасибо.

1 Ответ

0 голосов
/ 05 мая 2011

Вы можете проверить сертификат и подпись файла JAR программным способом, так же, как это сделала бы JVM при загрузке апплета.Это будет непросто, но, по крайней мере, на первый взгляд, вам придется сделать это:

  1. Используйте скрытый апплет для загрузки ваших JAR-файлов и проверки их сертификатов, напримерзритель апплета будет.Вы можете сделать это вручную, используя пакет java.security.cert.Лучшим способом выяснить, как это сделать, был исходный код JarSigner , особенно verifyJar().Что-то вроде:

    // download the JAR
    URL url = new URL("jar:http://mywebsite.com/myjar.jar!/");
    JarURLConnection jarConnection = (JarURLConnection)url.openConnection();
    // get the certificates and other security stuff
    CodeSigners[] codeSigners = jarConnection.getJarEntry().getCodeSigners();
    Certificate[] certificates = jarConnection.getJarEntry().getCertificates();
    // verify the signatures
    // don't know the code, but you can analyze JarSigner example at http://download.oracle.com/javase/tutorial/security/toolfilex/rstep2.html
    
  2. Используйте LiveConnect (может быть, что-то еще?), Чтобы установить cookie, чтобы вы знали, «если пользователь уже разрешил сертификат в предыдущемсеанс ".

  3. Запустите ваш апплет, возможно, в зависимости от результатов (1) магазинов в файлах cookie, созданных в (2).

Я не дал этого, чтомного думал, так что может быть лучше.Удачи, и отправьте обратно!

...