Uma instalação predefinida da aplicação Looker usa certificados SSL autoassinados para HTTPS. Para ambientes de produção de instâncias alojadas pelo cliente, recomendamos a instalação de um certificado SSL de um fornecedor fidedigno.
Para usar um certificado SSL com o Looker, tem de criar uma keystore Java com o seu certificado e chave.
Deve ter os seguintes ficheiros:
- Um ficheiro de certificado denominado
looker.pem
que contém o seu certificado principal - Um ficheiro de chave associado denominado
looker.key
- Opcionalmente, um ficheiro de cadeia de autoridade de certificação (AC) intermédio denominado
ca.pem
O seu ficheiro
.pem
não tem de conter um certificado de raiz.
Instale o certificado
Todos estes ficheiros devem existir no mesmo diretório. A predefinição é /home/looker/looker/.ssl
.
Crie o novo diretório e torne-o o diretório atual:
mkdir /home/looker/looker/.ssl cd /home/looker/looker/.ssl
Escolha uma palavra-passe para o keystore e coloque-a num ficheiro denominado
.keystorepass
:echo "some_password_here" > .keystorepass
Se tiver um ficheiro de CA, anexe-o ao final do ficheiro de certificado:
echo >> looker.pem cat ca.pem >> looker.pem
Converta o certificado e a chave numa keystore
pkcs12
:openssl pkcs12 -export \ -in looker.pem \ -inkey looker.key \ -out importme.p12
É-lhe pedido uma palavra-passe de exportação. Use o que colocou no ficheiro
.keystorepass
.Converta o repositório de chaves pkcs12 num repositório de chaves Java:
keytool -importkeystore \ -srckeystore importme.p12 \ -destkeystore looker.jks \ -srcstoretype pkcs12 \ -alias 1
É-lhe pedido a nova palavra-passe do keystore e a palavra-passe do keystore pkcs12. Continuar a usar o ficheiro
.keystorepass
.Crie um ficheiro denominado
lookerstart.cfg
no mesmo diretório que o ficheirolooker.jar
. Este ficheiro configura as opções do Looker necessárias sempre que o Looker é iniciado. O ficheiro deve conter:
LOOKERARGS="--ssl-keystore=/home/looker/looker/.ssl/looker.jks --ssl-keystore-pass-file=/home/looker/looker/.ssl/.keystorepass"
Valide o certificado
Assim que o Looker estiver em execução, pode verificar se o certificado está instalado corretamente com o OpenSSL s_client
.
openssl s_client -connect localhost:9999
Se o seu nome de anfitrião for looker.yourdomain.com
, deve ver uma linha na saída semelhante a esta:
subject=/OU=Domain Control Validated/CN=looker.yourdomain.com
Outra forma de verificar é com o wget
. Este teste pode ser realizado a partir de qualquer anfitrião que tenha acesso à rede à sua instância do Looker através de HTTPS.
Num Looker que use o certificado autoassinado predefinido, o resultado mostra o nome comum do 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'.
Num Looker que use um certificado de uma autoridade de certificação, o nome comum do certificado tem de corresponder ao nome DNS que os clientes usam para aceder ao Looker (ou a um certificado de caráter universal equivalente).
Segue-se um exemplo de um servidor que usa um certificado "real" (não autoassinado):
$ 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 o certificado de um site em relação ao pacote de ACs
A partir do Looker 5.18, o Looker usa o pacote de certificados de raiz da autoridade de certificação (AC) Java. O Looker usa o pacote de AC para verificar a autenticidade dos anfitriões com os quais comunica quando faz pedidos de saída do servidor do Looker. Isto inclui ações como fazer pedidos a webhooks de saída, fazer cópias de segurança do S3, pedir várias formas de autenticação e comunicar com o servidor de validação de licenças.
O Java fornece e gere o pacote de ACs, que reside no disco. Isto permite que os administradores de instâncias do Looker alojadas pelo cliente adicionem ou removam certificados do pacote de ACs.
Se optar por modificar o pacote de ACs, pode usar a utilidade test_ssl_cert_validation
do Looker para testar se o Looker consegue validar um certificado de servidor quando faz uma ligação HTTP de saída. O utilitário aceita o nome de um ficheiro que contém uma lista de URLs que quer testar, com um URL por linha, da seguinte forma:
https://www.google.com
https://looker.com
https://wrong.host.badssl.com/
Se o nome deste ficheiro fosse hosts
, usaria test_ssl_cert_validation
da seguinte forma:
$ ./looker test_ssl_cert_validation hosts
O resultado de test_ssl_cert_validation
teria o seguinte aspeto:
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
Desativação de protocolos SSL inseguros
Para desativar as ligações TSL1.0 de entrada ao Looker, siga um destes dois métodos:
Modifique a linha
ssl_protocols
no ficheiro de configuração do Nginx e remova a opção para TLSv1, conforme mostrado neste fragmento do código:ssl-protocols: "TLSv1.2 TLSv1.3"
Configure um proxy ou um balanceador de carga à frente do Looker que termine o protocolo TLS ou SSL. Em seguida, desative o SSL ao nível do Looker.
Passos seguintes
Depois de configurar o certificado SSL, pode adicionar o encaminhamento de portas para um URL mais limpo.