Bei einer Standardinstallation der Looker-Anwendung werden selbstsignierte SSL-Zertifikate für HTTPS verwendet. Für Produktionsumgebungen mit vom Kunden gehosteten Instanzen empfehlen wir die Installation eines SSL-Zertifikats von einem vertrauenswürdigen Anbieter.
Wenn Sie ein SSL-Zertifikat mit Looker verwenden möchten, müssen Sie mit Ihrem Zertifikat und Ihrem Schlüssel einen Java-Schlüsselspeicher erstellen.
Insgesamt sollten Sie über die folgenden Dateien verfügen:
- Eine Zertifikatsdatei mit dem Namen
looker.pem
, die Ihr primäres Zertifikat enthält - Eine verknüpfte Schlüsseldatei namens
looker.key
- Optional eine Zwischendatei der Zertifizierungsstelle (Certificate Authority, CA) mit dem Namen
ca.pem
Die Datei
.pem
muss kein Root-Zertifikat enthalten.
Zertifikat installieren
Diese Dateien sollten sich alle im selben Verzeichnis befinden. Der Standardwert ist /home/looker/looker/.ssl
.
Erstellen Sie das neue Verzeichnis und machen Sie es zum aktuellen Verzeichnis:
mkdir /home/looker/looker/.ssl cd /home/looker/looker/.ssl
Wählen Sie ein Passwort für den Schlüsselspeicher aus und speichern Sie es in einer Datei mit dem Namen
.keystorepass
:echo "some_password_here" > .keystorepass
Wenn Sie eine CA-Datei haben, hängen Sie diese an das Ende Ihrer Zertifikatsdatei an:
echo >> looker.pem cat ca.pem >> looker.pem
Konvertieren Sie das Zertifikat und den Schlüssel in einen
pkcs12
-Schlüsselspeicher:openssl pkcs12 -export \ -in looker.pem \ -inkey looker.key \ -out importme.p12
Sie werden aufgefordert, ein Exportpasswort einzugeben. Verwenden Sie den Code aus der obigen Datei
.keystorepass
.Konvertieren Sie den pkcs12-Schlüsselspeicher in einen Java-Schlüsselspeicher:
keytool -importkeystore \ -srckeystore importme.p12 \ -destkeystore looker.jks \ -srcstoretype pkcs12 \ -alias 1
Sie werden aufgefordert, das neue Keystore-Passwort und das pkcs12-Keystore-Passwort einzugeben. Verwenden Sie weiterhin die Adresse in der Datei
.keystorepass
.Erstellen Sie eine Datei mit dem Namen
lookerstart.cfg
im selben Verzeichnis wie Ihrelooker.jar
. In dieser Datei werden bei jedem Start von Looker die erforderlichen Looker-Optionen konfiguriert. Die Datei sollte Folgendes enthalten:
LOOKERARGS="--ssl-keystore=/home/looker/looker/.ssl/looker.jks --ssl-keystore-pass-file=/home/looker/looker/.ssl/.keystorepass"
Zertifikat validieren
Sobald Looker ausgeführt wird, können Sie mit OpenSSL s_client
prüfen, ob Ihr Zertifikat korrekt installiert ist.
openssl s_client -connect localhost:9999
Wenn Ihr Hostname looker.yourdomain.com
ist, sollte die Ausgabe eine Zeile wie diese enthalten:
subject=/OU=Domain Control Validated/CN=looker.yourdomain.com
Sie können das auch mit wget
prüfen. Dieser Test kann von jedem Host aus durchgeführt werden, der über HTTPS Netzwerkzugriff auf Ihre Looker-Instanz hat.
Bei Looker, die das selbst signierte Standardzertifikat verwendet, wird in der Ausgabe der allgemeine Name self-signed.looker.com
des Zertifikats angezeigt:
$ wget https://looker.yourdomain.com:9999
--2014-12-31 12:06:03-- https://looker.yourdomain.com:9999/
Resolving looker.yourdomain.com (looker.yourdomain.com)... 192.168.23.66
Connecting to looker.yourdomain.com (looker.yourdomain.com)|192.168.23.66|:9999... connected.
ERROR: cannot verify looker.yourdomain.com's certificate, issued by '/CN=self-signed.looker.com':
Self-signed certificate encountered.
ERROR: certificate common name 'self-signed.looker.com' doesn't match requested host name 'looker.yourdomain.com'.
To connect to looker.yourdomain.com insecurely, use `--no-check-certificate'.
Bei Looker, das ein Zertifikat einer Zertifizierungsstelle verwendet, muss der allgemeine Name des Zertifikats mit dem DNS-Namen übereinstimmen, den Clients für den Zugriff auf Looker verwenden (oder ein entsprechendes Platzhalterzertifikat).
Hier ist ein Beispiel für einen Server, der ein „echtes“ (nicht selbst signiertes) Zertifikat verwendet:
$ wget https://looker.yourdomain.com:9999
--2014-12-31 12:06:47-- https://looker.yourdomain.com:9999/
Resolving looker.yourdomain.com (looker.yourdomain.com)... 10.10.10.10
Connecting to looker.yourdomain.com (looker.yourdomain.com)|10.10.10.10|:9999... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://looker.yourdomain.com:9999/login [following]
--2014-12-31 12:06:48-- https://looker.yourdomain.com:9999/login
Connecting to looker.yourdomain.com (looker.yourdomain.com)|10.10.10.10|:9999... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3491 (3.4K) [text/html]
Saving to: 'index.html'
100%[====================================================>] 3,491 --.-K/s in 0.07s
2014-12-31 12:06:48 (50.5 KB/s) - 'index.html' saved [3491/3491]
Zertifikat einer Website anhand des CA-Bundles validieren
Ab Looker 5.18 verwendet Looker das Root-Zertifikatpaket der Java-Zertifizierungsstelle (CA). Looker verwendet das CA-Bundle, um die Authentizität der Hosts zu überprüfen, mit denen bei ausgehenden Anfragen vom Looker-Server kommuniziert wird. Dazu gehören das Senden von Anfragen an ausgehende Webhooks, das Durchführen von S3-Sicherungen, das Anfordern verschiedener Authentifizierungsmethoden und die Kommunikation mit dem Lizenzüberprüfungsserver.
Java stellt das CA-Bundle, das sich auf dem Laufwerk befindet, bereit und verwaltet es. Dadurch können die Administratoren von vom Kunden gehosteten Looker-Instanzen Zertifikate zum CA-Bundle hinzufügen oder daraus entfernen.
Wenn Sie das CA-Bundle ändern, können Sie mit dem test_ssl_cert_validation
-Dienstprogramm von Looker testen, ob Looker bei einer ausgehenden HTTP-Verbindung ein Serverzertifikat validieren kann oder nicht. Das Dienstprogramm akzeptiert den Namen einer Datei, die eine Liste von URLs enthält, die Sie testen möchten. Verwenden Sie dazu eine URL pro Zeile. Beispiel:
https://www.google.com
https://looker.com
https://wrong.host.badssl.com/
Wenn der Name der Datei hosts
war, würden Sie test_ssl_cert_validation
so verwenden:
$ ./looker test_ssl_cert_validation hosts
Die Ausgabe von test_ssl_cert_validation
würde so aussehen:
Using CA file from .../jre/lib/security/cacerts
Attempting connection to https://www.google.com
Certificate verified successfully, connection returned with:
HTTP/1.1 200 OK
Attempting connection to https://looker.com
Certificate verified successfully, connection returned with:
HTTP/1.1 200 OK
Attempting connection to https://wrong.host.badssl.com/
Error connecting to https://wrong.host.badssl.com/: OpenSSL::SSL::SSLError: hostname
"wrong.host.badssl.com" does not match the server certificate
Summary:
Successes: 3, Redirects: 0, Failures: 1
Unsichere SSL-Protokolle deaktivieren
Zum Deaktivieren eingehender TSL1.0-Verbindungen zu Looker haben Sie zwei Möglichkeiten:
Ändern Sie die Zeile
ssl_protocols
in Ihrer Nginx-Konfigurationsdatei und entfernen Sie die Option für TLSv1, wie in diesem Code-Snippet gezeigt:ssl-protocols: "TLSv1.2 TLSv1.3"
Richten Sie vor Looker einen Proxy oder Load Balancer ein, der das TLS- oder SSL-Protokoll beendet. Deaktivieren Sie dann SSL auf Looker-Ebene.
Weitere Informationen
Nachdem Sie Ihr SSL-Zertifikat eingerichtet haben, können Sie die Portweiterleitung für eine sauberere URL hinzufügen.