Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.
 
Inhaltsverzeichnis
Vorwort
1 Neues in Java 8 und Java 7
2 Fortgeschrittene String-Verarbeitung
3 Threads und nebenläufige Programmierung
4 Datenstrukturen und Algorithmen
5 Raum und Zeit
6 Dateien, Verzeichnisse und Dateizugriffe
7 Datenströme
8 Die eXtensible Markup Language (XML)
9 Dateiformate
10 Grafische Oberflächen mit Swing
11 Grafikprogrammierung
12 JavaFX
13 Netzwerkprogrammierung
14 Verteilte Programmierung mit RMI
15 RESTful und SOAP-Web-Services
16 Technologien für die Infrastruktur
17 Typen, Reflection und Annotationen
18 Dynamische Übersetzung und Skriptsprachen
19 Logging und Monitoring
20 Sicherheitskonzepte
21 Datenbankmanagement mit JDBC
22 Java Native Interface (JNI)
23 Dienstprogramme für die Java-Umgebung
Stichwortverzeichnis

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Java SE 8 Standard-Bibliothek von Christian Ullenboom
Das Handbuch für Java-Entwickler
Buch: Java SE 8 Standard-Bibliothek

Java SE 8 Standard-Bibliothek
Pfeil 20 Sicherheitskonzepte
Pfeil 20.1 Zentrale Elemente der Java-Sicherheit
Pfeil 20.1.1 Sichere Java Virtual Machine
Pfeil 20.1.2 Der Sandkasten (Sandbox)
Pfeil 20.1.3 Security-API der Java SE
Pfeil 20.1.4 Cryptographic Service Providers
Pfeil 20.2 Sicherheitsmanager (Security-Manager)
Pfeil 20.2.1 Der Sicherheitsmanager bei Applets
Pfeil 20.2.2 Sicherheitsmanager aktivieren
Pfeil 20.2.3 Rechte durch Policy-Dateien vergeben
Pfeil 20.2.4 Erstellen von Rechtedateien mit dem grafischen Policy-Tool
Pfeil 20.2.5 Kritik an den Policies
Pfeil 20.3 Signierung
Pfeil 20.3.1 Warum signieren?
Pfeil 20.3.2 Digitale Ausweise und die Zertifizierungsstelle
Pfeil 20.3.3 Mit keytool Schlüssel erzeugen
Pfeil 20.3.4 Signieren mit jarsigner
Pfeil 20.4 Kryptografische Hashfunktion
Pfeil 20.4.1 Die MDx-Reihe
Pfeil 20.4.2 Secure Hash Algorithm (SHA)
Pfeil 20.4.3 Mit der Security-API einen Fingerabdruck berechnen
Pfeil 20.4.4 Die Klasse MessageDigest
Pfeil 20.5 Verschlüsseln von Daten(-strömen) *
Pfeil 20.5.1 Den Schlüssel, bitte
Pfeil 20.5.2 Verschlüsseln mit Cipher
Pfeil 20.5.3 Verschlüsseln von Datenströmen
Pfeil 20.6 Zum Weiterlesen
 
Zum Seitenanfang

20.3Signierung Zur vorigen ÜberschriftZur nächsten Überschrift

Wir wollen uns in diesem Kapitel mit einigen Werkzeugen beschäftigen, die zur Signierung von Java-Archiven vom JDK angeboten werden. Zum Signieren von Applikationen sowie von Applets und zur Vergabe der Zugriffsrechte und -beschränkungen stellt Oracle die Dienstprogramme keytool, jarsigner und policytool bereit.

 
Zum Seitenanfang

20.3.1Warum signieren? Zur vorigen ÜberschriftZur nächsten Überschrift

Die Sandbox einer Java-VM ist sinnvoll, damit Amok laufende Applikationen keine ernsthaften Schäden anrichten können. Es gibt aber genauso gut Szenarien, in denen es nützlich ist, Applets mehr Freiräume einzuräumen. Gründe können sein: Eingebundene native Bibliotheken sollen eine Authentifizierung über das Ohrläppchen eines Anwenders vornehmen oder auf die Festplatten zum Caching zurückgreifen können.

 
Zum Seitenanfang

20.3.2Digitale Ausweise und die Zertifizierungsstelle Zur vorigen ÜberschriftZur nächsten Überschrift

Wenn nun das Java-Programm diesen Zugriff eigentlich nicht machen darf, aber möchte, was ist die Lösung? Die Antwort ist, Programme mit einem Autor zu verbinden und die Programme dann auszuführen, wenn wir dem Autor vertrauen. Zentral bei diesem Spiel ist die sichere Identifizierung des Autors. Das übernimmt eine Zertifizierungsstelle (Certificate Authority, CA), die digitale Signaturen ausstellt, um eine Person oder Organisation zu identifizieren. Ein Programmstück wird dann mit einer Signatur verbunden, sodass immer der Autor bekannt ist, wenn kritische Programmstellen Unheil anrichten und ich dem Autor so richtig meine Meinung sagen möchte.

Die Zertifizierungsstelle ist ein kleiner Schwachpunkt in diesem Szenario, denn erst einmal hindert uns keiner daran, selbst die Zertifizierungsstelle zu spielen und das Zertifikat auf Mickey Mouse auszustellen – das machen wir auch gleich. Dem Anwender obliegt die Verantwortung, nur Zertifikate von wirklich autorisierten Stellen anzunehmen. Die Bundesnetzagentur akkreditiert Zertifizierungsstellen. Hier gibt es einige bekannte CAs wie VeriSign, CAcert oder Thawte.

Das Zertifikat selbst verbindet die Person mit einem kryptografischen Schlüssel und weiteren Informationen wie Seriennummer, Aussteller und Lebensdauer. Dem Schlüssel kommt die größte Bedeutung zu, denn damit wird das Java-Archiv signiert. Der wichtigste Standard für Zertifikate ist der ITU-T-Standard X.509. Die Zertifikate sind in ASN.1 (Abstract Syntax Notation One) kodiert.

 
Zum Seitenanfang

20.3.3Mit keytool Schlüssel erzeugen Zur vorigen ÜberschriftZur nächsten Überschrift

Das Programm keytool erzeugt öffentliche und private Schlüssel und legt sie in einer passwortgeschützten und verschlüsselten Datei ab. Die Datei hat standardmäßig den Namen .keystore und befindet sich im Benutzerverzeichnis des Anwenders. Mit dem Programm keytool lassen sich neben der Schlüsselgenerierung auch Zertifikate importieren, Zertifikatsanforderungen ausstellen und Schlüssel als vertrauenswürdig festlegen.

Möchten wir einen Schlüssel erstellen, rufen wir das Programm keytool mit der Option genkey auf. Daneben gibt die Option -alias einen Namen für den Schlüsselinhaber an. Nehmen wir an, dass das JDK-Programm keytool (zum Beispiel im Verzeichnis C:\Program Files\Java\jdk1.8.0\bin) im Suchpfad eingebunden ist.

$ keytool -genkey -alias CUllenboom

Anschließend fragt keytool nach dem Passwort des Schlüsselspeichers und erfragt weitere Angaben zum Inhaber. Mit diesen Informationen erzeugt das Programm ein Schlüsselpaar mit einem selbstzertifizierenden Zertifikat. Bei diesem speziellen Zertifikat sind Aussteller und Inhaber identisch.

Option

Bedeutung

-genkey

Erzeugung eines Schlüsselpaars

-import

Importieren eines Zertifikats

-selfcert

Erstellung eines selbstinitiierten Zertifikats

-certreq

Export einer Zertifikatsanforderung; sie kann als Datei an eine CA geschickt werden.

-export

Export eines Zertifikats. Dieses kann dann von einem anderen Benutzer importiert und als vertrauenswürdig deklariert werden.

-list

Listet alle Zertifikate und Schlüssel auf.

-delete

Entfernt ein Schlüsselpaar.

-help

Zeigt eine kurze Hilfe an.

Tabelle 20.2Optionen von keytool

Die Angabe der Optionen ist immer dann sinnvoll, wenn die Standardeinstellungen unpassend sind. Über die Optionen lassen sich die Algorithmen zur Verschlüsselung und Schlüsselgenerierung ebenso angeben wie eine Pfadangabe des Schlüsselspeichers oder die Gültigkeitsdauer.

 
Zum Seitenanfang

20.3.4Signieren mit jarsigner Zur vorigen ÜberschriftZur nächsten Überschrift

Das Dienstprogramm jarsigner signiert und verifiziert JAR-Archive. Dazu erstellt jarsigner zunächst einen Hashcode des Archivs und verschlüsselt ihn anschließend mit dem privaten Schlüssel des Nutzers. Das Zertifikat und der öffentliche Schlüssel werden dem Archiv beigelegt.

[zB]Beispiel

Signiere das Archiv archiv.jar mit dem Schlüsselspeicher (Keystore) von CUllenboom.

$ jarsigner archiv.jar CUllenboom

Die Anwendung mit jarsigner fügt dem Archiv zwei weitere Dateien hinzu: eine Signatur-Datei mit der Endung .sf und eine Signaturblock-Datei mit der Endung .dsa. Die Signatur-Datei enthält eine Liste aller Dateien im Archiv und speichert zudem den Hashwert zu einer mit aufgeführten Hashfunktion. Diese Signatur-Datei wird dann mit dem privaten Schlüssel des Signierers signiert und zusammen mit dem verschlüsselten Zertifikat des Signierers in der Signaturblock-Datei gespeichert.

[zB]Beispiel

Wir möchten wissen, ob ein Archiv verifiziert ist:

$ jarsigner -verify archiv.jar

 


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Java SE 8 Standard-Bibliothek Java SE 8 Standard-Bibliothek
Jetzt Buch bestellen

 Buchempfehlungen
Zum Rheinwerk-Shop: Java ist auch eine Insel
Java ist auch eine Insel


Zum Rheinwerk-Shop: Professionell entwickeln mit Java EE 8
Professionell entwickeln mit Java EE 8


Zum Rheinwerk-Shop: Besser coden
Besser coden


Zum Rheinwerk-Shop: Entwurfsmuster
Entwurfsmuster


Zum Rheinwerk-Shop: IT-Projektmanagement
IT-Projektmanagement


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2018
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 
Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern