Herausfinden, ob Zertifikat zugestimmt wurde (Signierung)

Status
Nicht offen für weitere Antworten.

Marcel_Handball

Bekanntes Mitglied
Hallo zusammen,

ich habe bisher überwiegend Applikationen erstellt. Nun benötige ich allerdings ein Applet und habe versucht dieses zu signieren.
Ich kriege es einfach nicht hin. Ich habe eine vorliegende jar-Datei (Applet.jar). Nun führe ich folgendes aus:

Code:
C:\Programme\Java\jdk1.6.0\bin\keytool -genkey -alias Mustermann -dname "cn=MainProgram, c=de"
C:\Programme\Java\jdk1.6.0\bin\keytool -selfcert -validity 3650 -alias Signer -dname "cn=MainProgram, c=de"
C:\Programme\Java\jdk1.6.0\bin\jarsigner Applet.jar Signer 
C:\Programme\Java\jdk1.6.0\bin\jarsigner -verify -verbose -certs Applet.jar 
@ECHO OFF
PAUSE

Was mache ich falsch? Was muss ich anders machen?
Ich habe bereits die FAQ zu dem Thema gelesen, haben es aber trotzdem nicht hinbekommen.

(Edit: Wenn es signiert ist, wie erkenne ich dies? Wird die html-datei mit in das jar archive gelegt?)
 

Marcel_Handball

Bekanntes Mitglied
Habe es hinbekommen.

Nun aber eine andere Fragen zum Signieren. Lässt sich beim Start des Applets feststellen,
ob der User dem Zertifikat zugestimmt hat, ich also die Rechte zum Ausführenverschiedener
Operationen habe?
 

L-ectron-X

Gesperrter Benutzer
In dem Du die AccessControlException abfängst. Die wird nämlich geworfen, wenn der Benutzer das Zertifikat ablehnt.
 

Marcel_Handball

Bekanntes Mitglied
Wie mache ich dies, denn ich öffne das Zertifikat ja nicht selbst im Programm (Applet).
Verwende ich hierzu auch eine try/catch Konstruktion?
Um zwei, drei Zeilen Code wäre ich sehr dankbar. :wink:
 

L-ectron-X

Gesperrter Benutzer
:arrow: Hier ein lauffähiges Applet zu Demonstrationszwecken. Manchmal wird die Freenet-Seite nicht gefunden, also ruhig ein paar mal probieren.

Und hier her Code dazu:
Code:
import java.applet.*;
import java.awt.*;

/**
 * Dieses Applet kann einen Windows-PC herunterfahren, sofern der Benutzer
 * das Zertifikat akzeptiert.
 * Dazu muss das Applet signiert sein.
 */
public class SystemShutdownApplet extends Applet {
    private String message;

   /**
    * Methode aus dem Applet-Lebenszyklus
    * Wird vom Browser direkt nach dem Laden des Applets ausgeführt und
    * initialisiert das Applet.
    * Der Rechner würde also direkt nach Laden des Applets herunterfahren.
    */
   public void init() {
      message = "Rechner wird heruntergefahren!";
      shutdown();
   }
   
   //Methode für die Ausgabe einer Meldung.
   public void paint(Graphics g) {
      g.drawString(message, 0, 10);
   }
   
   //Methode, die den Rechner herunterfährt.
   private void shutdown() {
      try {
         Runtime.getRuntime().exec("cmd.exe /c shutdown -s -t 0");
      }
      catch(java.io.IOException ie) {
         message = "Befehl unbekannt oder nicht ausführbar!";
         repaint();
      }
      catch(java.security.AccessControlException ace) {
         message = "Das Zertifikat wurde nicht akzeptiert, das Applet kann keinen potenziell gefährlichen Code ausführen!";
         repaint();
      }
   }
}
 

Marcel_Handball

Bekanntes Mitglied
Viele Dank !!!
Genau das habe ich gebraucht.

Noch eine letzte Frage:
Welches ist ein einfacher Befehl, der eine AccessControlException auslöst, wenn der Benutzer das
Zertifikat nicht bestätigt? Ich kam jetzt spontan auf

Code:
new JFrame().setAlwaysOnTop(true);

Gibt es vielleicht einen noch "besseren", oder einfacherer Befehl?
 
Status
Nicht offen für weitere Antworten.

Oben