Un'installazione predefinita dell'applicazione Looker utilizza certificati SSL autofirmati per HTTPS. Per ambienti di produzione di istanze ospitate dal cliente, consigliamo di installare un certificato SSL di un fornitore attendibile.
Per utilizzare un certificato SSL con Looker, devi creare un keystore Java con il certificato e la chiave.
Dovresti avere i seguenti file:
- Un file del certificato denominato
looker.pem
che contiene il certificato principale - Un file di chiave associato denominato
looker.key
- Facoltativamente, un file della catena di autorità di certificazione (CA) intermedio denominato
ca.pem
Il file
.pem
non deve necessariamente contenere un certificato radice.
Installa il certificato
Questi file devono trovarsi tutti nella stessa directory. Il valore predefinito è /home/looker/looker/.ssl
.
Crea la nuova directory e impostala come directory attuale:
mkdir /home/looker/looker/.ssl cd /home/looker/looker/.ssl
Scegli una password per il keystore e inseriscila in un file denominato
.keystorepass
:echo "some_password_here" > .keystorepass
Se hai un file CA, aggiungilo alla fine del file del certificato:
echo >> looker.pem cat ca.pem >> looker.pem
Converti il certificato e la chiave in un archivio chiavi
pkcs12
:openssl pkcs12 -export \ -in looker.pem \ -inkey looker.key \ -out importme.p12
Ti verrà richiesta una password per l'esportazione. Utilizza quello che hai inserito nel file
.keystorepass
.Converti l'archivio chiavi pkcs12 in un archivio chiavi Java:
keytool -importkeystore \ -srckeystore importme.p12 \ -destkeystore looker.jks \ -srcstoretype pkcs12 \ -alias 1
Ti verrà chiesta la nuova password del keystore e la password del keystore PKCS12. Continua a utilizzare quello nel file
.keystorepass
.Crea un file denominato
lookerstart.cfg
nella stessa directory dilooker.jar
. Questo file configurerà le opzioni di Looker necessarie a ogni avvio di Looker. Il file deve contenere:
LOOKERARGS="--ssl-keystore=/home/looker/looker/.ssl/looker.jks --ssl-keystore-pass-file=/home/looker/looker/.ssl/.keystorepass"
Convalida il certificato
Quando Looker è in esecuzione, puoi verificare che il certificato sia installato correttamente con OpenSSL s_client
.
openssl s_client -connect localhost:9999
Se il nome host è looker.yourdomain.com
, nell'output dovresti vedere una riga simile alla seguente:
subject=/OU=Domain Control Validated/CN=looker.yourdomain.com
Un altro modo per controllare è utilizzare wget
. Questo test può essere eseguito da qualsiasi host che abbia accesso di rete alla tua istanza Looker tramite HTTPS.
In un Looker che utilizza il certificato autofirmato predefinito, l'output mostra il nome comune del certificato self-signed.looker.com
:
$ 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'.
In Looker che utilizza un certificato di un'autorità di certificazione, il nome comune del certificato deve corrispondere al nome DNS che i client utilizzano per accedere a Looker (o un certificato con caratteri jolly equivalente).
Ecco un esempio di server che utilizza un certificato "reale" (non autofirmato):
$ 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]
Convalida del certificato di un sito rispetto al bundle CA
A partire da Looker 5.18, Looker utilizza il bundle del certificato radice dell'autorità di certificazione (CA) Java. Looker utilizza il bundle CA per verificare l'autenticità degli host con cui comunica quando effettua richieste in uscita dal server Looker. Sono incluse azioni come l'invio di richieste ai webhook in uscita, l'esecuzione di backup S3, la richiesta di varie forme di autenticazione e la comunicazione con il server di verifica della licenza.
Java fornisce e gestisce il bundle CA, che si trova su disco. In questo modo, gli amministratori delle istanze Looker ospitate dal cliente possono aggiungere o rimuovere certificati dal bundle CA.
Se scegli di modificare il bundle CA, puoi utilizzare l'utilità test_ssl_cert_validation
di Looker per verificare se Looker può convalidare o meno un certificato del server quando effettui una connessione HTTP in uscita. L'utilità accetta il nome di un file contenente un elenco di URL da testare, con un URL per riga, come segue:
https://www.google.com
https://looker.com
https://wrong.host.badssl.com/
Se il nome di questo file fosse hosts
, devi utilizzare test_ssl_cert_validation
in questo modo:
$ ./looker test_ssl_cert_validation hosts
L'output di test_ssl_cert_validation
sarà simile al seguente:
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
Disattivazione di protocolli SSL non sicuri
Per disattivare le connessioni in entrata TSL1.0 a Looker, segui uno di questi due metodi:
Modifica la riga
ssl_protocols
nel file di configurazione di Nginx e rimuovi l'opzione per TLSv1, come mostrato in questo snippet di codice:ssl-protocols: "TLSv1.2 TLSv1.3"
Configura un proxy o un bilanciatore del carico davanti a Looker che termina il protocollo TLS o SSL. Quindi, disabilita SSL a livello di Looker.
Passaggi successivi
Dopo aver configurato il certificato SSL, potrai aggiungere il port forwarding per un URL più pulito.