Mai 172016
 

OpenJDK 7 kam ohne Probleme mit 4 KBit breiten Diffie-Hellman-Schlüsselaustausch klar. Aus unbekannten Gründen ist das in OpenJDK 8 nicht mehr der Fall. Da Apache 2.4 die DH-Schlüsselbreite aus der Schlüsselbreite des SSL-Zertifikats übernimmt, kann man mit OpenJDK 8 keinen Kontakt mit Webservern aufnehmen, die eine entsprechend hohe SSL-Sicherheit bieten.

Installation von OpenJDK 8 unter Ubuntu 14.04 LTS

Unter Ubuntu 14.04 ist OpenJDK 8 noch nicht in der Distribution enthalten. Um hier ein OpenJDK 8 zu installieren, muss ein PPA-Repository in der Datei /etc/apt/sources.list ergänzt werden.

deb http://ppa.launchpad.net/openjdk-r/ppa/ubuntu trusty main

Das OpenJDK 8 wird durch folgende Befehlsfolge installiert:

sudo gpg --recv-keys EB9B1D8886F44E2A
sudo gpg --export EB9B1D8886F44E2A|apt-key add -
sudo apt-get update
sudo apt-get install openjdk-8-jdk

Die erste Befehlsfolge installiert den Repository Key lokal, um dem PPA-Repository vertrauen zu können.

Installation von Bouncy Castle

Bouncy Castle eine Sammlung kryptografischer Algorithmen und enthält einen sog. Security Provider, welcher diese Algorithmen für das JRE bereitstellt. Glücklicherweise stellt Ubuntu 14.04 Bouncy Castle schon in der Distribution bereit und muss somit nur noch installiert werden:

sudo apt-get install libbcprov-java

Jetzt muss die Library aus dem Paket im OpenJDK sichtbar gemacht werden. Das erfolgt sinnvollerweise über einen symbolischen Link:

cd /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext
sudo ln -s /usr/share/java/bcprov.jar .

Als abschließenden Schritt muss der Security Provider konfiguriert werden. Mit dem Lieblingseditor – z.B. vi – wird die Datei /etc/java-8-openjdk/security/java.security geöffnet:

sudo vi /etc/java-8-openjdk/security/java.security

Relativ am Anfang der Datei befinden sich mehrere Zeilen, die mit security.provider.X beginnen. Es sind die möglichen Security Provider, die priorisiert bei der Instanziierung abgearbeitet werden. An zweiter Stelle wird folgende Zeile eingefügt:

security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider

Alle nachfolgenden Zeilen müssen entsprechend umnummeriert werden.

Wichtig!
Die Zeile darf nicht an erster Stelle konfiguriert werden, weil intern im OpenJDK Abhängigkeiten nicht mehr aufgelöst werden können!

Nach diesen Schritten sollte es möglich sein, mit OpenJDK 8 eine sichere SSL-Verbindung aufbauen zu können.

Referenzen:

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)