Uma instalação padrão do aplicativo Looker usa certificados SSL autoassinados para HTTPS. Para ambientes de produção de instâncias hospedadas pelo cliente, recomendamos a instalação de um certificado SSL de um fornecedor confiável.
Para usar um certificado SSL com o Looker, você precisa criar um keystore Java com o certificado e a chave.
Você deve ter os seguintes arquivos:
- Um arquivo de certificado chamado
looker.pem
que contém o certificado principal - Um arquivo de chave associado chamado
looker.key
- Opcionalmente, um arquivo de cadeia de autoridade de certificação (CA, na sigla em inglês) intermediária chamado
ca.pem
O arquivo
.pem
não precisa conter um certificado raiz.
Instalar o certificado
Todos esses arquivos precisam estar no mesmo diretório. O padrão é /home/looker/looker/.ssl
.
Crie o novo diretório e torne-o o atual:
mkdir /home/looker/looker/.ssl cd /home/looker/looker/.ssl
Escolha uma senha para o keystore e coloque-a em um arquivo chamado
.keystorepass
:echo "some_password_here" > .keystorepass
Se você tiver um arquivo de AC, anexe-o ao final do arquivo de certificado:
echo >> looker.pem cat ca.pem >> looker.pem
Converta o certificado e a chave em um keystore
pkcs12
:openssl pkcs12 -export \ -in looker.pem \ -inkey looker.key \ -out importme.p12
Você vai precisar fornecer uma senha de exportação. Use o que você colocou no arquivo
.keystorepass
.Converta o keystore pkcs12 em um keystore Java:
keytool -importkeystore \ -srckeystore importme.p12 \ -destkeystore looker.jks \ -srcstoretype pkcs12 \ -alias 1
Você vai precisar informar a nova senha do keystore e a senha do keystore pkcs12. Continue usando o arquivo
.keystorepass
.Crie um arquivo chamado
lookerstart.cfg
no mesmo diretório quelooker.jar
. Esse arquivo vai configurar as opções necessárias sempre que o Looker for iniciado. O arquivo precisa conter:
LOOKERARGS="--ssl-keystore=/home/looker/looker/.ssl/looker.jks --ssl-keystore-pass-file=/home/looker/looker/.ssl/.keystorepass"
Validar o certificado
Quando o Looker estiver em execução, você poderá verificar se o certificado foi instalado corretamente com o OpenSSL s_client
.
openssl s_client -connect localhost:9999
Se o nome do host for looker.yourdomain.com
, você verá uma linha como esta na saída:
subject=/OU=Domain Control Validated/CN=looker.yourdomain.com
Outra maneira de verificar isso é com wget
. Esse teste pode ser realizado em qualquer host que tenha acesso à rede da sua instância do Looker por HTTPS.
Em um Looker que usa o certificado autoassinado padrão, a saída 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'.
Em um Looker que usa um certificado de uma autoridade certificadora, o nome comum do certificado precisa corresponder ao nome DNS que os clientes usam para acessar o Looker (ou um certificado curinga equivalente).
Este é um exemplo de servidor que usa Certificado (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]
Como validar o certificado de um site em relação ao pacote de CAs
A partir da versão 5.18, o Looker usa o pacote de certificados raiz da autoridade certificadora (AC) Java. O Looker usa o pacote de CAs para verificar a autenticidade dos hosts com os quais se comunica ao fazer solicitações de saída do servidor do Looker. Isso inclui ações como fazer solicitações para webhooks de saída, executar backups do S3, solicitar várias formas de autenticação e se comunicar com o servidor de verificação de licença.
O Java fornece e gerencia o pacote de AC, que fica no disco. Assim, os administradores de instâncias do Looker hospedadas pelo cliente podem adicionar ou remover certificados do pacote de AC.
Se você modificar o pacote da AC, poderá usar o utilitário test_ssl_cert_validation
do Looker para testar se ele pode ou não validar um certificado do servidor ao fazer uma conexão HTTP de saída. O utilitário aceita o nome de um arquivo que contém uma lista de URLs que você quer testar, com um URL por linha, como esta:
https://www.google.com
https://looker.com
https://wrong.host.badssl.com/
Se o nome do arquivo fosse hosts
, você usaria test_ssl_cert_validation
assim:
$ ./looker test_ssl_cert_validation hosts
A saída de test_ssl_cert_validation
ficaria assim:
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
Como desativar protocolos SSL não seguros
Para desativar as conexões TSL1.0 de entrada para o Looker, siga um destes dois métodos:
Modifique a linha
ssl_protocols
no arquivo de configuração do Nginx e remova a opção TLSv1, conforme mostrado neste snippet de código:ssl-protocols: "TLSv1.2 TLSv1.3"
Configurar um proxy ou balanceador de carga no Looker que encerre o protocolo TLS ou SSL. Em seguida, desative o SSL no nível do Looker.
Próximas etapas
Depois de configurar seu certificado SSL, você estará pronto para adicionar o encaminhamento de portas para um URL mais limpo.