Una instalación predeterminada de la aplicación de Looker usa certificados SSL autofirmados para HTTPS. Para entornos de producción, recomendamos instalar un certificado SSL de un proveedor de confianza.
Para usar un certificado SSL con Looker, deberá crear un almacén de claves Java con su certificado y clave.
Deberías tener los siguientes archivos:
- Un archivo de certificado llamado
looker.pem
que contiene el certificado principal - Un archivo de claves asociado llamado
looker.key
- De manera opcional, un archivo de cadena de autoridad certificada (CA) intermedia 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 haz que sea 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 CA, agrégalo 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 le solicitará una contraseña de exportación. Usa el que agregaste al archivo
.keystorepass
anterior.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 del archivo
.keystorepass
.Crea un archivo llamado
lookerstart.cfg
en el mismo directorio que tulooker.jar
. En este archivo, se configurarán las opciones necesarias de Looker cada vez que se inicie Looker. El archivo debe contener la siguiente información:
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 se esté ejecutando, puedes verificar que tu 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 hacerlo es con wget
. Esta prueba se puede realizar desde cualquier host que tenga acceso de red a su 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 usa un certificado de una autoridad certificada, 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]
Validando el certificado de un sitio con el paquete de CA
A partir de la versión Looker 5.18, Looker usa el paquete de certificados raíz de la autoridad certificada de Java (CA). Looker usa el paquete de CA 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 CA, que se encuentra en el disco. Esto permite a los administradores de instancias de Looker alojadas por el cliente agregar 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 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 deseas 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
Inhabilita protocolos SSL no seguros
Si necesitas quitar TLS inseguras para garantizar el cumplimiento, agrega la siguiente línea a tu archivo $JAVA_HOME/lib/security/java.security
:
none
jdk.tls.disabledAlgorithms=SSLv2Hello, SSLv3, TLSv1, TLSv1.1, 3DES_EDE_CBC
Próximos pasos
Después de configurar el certificado SSL, podrás agregar una redirección de puertos para obtener una URL más limpia.