Configurer votre certificat SSL pour le protocole HTTPS

Une installation par défaut de l'application Looker utilise des certificats SSL autosignés pour HTTPS. Pour les environnements de production d'instances hébergées par le client, nous vous recommandons d'installer un certificat SSL issu 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 qui contient 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.

  1. Créez le répertoire et définissez-le comme répertoire actuel:

    mkdir /home/looker/looker/.ssl
    cd /home/looker/looker/.ssl
    
  2. Choisissez un mot de passe pour le keystore et enregistrez-le dans un fichier nommé .keystorepass:

    echo "some_password_here" > .keystorepass
    
  3. 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
    
  4. Convertissez le certificat et la clé en keystore pkcs12:

    openssl pkcs12 -export \
        -in looker.pem       \
        -inkey looker.key    \
        -out importme.p12
    
  5. Vous serez invité à saisir un mot de passe pour l'exportation. Utilisez celle que vous avez indiquée dans le fichier .keystorepass ci-dessus.

  6. Convertissez le keystore pkcs12 en keystore Java:

    keytool -importkeystore     \
        -srckeystore importme.p12 \
        -destkeystore looker.jks  \
        -srcstoretype pkcs12      \
        -alias 1
    
  7. Vous serez invité à saisir le nouveau mot de passe du keystore et celui du keystore pkcs12. Continuez à utiliser celle du fichier .keystorepass.

  8. Créez un fichier nommé lookerstart.cfg dans le même répertoire que votre fichier looker.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 en cours d'exécution, 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, une ligne semblable à celle-ci doit s'afficher dans le résultat:

subject=/OU=Domain Control Validated/CN=looker.yourdomain.com

Vous pouvez également le vérifier à l'aide 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 du 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 que les clients utilisent pour accéder à Looker (ou un certificat 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]

Valider le certificat d'un site par rapport au bundle d'autorités de certification

À partir de la version 5.18 de Looker, Looker utilise le bundle de certificats racine de l'autorité de certification Java. Looker utilise le bundle d'autorités de certification pour vérifier l'authenticité des hôtes avec lesquels il communique lors de l'envoi de requêtes sortantes depuis le serveur Looker. Cela inclut l'envoi de requêtes aux webhooks sortants, l'exécution de sauvegardes S3, la demande de diverses formes d'authentification et la communication avec le serveur de vérification des licences.

Java fournit et gère le groupe d'autorités de certification, qui réside sur le disque. Cela permet aux administrateurs d'instances Looker hébergées par un client d'ajouter ou de supprimer des certificats dans le groupe d'autorités de certification.

Si vous choisissez de modifier le groupe d'autorités de certification, vous pouvez utiliser l'utilitaire test_ssl_cert_validation de Looker pour vérifier si Looker peut valider un certificat de serveur lors d'une connexion HTTP sortante. L'utilitaire accepte le nom d'un fichier contenant la liste des 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 était hosts, vous utiliseriez test_ssl_cert_validation comme ceci:

$ ./looker test_ssl_cert_validation hosts

Le résultat de la commande test_ssl_cert_validation se présente 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

Pour désactiver les connexions TSL1.0 entrantes à Looker, suivez l'une de ces deux méthodes:

  • Modifiez la ligne ssl_protocols dans votre fichier de configuration Nginx et supprimez l'option TLSv1, comme indiqué dans l'extrait de code suivant:

       ssl-protocols: "TLSv1.2 TLSv1.3"
    
  • Configurez un proxy ou un équilibreur de charge devant Looker qui met fin au protocole TLS ou SSL. Désactivez ensuite SSL au niveau de Looker.

Étapes suivantes

Après avoir configuré votre certificat SSL, vous pouvez ajouter un transfert de port pour une URL plus claire.