Un'installazione predefinita dell'applicazione Looker utilizza i certificati SSL autofirmati per il protocollo HTTPS. Per ambienti di produzione, è consigliabile installare un certificato SSL da un fornitore attendibile.
Per utilizzare un certificato SSL con Looker, devi creare un archivio chiavi Java con il certificato e la chiave.
Dovresti avere i seguenti file:
- Un file del certificato denominato
looker.pem
contenente il certificato principale - Un file chiave associato denominato
looker.key
- Facoltativamente, un file di catena di un'autorità di certificazione (CA) intermedi denominato
ca.pem
Il tuo file
.pem
non deve contenere un certificato radice.
Installa il certificato
Questi file dovrebbero trovarsi tutti nella stessa directory. Il valore predefinito è /home/looker/looker/.ssl
.
Crea la nuova directory e impostala come directory corrente:
mkdir /home/looker/looker/.ssl cd /home/looker/looker/.ssl
Scegli una password per l'archivio chiavi 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à chiesta una password per l'esportazione. Usa quello che hai inserito nel file
.keystorepass
sopra.Converti l'archivio chiavi pkcs12 in un archivio chiavi Java:
keytool -importkeystore \ -srckeystore importme.p12 \ -destkeystore looker.jks \ -srcstoretype pkcs12 \ -alias 1
Ti verranno chiesti la nuova password dell'archivio chiavi e la password dell'archivio chiavi pkcs12. Continua a utilizzare quella presente nel file
.keystorepass
.Crea un file denominato
lookerstart.cfg
nella stessa directory dilooker.jar
. Questo file configurerà le opzioni di Looker richieste ogni volta che Looker viene avviato. 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
Puoi anche controllare con wget
. Questo test può essere eseguito da qualsiasi host con accesso di rete alla tua istanza di 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 un Looker che utilizza un certificato di un'autorità di certificazione, il nome comune del certificato deve corrispondere al nome DNS utilizzato dai client per accedere a Looker (o a un certificato con caratteri jolly equivalente).
Ecco un esempio di un 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 di certificati radice dell'autorità di certificazione (CA) Java. Looker utilizza il bundle CA per verificare l'autenticità degli host con cui comunica quando invia richieste dal server Looker, Sono incluse azioni quali l'invio di richieste a 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. Consente agli amministratori di istanze Looker ospitate dal cliente di 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 un certificato del server quando stabilisce una connessione HTTP in uscita. L'utilità accetta il nome di un file contenente un elenco di URL che vuoi testare, con un URL per riga, come riportato di seguito:
https://www.google.com
https://looker.com
https://wrong.host.badssl.com/
Se il nome di questo file fosse hosts
, dovresti utilizzare test_ssl_cert_validation
in questo modo:
$ ./looker test_ssl_cert_validation hosts
L'output di test_ssl_cert_validation
avrebbe il seguente aspetto:
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
Disabilitazione dei protocolli SSL non sicuri
Se devi rimuovere TLS non sicuro per la conformità di sicurezza, aggiungi questa riga al file $JAVA_HOME/lib/security/java.security
:
none
jdk.tls.disabledAlgorithms=SSLv2Hello, SSLv3, TLSv1, TLSv1.1, 3DES_EDE_CBC
Passaggi successivi
Dopo aver configurato il certificato SSL, puoi aggiungere il port forwarding per un URL più chiaro.