Une installation par défaut de l'application Looker utilise des certificats SSL autosignés pour HTTPS. Pour les environnements de production, nous vous recommandons d'installer le certificat SSL d'un fournisseur de confiance.
Pour utiliser un certificat SSL avec Looker, vous devez créer un keystore Java avec votre certificat et votre clé.
Après décompression, vous disposez en principe des fichiers suivants :
- Un fichier de certificat nommé
looker.pem
contenant votre certificat principal - Un fichier de clé associé nommé
looker.key
- Éventuellement, un fichier de chaîne d'autorité de certification intermédiaire nommé
ca.pem
Votre fichier
.pem
n'a pas besoin de contenir de certificat racine.
Installer le certificat
Ces fichiers doivent tous se trouver dans le même répertoire. La valeur par défaut est /home/looker/looker/.ssl
.
Créez le répertoire et faites-en le répertoire actuel:
mkdir /home/looker/looker/.ssl cd /home/looker/looker/.ssl
Choisissez un mot de passe pour le keystore et placez-le dans un fichier nommé
.keystorepass
:echo "some_password_here" > .keystorepass
Si vous disposez d'un fichier d'autorité de certification, ajoutez-le à la fin de votre fichier de certificat:
echo >> looker.pem cat ca.pem >> looker.pem
Convertissez le certificat et la clé en keystore
pkcs12
:openssl pkcs12 -export \ -in looker.pem \ -inkey looker.key \ -out importme.p12
Vous serez invité à saisir un mot de passe d'exportation. Utilisez celui que vous avez placé dans le fichier
.keystorepass
ci-dessus.Convertissez le keystore pkcs12 en keystore Java:
keytool -importkeystore \ -srckeystore importme.p12 \ -destkeystore looker.jks \ -srcstoretype pkcs12 \ -alias 1
Vous serez invité à saisir le nouveau mot de passe et celui de pkcs12. Continuez à utiliser celle du fichier
.keystorepass
.Créez un fichier nommé
lookerstart.cfg
dans le même répertoire que votrelooker.jar
. Ce fichier configurera les options Looker requises à chaque démarrage de Looker. Le fichier doit contenir les éléments suivants:
LOOKERARGS="--ssl-keystore=/home/looker/looker/.ssl/looker.jks --ssl-keystore-pass-file=/home/looker/looker/.ssl/.keystorepass"
Valider le certificat
Une fois Looker activé, vous pouvez vérifier que votre certificat est correctement installé avec OpenSSL s_client
.
openssl s_client -connect localhost:9999
Si votre nom d'hôte est looker.yourdomain.com
, le résultat devrait ressembler à ceci:
subject=/OU=Domain Control Validated/CN=looker.yourdomain.com
Vous pouvez aussi vérifier auprès de wget
. Ce test peut être effectué à partir de n'importe quel hôte disposant d'un accès réseau à votre instance Looker via HTTPS.
Sur un Looker utilisant le certificat autosigné par défaut, le résultat affiche le nom commun de certificat 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'.
Sur un Looker utilisant un certificat d'une autorité de certification, le nom commun du certificat doit correspondre au nom DNS utilisé par les clients pour accéder à Looker (ou à un certificat à caractère générique équivalent).
Voici un exemple de serveur utilisant un certificat "réel" (non autosigné) :
$ 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]
Validation d'un certificat de site par rapport au bundle de l'autorité de certification
Depuis la version 5.18 de Looker, Looker utilise le bundle de certificats racine de l'autorité de certification Java. Looker utilise le groupe d'autorités de certification pour vérifier l'authenticité des hôtes avec lesquels il communique lors de l'envoi de requêtes au serveur Looker. Il peut s'agir d'envoyer des requêtes aux webhooks sortants, d'effectuer des sauvegardes S3, de demander différentes formes d'authentification et de communiquer avec le serveur de vérification des licences.
Java fournit et gère le bundle de CA, qui se trouve sur le disque. Les administrateurs d'instances Looker hébergées par le client peuvent ainsi ajouter des certificats au bundle de CA ou en supprimer.
Si vous choisissez de modifier le bundle de CA, vous pouvez utiliser l'utilitaire test_ssl_cert_validation
pour vérifier si Looker peut valider un certificat de serveur lors de la connexion HTTP sortante. L'utilitaire accepte le nom d'un fichier contenant une liste d'URL à tester, avec une URL par ligne, comme ceci:
https://www.google.com
https://looker.com
https://wrong.host.badssl.com/
Si le nom de ce fichier est hosts
, utilisez test_ssl_cert_validation
comme suit:
$ ./looker test_ssl_cert_validation hosts
La sortie de test_ssl_cert_validation
devrait se présenter comme suit:
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
Désactiver les protocoles SSL non sécurisés
Si vous devez supprimer le protocole TLS non sécurisé pour assurer la conformité avec la sécurité, ajoutez la ligne suivante à votre fichier $JAVA_HOME/lib/security/java.security
:
none
jdk.tls.disabledAlgorithms=SSLv2Hello, SSLv3, TLSv1, TLSv1.1, 3DES_EDE_CBC
Étapes suivantes
Après avoir configuré votre certificat SSL, vous pouvez ajouter un transfert de port pour une URL plus claire.