Tripp Lite KVM Java Web Start (JNLP) Setup & SSL Fix#
This guide documents the fix for opening the Tripp Lite KVM virtual console (viewer.jnlp) on macOS when modern Java blocks connections due to legacy TLS/SSL cipher handshake failures.
1. Problem Overview#
When launching viewer.jnlp via Java Web Start (javaws), the applet fails with the following errors:
com.sun.deploy.net.FailedDownloadException: Unable to load resource: https://10.1.5.2:443/iClientJ12111.jar@pid=...
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failureCause#
Tripp Lite IP KVM switches (and rebranded ATEN/Avocent devices) rely on legacy SSL/TLS protocols (TLS 1.0 / TLS 1.1) and deprecated ciphers (e.g., 3DES, 1024-bit Diffie-Hellman keys). Modern Java runtimes (Java 8u291+ and newer) disable these protocols by default in java.security.
2. Implemented Solution (macOS Setup & TLS Fix)#
2.1. System-Level java.security Edit (Required for Resource Download Phase)#
Java Web Start (javaws) connects to HTTPS (https://10.1.5.2) using the system-level Java security config before spawning the application JRE. In Java 8u291+, Oracle disabled TLS 1.0/1.1 protocols AND legacy ciphers (TLS_RSA_*, 3DES_EDE_CBC) at the system level, causing SSLHandshakeException: Received fatal alert: handshake_failure during .jar file download.
To allow javaws to negotiate ciphers and download applet resources over TLS 1.0/1.1, run this command in Terminal:
sudo python3 -c "
import re
path = '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/java.security'
with open(path, 'r') as f: content = f.read()
pattern = r'jdk\.tls\.disabledAlgorithms=.*?(?=\n\n|\n[a-zA-Z#])'
replacement = 'jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, anon, NULL\n'
with open(path, 'w') as f: f.write(re.sub(pattern, replacement, content, flags=re.DOTALL))
"2.2. Create Custom User-Level java.security Override File#
Location: ~/.java/java.security (Note: Placing this file in a path without spaces prevents Java Web Start argument parsing failures).
# Custom Java Security overrides for Tripp Lite KVM legacy TLS support
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, anon, NULL
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 512, DSA keySize < 5122.3. Configure Java Web Start & Disable CRL Checks#
Location: ~/Library/Application Support/Oracle/Java/Deployment/deployment.properties
Ensure the following properties are set so Java Web Start automatically passes the custom security configuration and skips online certificate revocation checks:
deployment.security.TLSv1=true
deployment.security.TLSv1.1=true
deployment.security.validation.crl=false
deployment.security.validation.ocsp=false
deployment.javaws.jre.0.args=-Djava.security.properties\=/Users/marc/.java/java.security2.4. Add KVM IP to Exception Sites List#
Location: ~/Library/Application Support/Oracle/Java/Deployment/security/exception.sites
Ensure the target KVM URL is added (both with and without port):
https://10.1.5.2:443
https://10.1.5.22.5. Important: JNLP Session Tokens are One-Time Use Only#
The
.jnlpfile downloaded from the Tripp Lite KVM web interface contains one-time authentication tokens:<argument>16ACB088155D066E2ED8</argument> <argument>b022u08ipqmoz7ien80w0mwjo3k46win</argument>Once a session is closed or disconnected, the KVM hardware invalidates these tokens. Re-opening an old
viewer.jnlpfile will cause the Java applet to fail silently or exit immediately.To launch a new session: Always log back into the KVM web UI (
https://10.1.5.2) and download/click a freshviewer.jnlpfile.
3. How to Reproduce / Launch#
Method A: Automated CLI Launcher Script (kvm Alias) - PRIMARY / RECOMMENDED#
Script location: /Users/marc/Scripts/MacOS/KVM-Launch.sh
To set up the alias on a new Mac, run this one-liner in Terminal (safe against duplicate entries):
grep -qF "alias kvm=" ~/.zshrc || echo "alias kvm='/Users/marc/Scripts/MacOS/KVM-Launch.sh'" >> ~/.zshrc && source ~/.zshrcThis is the primary and most reliable method on macOS. It automatically strips macOS Gatekeeper quarantine, picks the newest viewer.jnlp in ~/Downloads, fetches the applet JAR, and launches the Java session instantly without security prompts:
# Simply type kvm after downloading a fresh viewer.jnlp
kvm
# Or pass a specific JNLP file path
kvm /path/to/viewer.jnlpMethod B: Native Finder Double-Click (javaws)#
Standard Java Web Start execution automatically applies the TLS overrides when double-clicking .jnlp files in Finder or running via CLI:
javaws /path/to/viewer.jnlpMethod C: Manual CLI Execution (Fallback)#
# 1. Strip macOS Quarantine attribute from downloaded file
xattr -d com.apple.quarantine ~/Downloads/viewer.jnlp
# 2. Download the jar file from the KVM
curl -k -o /tmp/iClientJ.jar "https://10.1.5.2:443/iClientJ12111.jar@pid=A03AC91332A6A2027C41"
# 3. Execute applet with TLS properties passed directly
java -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 \
-Djava.security.properties="/Users/marc/.java/java.security" \
-cp /tmp/iClientJ.jar \
iclientj.ClientApplet 10.1.5.2 9000 A03AC91332A6A2027C41 b022u08ipqmoz7ien80w0mwjo3k46win4. Alternative Solution: Docker Container (Zero Host Java Configuration)#
If you migrate to a new system or prefer not installing/configuring Java on the host macOS machine, run a containerized legacy Java viewer exposed over noVNC (HTML5 Web Interface).
4.1. Popular Docker Images#
solarkennedy/docker-javaws/mikenowak/docker-kvm-viewer: Bundles Java Web Start in a virtual frame.remote-kvm-docker/docker-firefox-java: Runs Firefox + legacy Java plugin in Docker.
4.2. Example Docker Execution#
# Run container mapping port 8080
docker run -d \
--name kvm-viewer \
-p 8080:8080 \
-v ~/Downloads:/downloads \
solarkennedy/docker-javaws- Open
http://localhost:8080in Chrome/Safari. - Load the
.jnlpfile inside the browser-based virtual display. - Access the KVM console with zero local Java modifications required.