Looker 应用的默认安装使用 HTTPS 的自签名 SSL 证书。对于客户托管实例的生产环境,我们建议安装来自可信供应商的 SSL 证书。
如需将 SSL 证书与 Looker 搭配使用,您需要使用证书和密钥创建 Java 密钥库。
您应具备以下文件:
- 一个名为
looker.pem
的证书文件,其中包含您的主证书 - 名为
looker.key
的关联密钥文件 - (可选)名为
ca.pem
的中间证书授权机构 (CA) 链文件
您的
.pem
文件无需包含根证书。
安装证书
这些文件都应位于同一目录中。默认值为 /home/looker/looker/.ssl
。
创建新目录并将其设为当前目录:
mkdir /home/looker/looker/.ssl cd /home/looker/looker/.ssl
为密钥库选择密码,并将其放入名为
.keystorepass
的文件中:echo "some_password_here" > .keystorepass
如果您有 CA 文件,请将其附加到证书文件的末尾:
echo >> looker.pem cat ca.pem >> looker.pem
将证书和密钥转换为
pkcs12
密钥库:openssl pkcs12 -export \ -in looker.pem \ -inkey looker.key \ -out importme.p12
系统会提示您输入导出密码。使用您放入
.keystorepass
文件中的密钥。将 pkcs12 密钥库转换为 Java 密钥库:
keytool -importkeystore \ -srckeystore importme.p12 \ -destkeystore looker.jks \ -srcstoretype pkcs12 \ -alias 1
系统会提示您输入新的密钥库密码和 pkcs12 密钥库密码。请继续使用
.keystorepass
文件中的代码。在
looker.jar
所在的目录中创建一个名为lookerstart.cfg
的文件。此文件会在每次 Looker 启动时配置必要的 Looker 选项。该文件应包含:
LOOKERARGS="--ssl-keystore=/home/looker/looker/.ssl/looker.jks --ssl-keystore-pass-file=/home/looker/looker/.ssl/.keystorepass"
验证证书
Looker 运行后,您可以使用 OpenSSL s_client
验证证书是否已正确安装。
openssl s_client -connect localhost:9999
如果您的主机名是 looker.yourdomain.com
,您应该会在输出中看到如下所示的一行内容:
subject=/OU=Domain Control Validated/CN=looker.yourdomain.com
另一种检查方法是使用 wget
。此测试可在任何能够通过 HTTPS 访问 Looker 实例的网络主机上执行。
在使用默认自签名证书的 Looker 中,输出显示证书常用名称 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'.
在使用证书授权机构颁发的证书的 Looker 中,证书通用名称必须与客户端用于访问 Looker 的 DNS 名称(或等效的通配符证书)一致。
下面是一个使用“真实”(非自签名)证书的服务器示例:
$ 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]
根据 CA 文件包验证网站的证书
从 Looker 5.18 开始,Looker 使用 Java 证书授权机构 (CA) 根证书捆绑包。从 Looker 服务器发出出站请求时,Looker 会使用 CA 软件包来验证其通信主机的真实性。这包括向出站 webhook 发出请求、执行 S3 备份、请求各种形式的身份验证以及与许可验证服务器通信等操作。
Java 提供并管理位于磁盘上的 CA 软件包。这样,客户托管的 Looker 实例的管理员就可以向 CA 软件包添加或移除证书。
如果您选择修改 CA 文件包,可以使用 Looker 的 test_ssl_cert_validation
实用程序测试 Looker 在建立出站 HTTP 连接时能否验证服务器证书。该实用程序接受包含要测试的网址列表的文件名称,每行一个网址,如下所示:
https://www.google.com
https://looker.com
https://wrong.host.badssl.com/
如果此文件的名称是 hosts
,您应使用如下 test_ssl_cert_validation
:
$ ./looker test_ssl_cert_validation hosts
test_ssl_cert_validation
的输出将如下所示:
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
停用不安全的 SSL 协议
如需停用对 Looker 的入站 TSL1.0 连接,请按以下两种方法之一操作:
修改 Nginx 配置文件中的
ssl_protocols
行并移除 TLSv1 选项,如以下代码段所示:ssl-protocols: "TLSv1.2 TLSv1.3"
在 Looker 前面设置一个代理或负载均衡器,用于终止 TLS 或 SSL 协议。然后,在 Looker 级别停用 SSL。
后续步骤
设置 SSL 证书后,您就可以为更简洁的网址添加端口转发了。