Looker 應用程式的預設安裝程序會使用 HTTPS 的自行簽署 SSL 憑證。對於客戶代管執行個體的實際工作環境,我們建議安裝信任供應商提供的 SSL 憑證。
如要在 Looker 中使用 SSL 憑證,您必須使用憑證和金鑰建立 Java 金鑰庫。
您應該會有下列檔案:
- 名為
looker.pem
的憑證檔案,內含主要憑證 - 相關聯的金鑰檔案,名稱為
looker.key
- 選用:名為
ca.pem
的中繼憑證授權單位 (CA) 鏈結檔案
.pem
檔案不需要包含根憑證。
安裝憑證
這些檔案都應位於同一個目錄中。預設為 /home/looker/looker/.ssl
。
建立新目錄並設為目前目錄:
mkdir /home/looker/looker/.ssl cd /home/looker/looker/.ssl
為 KeyStore 選擇密碼,並將密碼放入名為
.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 KeyStore 轉換為 Java KeyStore:
keytool -importkeystore \ -srckeystore importme.p12 \ -destkeystore looker.jks \ -srcstoretype pkcs12 \ -alias 1
系統會提示您輸入新的 KeyStore 密碼和 PKCS12 KeyStore 密碼。請繼續使用
.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 前端設定 Proxy 或負載平衡器,以終止 TLS 或 SSL 通訊協定。接著,請在 Looker 層級停用 SSL。
後續步驟
設定 SSL 憑證後,您就可以新增通訊埠轉送,以便取得更簡潔的網址。