Una instalación predeterminada de la aplicación Looker usa certificados SSL autofirmados para HTTPS. En los entornos de producción de las instancias alojadas por el cliente, recomendamos instalar un certificado SSL de un proveedor de confianza.
Para usar un certificado SSL con Looker, tendrás que crear un almacén de claves de Java con tu certificado y tu clave.
Debes tener los siguientes archivos:
- Un archivo de certificado llamado
looker.pem
que contiene tu certificado principal - Un archivo de claves asociado llamado
looker.key
- Opcionalmente, un archivo de cadena de autoridad de certificación (CA) intermedia llamado
ca.pem
Tu archivo
.pem
no tiene por qué contener un certificado raíz.
Instalar el certificado
Todos estos archivos deben estar en el mismo directorio. El valor predeterminado es /home/looker/looker/.ssl
.
Crea el nuevo directorio y conviértelo en el directorio actual:
mkdir /home/looker/looker/.ssl cd /home/looker/looker/.ssl
Elige una contraseña para el almacén de claves y guárdala en un archivo llamado
.keystorepass
:echo "some_password_here" > .keystorepass
Si tienes un archivo de CA, añádelo al final del archivo de certificado:
echo >> looker.pem cat ca.pem >> looker.pem
Convierte el certificado y la clave en un almacén de claves
pkcs12
:openssl pkcs12 -export \ -in looker.pem \ -inkey looker.key \ -out importme.p12
Se te pedirá una contraseña de exportación. Usa el que has incluido en el archivo
.keystorepass
.Convierte el almacén de claves pkcs12 en un almacén de claves de Java:
keytool -importkeystore \ -srckeystore importme.p12 \ -destkeystore looker.jks \ -srcstoretype pkcs12 \ -alias 1
Se te pedirá la nueva contraseña del almacén de claves y la contraseña del almacén de claves pkcs12. Sigue usando el que hay en el archivo
.keystorepass
.Crea un archivo llamado
lookerstart.cfg
en el mismo directorio quelooker.jar
. Este archivo configurará las opciones de Looker necesarias cada vez que se inicie Looker. El archivo debe contener lo siguiente:
LOOKERARGS="--ssl-keystore=/home/looker/looker/.ssl/looker.jks --ssl-keystore-pass-file=/home/looker/looker/.ssl/.keystorepass"
Validar el certificado
Una vez que Looker esté en funcionamiento, puedes verificar que el certificado se haya instalado correctamente con OpenSSL s_client
.
openssl s_client -connect localhost:9999
Si tu nombre de host es looker.yourdomain.com
, deberías ver una línea en el resultado como esta:
subject=/OU=Domain Control Validated/CN=looker.yourdomain.com
Otra forma de comprobarlo es con wget
. Esta prueba se puede realizar desde cualquier host que tenga acceso de red a tu instancia de Looker a través de HTTPS.
En un Looker que usa el certificado autofirmado predeterminado, el resultado muestra el nombre común del certificado 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'.
En un Looker que utilice un certificado de una autoridad de certificación, el nombre común del certificado debe coincidir con el nombre DNS que los clientes utilizan para acceder a Looker (o un certificado comodín equivalente).
A continuación, se muestra un ejemplo de un servidor que usa un certificado "real" (no autofirmado):
$ 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]
Validar el certificado de un sitio con el paquete de AC
Desde Looker 5.18, Looker usa el paquete de certificados raíz de la autoridad de certificación (CA) de Java. Looker usa el paquete de CA para verificar la autenticidad de los hosts con los que se comunica al hacer solicitudes salientes desde el servidor de Looker. Esto incluye acciones como enviar solicitudes a webhooks salientes, realizar copias de seguridad de S3, solicitar varias formas de autenticación y comunicarse con el servidor de verificación de licencias.
Java proporciona y gestiona el paquete de CA, que reside en el disco. De esta forma, los administradores de las instancias de Looker alojadas por el cliente pueden añadir o quitar certificados del paquete de CA.
Si decides modificar el paquete de CA, puedes usar la utilidad test_ssl_cert_validation
de Looker para comprobar si Looker puede validar un certificado de servidor al establecer una conexión HTTP saliente. La utilidad acepta el nombre de un archivo que contiene una lista de URLs que quieres probar, con una URL por línea, como esta:
https://www.google.com
https://looker.com
https://wrong.host.badssl.com/
Si el nombre de este archivo fuera hosts
, usarías test_ssl_cert_validation
de la siguiente manera:
$ ./looker test_ssl_cert_validation hosts
El resultado de test_ssl_cert_validation
sería el siguiente:
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
Inhabilitar protocolos SSL no seguros
Para inhabilitar las conexiones TLS 1.0 entrantes a Looker, sigue uno de estos dos métodos:
Modifique la línea
ssl_protocols
de su archivo de configuración de Nginx y elimine la opción de TLSv1, tal como se muestra en este fragmento de código:ssl-protocols: "TLSv1.2 TLSv1.3"
Configura un proxy o un balanceador de carga delante de Looker que finalice el protocolo TLS o SSL. A continuación, inhabilita SSL en Looker.
Pasos siguientes
Una vez que hayas configurado tu certificado SSL, podrás añadir la redirección de puertos para que la URL sea más clara.