Eine Standardinstallation der Looker-Anwendung verwendet selbstsignierte SSL-Zertifikate für HTTPS. In Produktionsumgebungen mit vom Kunden gehosteten Instanzen empfiehlt es sich, ein SSL-Zertifikat von einem vertrauenswürdigen Anbieter zu installieren.
Um ein SSL-Zertifikat mit Looker zu verwenden, müssen Sie einen Java-Schlüsselspeicher mit Ihrem Zertifikat und Ihrem Schlüssel erstellen.
Insgesamt sollten Sie über die folgenden Dateien verfügen:
- Eine Zertifikatsdatei mit dem Namen
looker.pem
, die Ihr Hauptzertifikat enthält - Eine verknüpfte Schlüsseldatei namens
looker.key
- Optional: Eine Datei mit einer Zwischenzertifizierungsstellenkette (Certificate Authority, CA) namens
ca.pem
Ihre
.pem
-Datei muss kein Stammzertifikat 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 geben Sie es in die Datei
.keystorepass
ein:echo "some_password_here" > .keystorepass
Wenn Sie eine CA-Datei haben, hängen Sie sie 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 Passwort für den Export einzugeben. Verwenden Sie die ID aus der 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 Schlüsselspeicher-Passwort und das pkcs12-Schlüsselspeicher-Passwort einzugeben. Verwenden Sie weiterhin die in der Datei
.keystorepass
.Erstellen Sie eine Datei mit dem Namen
lookerstart.cfg
im selben Verzeichnis wie Ihrelooker.jar
. In dieser Datei werden die erforderlichen Looker-Optionen jedes Mal konfiguriert, wenn Looker gestartet wird. 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
lautet, sollte die Ausgabe eine Zeile wie diese enthalten:
subject=/OU=Domain Control Validated/CN=looker.yourdomain.com
Eine weitere Möglichkeit ist wget
. Dieser Test kann von jedem Host ausgeführt werden, der über HTTPS Netzwerkzugriff auf Ihre Looker-Instanz hat.
In Looker, in dem das standardmäßige selbst signierte Zertifikat verwendet wird, wird in der Ausgabe der gemeinsame Name des Zertifikats self-signed.looker.com
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 einem Looker-Server, der ein Zertifikat von einer Zertifizierungsstelle verwendet, muss der Common Name des Zertifikats mit dem DNS-Namen übereinstimmen, über den Clients auf Looker zugreifen (oder mit einem entsprechenden Platzhalterzertifikat).
Hier 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 prüfen
Ab Looker 5.18 verwendet Looker das Root-Zertifikatpaket der Java-Zertifizierungsstelle (CA). Looker verwendet das Zertifizierungsstellen-Bundle, um die Authentizität der Hosts zu prüfen, mit denen es bei ausgehenden Anfragen vom Looker-Server kommuniziert. Dazu gehören Aktionen wie das Senden von Anfragen an ausgehende Webhooks, das Ausführen von S3-Sicherungen, das Anfordern verschiedener Authentifizierungsformen und die Kommunikation mit dem Server zur Lizenzbestätigung.
Java stellt das CA-Bundle bereit und verwaltet es. Es befindet sich auf dem Laufwerk. Dadurch können die Administratoren von vom Kunden gehosteten Looker-Instanzen Zertifikate zum CA-Paket hinzufügen oder daraus entfernen.
Wenn Sie das CA-Bundle ändern möchten, können Sie mit dem test_ssl_cert_validation
-Dienstprogramm von Looker testen, ob Looker bei einer ausgehenden HTTP-Verbindung ein Serverzertifikat validieren kann. Das Dienstprogramm akzeptiert den Namen einer Datei, die eine Liste der zu testenden URLs mit einer URL pro Zeile enthält. Beispiel:
https://www.google.com
https://looker.com
https://wrong.host.badssl.com/
Wenn der Name dieser Datei hosts
lautet, verwenden Sie test_ssl_cert_validation
so:
$ ./looker test_ssl_cert_validation hosts
Die Ausgabe von test_ssl_cert_validation
würde dann 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
Mit einer der folgenden Methoden deaktivieren Sie eingehende TSL1.0-Verbindungen zu Looker:
Ändern Sie die Zeile
ssl_protocols
in der 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.
Nächste Schritte
Nachdem Sie Ihr SSL-Zertifikat eingerichtet haben, können Sie eine Portweiterleitung für eine einfachere URL hinzufügen.