SSL/TLS für Cantaloupe

SSL/TLS kann im Imageserver Cantaloupe implementiert werden.

Hier ein Erfahrungsbericht bei der Implementierung:

Voraussetzungen

  • Cantaloupe ver. 4.0.2
  • OpenJDK
  • Ubuntu 16 .04 im Server

Cantaloupe (stand alone) fordert dafür JDK-Keystore oder PKCS12-Keystore. (Ich hab› leider nur die Beschreibung für die Vers. 3.3 gefunden: https://medusa-project.github.io/cantaloupe/manual/3.3/deployment.html#SSL/TLS)

Weil das SSL-Zertifikat, das man mit Letsencrypt erhält, in Form von PEM-File angelegt wird, braucht man hier drei Schritte

1) Zertifikat durch certbot holen,

2) aus die Zertifikat-Dateien eine PKCS12-Datei herstellen und

3)  mit dieser PKCS12-Datei JDK-Keystore kreiern. Danach trägt man den Dateinamen von Keystore, Path zu dieser Datei und Passwörter in Konfigrationsdatei von Cantaloupe (cantaloupe.configration) ein und startet Cantaloupe neu.

1) Let’s Encrypt  installieren und Zertifikat in PEM-Format verlangen

Zuerst certbot clonen…

$ git clone https://github.com/certbot/certbot

Mit certbot das Zertifikat holen – Man erhält folgende 4 PEM-keys;

  1. privkey.pem
  2. fullchain.pem
  3. cert.pem
  4. chain.pem

Aus den Privkey- und Fullchain-PEM-Daten wird ein PKCS12-Daten erstellt:

$ openssl pkcs12 -export -passout pass:[PasswortA] -in /etc/letsencrypt/live/example.com/fullchain.pem -inkey /etc/letsencrypt/live/example.com/privkey.pem -out fullchain_and_key.p12 -name [Alias_Name]

So findet man ein Datei namens «fullchain_and_key.p12» in dem entsprechenden Ordner.

Dann kommt ein weiterer Schritt: Aus PKCS12-Datei Keystore zu erstellen.

$ keytool -importkeystore -deststorepass [PasswortB] -destkeypass [PasswortC] -destkeystore MyKeyStore.jks -srckeystore fullchain_and_key.p12 -srcstoretype PKCS12 -srcstorepass [PasswortA] -alias [Alias_Name] 

Dann ist nur noch die Konfiguration von Cantaloupe («cantaloupe.properties») ändern und Cantaloupe neu starten.

# !! Configures the HTTPS server. (Standalone mode only.)
https.enabled = true
https.host = 0.0.0.0
https.port = [Portnummer für SSL]
# Secure HTTP/2 requires Java 9 or later.
https.http2.enabled = false

# !! Available values are `JKS` and `PKCS12`. (Standalone mode only.)
https.key_store_type = JKS
https.key_store_password = [PasswortB]
https.key_store_path = /Path/für/MyKeyStore.jks
https.key_password = [PasswortC] 

Weil das Zertifikat durch Letsencrypt nur für 90 Tage hält, muss man entweder regelmäßig manuell das Zertifikat erneuern oder per «cron» den Vorgang automatisieren