Una instalación predeterminada de la aplicación de Looker usa certificados SSL autofirmados para HTTPS. Para los entornos de producción de instancias alojadas por el cliente, recomendamos instalar un certificado SSL de un proveedor de confianza.
Para usar un certificado SSL con Looker, deberás crear un almacén de claves Java con tu certificado y tu clave.
Deberías tener los siguientes archivos:
- Un archivo de certificado llamado
looker.pem
que contiene tu certificado principal - Un archivo de claves asociado llamado
looker.key
- De manera opcional, un archivo de cadena de autoridad certificadora (AC) intermedio llamado
ca.pem
No es necesario que tu archivo
.pem
contenga un certificado raíz.
Instala el certificado
Todos estos archivos deben existir en el mismo directorio. El valor predeterminado es /home/looker/looker/.ssl
.
Crea el directorio nuevo 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 colócala en un archivo llamado
.keystorepass
:echo "some_password_here" > .keystorepass
Si tienes un archivo de AC, adjúntalo al final de tu 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 solicitará una contraseña de exportación. Usa el que agregaste al archivo
.keystorepass
.Convierte el almacén de claves pkcs12 en un almacén de claves Java:
keytool -importkeystore \ -srckeystore importme.p12 \ -destkeystore looker.jks \ -srcstoretype pkcs12 \ -alias 1
Se te solicitará la nueva contraseña del almacén de claves y la contraseña del almacén de claves pkcs12. Sigue usando el que se encuentra en el archivo
.keystorepass
.Crea un archivo llamado
lookerstart.cfg
en el mismo directorio que tulooker.jar
. Este archivo configurará las opciones de Looker necesarias cada vez que se inicie. El archivo debe contener lo siguiente:
LOOKERARGS="--ssl-keystore=/home/looker/looker/.ssl/looker.jks --ssl-keystore-pass-file=/home/looker/looker/.ssl/.keystorepass"
Valida el certificado
Una vez que Looker esté en ejecución, podrás verificar que tu certificado esté 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 la siguiente:
subject=/OU=Domain Control Validated/CN=looker.yourdomain.com
Otra forma de hacerlo es a través de wget
. Esta prueba se puede realizar desde cualquier host que tenga acceso de red a tu instancia de Looker mediante 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 Looker con un certificado de una autoridad certificadora, el nombre común del certificado debe coincidir con el nombre de DNS que los clientes usan para acceder a Looker (o un certificado comodín equivalente).
Este es 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]
Cómo validar el certificado de un sitio en comparación con el paquete de AC
A partir de Looker 5.18, Looker usa el paquete de certificados raíz de la autoridad certificadora (CA) de Java. Looker usa el paquete de AC para verificar la autenticidad de los hosts con los que se comunica cuando realiza solicitudes salientes desde el servidor de Looker. Esto incluye acciones como realizar 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 administra el paquete de AC, que reside en el disco. Esto permite que los administradores de instancias de Looker alojadas por el cliente agreguen o quiten certificados del paquete de AC.
Si eliges modificar el paquete de AC, puedes usar la utilidad test_ssl_cert_validation
de Looker para probar si Looker puede validar o no un certificado de servidor cuando realiza una conexión HTTP saliente. La utilidad acepta el nombre de un archivo que contiene una lista de URL 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
se vería de la siguiente manera:
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 entrantes de TSL1.0 a Looker, sigue uno de estos dos métodos:
Modifica la línea
ssl_protocols
en el archivo de configuración Nginx y quita la opción de TLSv1, como se muestra en este fragmento de código:ssl-protocols: "TLSv1.2 TLSv1.3"
Configura un proxy o un balanceador de cargas frente a Looker que finalice el protocolo TLS o SSL. Luego, inhabilita SSL en el nivel de Looker.
Próximos pasos
Después de configurar tu certificado SSL, estará todo listo para agregar la redirección de puertos para obtener una URL más clara.