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
を使用して確認することもできます。このテストは、Looker インスタンスへのネットワーク アクセスがある任意のホストから HTTPS で実施できます。
デフォルトの自己署名証明書を使用する 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 は CA バンドルを使用して、Looker サーバーからの送信リクエスト時に通信するホストの信頼性を検証します。これには、送信 Webhook へのリクエスト、S3 バックアップの実行、さまざまな形式の認証のリクエスト、ライセンス確認サーバーとの通信などのアクションが含まれます。
Java では、ディスク上に存在する CA バンドルが提供されています。これにより、顧客がホストする Looker インスタンスの管理者は、CA バンドルの証明書を追加または削除できるようになります。
CA バンドルを変更する場合、Looker の test_ssl_cert_validation
ユーティリティを使用して、送信 HTTP 接続時に Looker がサーバー証明書を検証できるかどうかをテストできます。ユーティリティは、次のように、テストする URL のリストを含むファイル名を 1 行に 1 つずつ入力します。
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 プロトコルの無効化
セキュリティ コンプライアンスのために安全でない TLS を削除する必要がある場合は、$JAVA_HOME/lib/security/java.security
ファイルに none
jdk.tls.disabledAlgorithms=SSLv2Hello, SSLv3, TLSv1, TLSv1.1, 3DES_EDE_CBC
行を追加します。
次のステップ
SSL 証明書を設定したら、よりクリーンな URL のポート転送を追加できるようになります。