Mengonfigurasi sertifikat SSL untuk HTTPS yang tepat

Penginstalan default aplikasi Looker menggunakan sertifikat SSL yang ditandatangani sendiri untuk HTTPS. Untuk lingkungan produksi instance yang dihosting pelanggan, sebaiknya instal sertifikat SSL dari vendor tepercaya.

Untuk menggunakan sertifikat SSL dengan Looker, Anda harus membuat keystore Java dengan sertifikat dan kunci Anda.

Anda harus memiliki file berikut:

  • File sertifikat bernama looker.pem yang berisi sertifikat utama Anda
  • File kunci terkait bernama looker.key
  • Secara opsional, file rantai Certificate Authority (CA) perantara bernama ca.pem

File .pem Anda tidak perlu berisi sertifikat root.

Menginstal sertifikat

Semua file ini harus ada di direktori yang sama. Nilai defaultnya adalah /home/looker/looker/.ssl.

  1. Buat direktori baru dan jadikan direktori saat ini:

    mkdir /home/looker/looker/.ssl
    cd /home/looker/looker/.ssl
    
  2. Pilih sandi untuk keystore dan masukkan ke dalam file bernama .keystorepass:

    echo "some_password_here" > .keystorepass
    
  3. Jika Anda memiliki file CA, tambahkan ke akhir file sertifikat:

    echo >> looker.pem
    cat ca.pem >> looker.pem
    
  4. Konversikan sertifikat dan kunci ke keystore pkcs12:

    openssl pkcs12 -export \
        -in looker.pem       \
        -inkey looker.key    \
        -out importme.p12
    
  5. Anda akan diminta memasukkan sandi ekspor. Gunakan yang Anda masukkan dalam file .keystorepass.

  6. Konversikan keystore pkcs12 ke keystore Java:

    keytool -importkeystore     \
        -srckeystore importme.p12 \
        -destkeystore looker.jks  \
        -srcstoretype pkcs12      \
        -alias 1
    
  7. Anda akan diminta memasukkan sandi keystore baru dan sandi keystore pkcs12. Terus gunakan yang ada di file .keystorepass.

  8. Buat file bernama lookerstart.cfg di direktori yang sama dengan looker.jar Anda. File ini akan mengonfigurasi opsi Looker yang diperlukan setiap kali Looker dimulai. File harus berisi:

LOOKERARGS="--ssl-keystore=/home/looker/looker/.ssl/looker.jks --ssl-keystore-pass-file=/home/looker/looker/.ssl/.keystorepass"

Memvalidasi sertifikat

Setelah Looker berjalan, Anda dapat memverifikasi bahwa sertifikat Anda diinstal dengan benar dengan OpenSSL s_client.

openssl s_client -connect localhost:9999

Jika nama host Anda adalah looker.yourdomain.com, Anda akan melihat baris dalam output seperti ini:

subject=/OU=Domain Control Validated/CN=looker.yourdomain.com

Cara lain untuk memeriksanya adalah dengan wget. Pengujian ini dapat dilakukan dari host mana pun yang memiliki akses jaringan ke instance Looker Anda melalui HTTPS.

Di Looker yang menggunakan sertifikat yang ditandatangani sendiri secara default, output akan menampilkan nama umum sertifikat 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'.

Di Looker yang menggunakan sertifikat dari otoritas sertifikasi, nama umum sertifikat harus cocok dengan nama DNS yang digunakan klien untuk mengakses Looker (atau sertifikat karakter pengganti yang setara).

Berikut adalah contoh server yang menggunakan sertifikat "asli" (bukan yang ditandatangani sendiri):

$ 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]

Memvalidasi sertifikat situs terhadap paket CA

Mulai Looker 5.18, Looker menggunakan paket root certificate Java Certificate Authority (CA). Looker menggunakan paket CA untuk memverifikasi keaslian host yang berkomunikasi dengannya saat membuat permintaan keluar dari server Looker. Hal ini mencakup tindakan seperti membuat permintaan ke webhook keluar, melakukan pencadangan S3, meminta berbagai bentuk autentikasi, dan berkomunikasi dengan server verifikasi lisensi.

Java menyediakan dan mengelola paket CA, yang berada di disk. Hal ini memungkinkan admin instance Looker yang dihosting pelanggan menambahkan atau menghapus sertifikat dari paket CA.

Jika memilih untuk mengubah paket CA, Anda dapat menggunakan utilitas test_ssl_cert_validation Looker untuk menguji apakah Looker dapat memvalidasi sertifikat server saat membuat koneksi HTTP keluar atau tidak. Utilitas ini menerima nama file yang berisi daftar URL yang ingin Anda uji, dengan satu URL per baris, seperti ini:

https://www.google.com
https://looker.com
https://wrong.host.badssl.com/

Jika nama file ini adalah hosts, Anda akan menggunakan test_ssl_cert_validation seperti ini:

$ ./looker test_ssl_cert_validation hosts

Output test_ssl_cert_validation akan terlihat seperti ini:

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

Menonaktifkan protokol SSL yang tidak aman

Untuk menonaktifkan koneksi TSL1.0 masuk ke Looker, ikuti salah satu dari dua metode berikut:

  • Ubah baris ssl_protocols di file konfigurasi Nginx dan hapus opsi untuk TLSv1, seperti yang ditunjukkan dalam cuplikan kode ini:

       ssl-protocols: "TLSv1.2 TLSv1.3"
    
  • Siapkan proxy atau load balancer di depan Looker yang menghentikan protokol TLS atau SSL. Kemudian, nonaktifkan SSL di tingkat Looker.

Langkah berikutnya

Setelah menyiapkan sertifikat SSL, Anda akan siap untuk menambahkan penerusan port untuk URL yang lebih bersih.