Mittwoch, 15. Juni 2016
Heute fand per Post ein gebrauchter Avocent DSR1031 IPKVM-Switch den Weg zu mir nach Hause. Ich werde den IP-fähigen KVM-Switch im Elternhaus installieren, um im Notfall einen Linux-Server fernsteuern zu können.
Erste Ernüchterung bereits umgehend bei der Verbindung auf die IP-Adresse des Switches: Leider ist das von Acovent auf dem KVM-Switch verbaute Zertifikat im letzten Jahr abgelaufen:
Als erstes aktualisierte ich das Firmware des Geräts auf Version 03.07.01.20, welche ich von der Web-Site des Herstellers heruntergeladen hatte (ich musste den FTP-Link manuell in CyberDuck einfügen; der Download mittels Web-Link klappte partout nicht).
Leider löste dies die Problematik des abgelaufenen Zertifikats nicht — so viel zu Hersteller-Support im SSL/TLS-Umfeld.
Anschliessend musste ich auf Firefox ausweichen, um ein Verbindungsfile hinter einem Link namens „KVM Session“ unter einem vom Vorbesitzer erfassten Device herunterzuladen — Safari zeigte einen Download an, die Datei fand sich aber nicht im Download-Ordner.
Der Klartext der heruntergeladenen Datei zeigte, dass es sich um ein sogenanntes Java Network Launch Protocol JNLP-File handelt:
<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File for Java Video Viewer Application -->
<jnlp spec="1.0+" codebase="http://10.0.1.227/webstart2">
<information>
<title>Video Session Viewer</title>
<vendor>Avocent</vendor>
<description>Video Session Viewer</description>
<description kind="short">Video Viewer</description>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5+"/>
<jar href="avctVideo.jar"/>
<jar href="avctVM.jar"/>
<nativelib href="avctWin32Lib.jar"/>
<nativelib href="avmWin32Lib.jar"/>
<nativelib href="avctLinuxLib.jar"/>
<nativelib href="avmLinuxLib.jar"/>
<nativelib href="avctSolarisLib.jar"/>
<nativelib href="avmSolarisLib.jar"/>
<nativelib href="avctMacOSXLib.jar"/>
<nativelib href="avmMacOSXLib.jar"/>
<nativelib href="jpcscdll.jar"/>
<nativelib href="jpcscso.jar"/>
</resources>
...
Diese Datei startet man folgendermassen:
$ javaws -verbose kvm.cgi
Leider erhielt ich mit J2SE Version 8 Update 91 folgende Fehlermeldung zu Gesicht:
Nach einigen Recherchen im Internet fand ich im Support-Forum des Herstellers im Beitrag „AutoView 3016 Java network connect error“ die Lösung.
In der Datei /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/java.security müssen zwei Parameter für den Umgang mit verschlüsselten Verbindungen angepasst werden:
...
#jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
jdk.certpath.disabledAlgorithms=
...
#jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768
jdk.tls.disabledAlgorithms=
...
Danach klappte die Verbindungsaufnahme:
Leider habe ich so meine Java-Installation extrem unsicher gemacht. Die Browser-Plugins habe ich seit längerem allesamt deaktiviert, was das Risiko etwas senkt.
Nachtrag
Mittlerweile habe ich — selbstverständlich mittels Internet-Resourcen — herausgefunden, wie man die Java-Einstellungen ausschliesslich nur für einen bestimmten Prozess abändert. Hierzu habe ich mir ein Script geschrieben, mit welchem ich den Avocent Viewer starten kann:
#!/bin/bash
...
SCRIPTDIR="/path/to/script/dir"
...
JAVAWS=$(which javaws)
JNLP="$SCRIPTDIR/kvm.jnlp"
JAVASECURITY="$SCRIPTDIR/java.security"
# http://stackoverflow.com/questions/1047154/java-webstart-options
CMD="$JAVAWS -J\"-Djava.security.properties=$JAVASECURITY\" $JNLP &"
echo $CMD
eval $CMD
echo ""
exit 0
Im Verzeichnis, in welchem das Bash-Script liegt, habe ich eine Kopie der oben genannten Datei java.security abgelegt und die Anpassungen an der lokalen Kopie vorgenommen (die globale Datei java.security führt nur die sicheren Ciphers auf). Den Pfad zur lokalen Datei übergebe ich Java Web Start mittels einer Kommandozeile -J, in welcher eine Java-Argument verschachtelt ist -D.