Lewati ke konten utama

SSL/TLS Encryption in Transit for Redis

Database Redis bersertifikat Virtuozzo dilengkapi dengan add-on bawaan yang mengimplementasikan “encryption in transit”. Fungsionalitas ini memastikan perlindungan data dengan koneksi terenkripsi SSL/TLS saat bergerak antar server. Setelah pemasangan add-on, dukungan untuk koneksi aman dikonfigurasi pada port terpisah 6380, sambil tetap mempertahankan port default 6379 untuk menerima koneksi yang tidak terenkripsi demi kompatibilitas dengan sistem sebelumnya (jika perlu, itu dapat dinonaktifkan melalui pengaturan).

Add-On Installation

Add-on ini hanya dapat dipasang di atas node Redis.

1. Dalam dashboard platform, pergi ke bagian Add-Ons dari lapisan database Redis yang sesuai, dan klik Install untuk solusi Redis Encrypted Connection.

tip

Add-on ini juga tersedia dari Marketplace dan dapat diimpor dari repositori GitHub yang sesuai.

Redis SSL add-on

2. Dalam jendela instalasi yang terbuka, pilih Environment dan Node Group(s) target di mana add-on akan dipasang.

install Redis SSL

Klik Install untuk melanjutkan.

3. Dalam satu menit, environment Anda akan dikonfigurasikan.

SSL add-on installed
peringatan

Port 6380 digunakan untuk koneksi aman secara default dan otomatis ditambahkan ke aturan firewall selama pemasangan add-on.

Redis port 6380

Anda dapat menemukan sertifikat SSL yang dihasilkan di dalam folder /var/lib/jelastic/keys/SSL-TLS.

Add-On Specifics

Di bawah ini Anda dapat mempelajari tentang proses dan spesifikasi pembuatan sertifikat:

  • Add-on ini menginstal sebelumnya Redli – alternatif berbasis Go yang lebih humanis daripada utilitas redis-cli resmi.
  • Sertifikat dibuat dengan utilitas /usr/local/sbin/selfcertgen.
  • Sertifikat bersifat self-signed dan diterbitkan untuk hostname dari node tertentu. Artinya, setiap node memiliki satu set sertifikatnya sendiri, dan Anda harus menggunakan yang sesuai dengan node yang diakses untuk otentikasi.
  • Karena spesifikasi Redis, hostname alternatif ditambahkan saat membuat sertifikat server:
echo "subjectAltName = @alt_names  [alt_names] IP.1 = ${ALTNAME}" > /tmp/altname.ext
RANDFILE=/tmp/.random openssl x509 -req -in ${CERT_DIR}/server-req.pem -days 3650 -CA ${ROOT_CERT} -CAkey ${ROOT_KEY} -set_serial 01 -extfile /tmp/altname.ext > ${CERT_DIR}/server.crt
  • Sertifikat disimpan dalam folder /var/lib/jelastic/keys/SSL-TLS (dapat diakses melalui pintasan keys di file manager). Terdapat dua subfolder:
    • server – sertifikat server digunakan untuk menyediakan enkripsi TLS dari koneksi ke database Redis
    • client – sertifikat klien yang dapat diunduh dapat digunakan untuk mengotentikasi koneksi klien ke server database
Redis SSL certificates

Konfigurasi Redis:

Semua konfigurasi add-on disediakan melalui file konfigurasi /etc/redis.conf yang terpisah (juga ditambahkan ke daftar Favorites dalam file manager).

Redis configuration file

Di bawah ini, Anda dapat memeriksa daftar pengaturan paling umum yang terkait dengan SSL:

  • tls-port - menyebutkan port yang digunakan untuk koneksi SSL (6380).
  • port – menetapkan port yang dapat menerima koneksi yang tidak terenkripsi (6379).
tip

Kedua nilai sengaja dipisahkan secara default untuk memastikan kompatibilitas ke belakang. Jika Anda ingin menonaktifkan koneksi yang tidak terenkripsi sepenuhnya, atur port ke 0.

  • tls-cert-file , tls-key-file , tls-ca-cert-file – direktif menunjukkan jalur ke sertifikat SSL sisi server
  • tls-auth-clients – mengkonfigurasi apakah klien (termasuk server replika) pada port TLS diharuskan untuk mengotentikasi menggunakan sertifikat klien yang valid. Ditetapkan ke " optional " secara default - jika diberikan, sertifikat klien diterima dan harus valid (tetapi tidak diwajibkan).
  • tls-replication dan tls-cluster - dapat diaktifkan jika diperlukan untuk mendukung interkoneksi TLS dalam cluster Redis

Add-On Configuration

Setelah pemasangan, add-on dapat ditemukan di bawah tab Add-Ons untuk layer yang sesuai.

manage Redis SSL add-on

Di sini Anda dapat mengklik tombol Re-issue certificates untuk menghasilkan sertifikat SSL untuk koneksi aman yang baru.

Jika tidak lagi dibutuhkan, hapus add-on dari layer dengan memilih opsi Uninstall di menu add-on di pojok kanan atas.

Secure Connection to Redis

Untuk koneksi aman (kami akan menggunakan utilitas redis-cli sebagai contoh), tentukan perintah dengan opsi berikut:

tip

Anda dapat menyimpan password database dalam variabel khusus REDISCLI_AUTH untuk menghindari mengeksposnya di baris perintah:

export REDISCLI_AUTH={password}
redis-cli -p 6380 --tls --cacert /var/lib/jelastic/keys/SSL-TLS/client/root.crt {command}
Redis secure connect

Anda dapat menjalankan {command} apa pun yang diinginkan atau mengabaikannya untuk terhubung ke database dalam mode interaktif.

Jika server memerlukan otentikasi menggunakan sertifikat klien, Anda dapat menentukan sertifikat dan kunci privat yang sesuai menggunakan parameter --cert dan --key.

redis-cli -p 6380 --tls --cert /var/lib/jelastic/keys/SSL-TLS/client/client.crt --key /var/lib/jelastic/keys/SSL-TLS/client/client.key --cacert /var/lib/jelastic/keys/SSL-TLS/client/root.crt {command}
Redis secure connect certificates

Untuk koneksi eksternal, klien perlu mengunggah file sertifikat (client.crt, client.key, root.crt) ke komputer/container/VM mereka dan menggunakan opsi -h untuk menentukan hostname atau alamat IP jarak jauh.

SSL Configuration Examples

  • memaksakan koneksi SSL (untuk node standalone)

Tetapkan koneksi terenkripsi TLS dan nonaktifkan sepenuhnya koneksi yang tidak aman untuk klien.

1. Buka file konfigurasi /etc/redis.conf dan ubah direktif “port” menjadi 0. Ini akan menonaktifkan koneksi yang tidak terenkripsi.

2. Selanjutnya, ubah opsi “tls-port” menjadi port default Redis 6379 dalam file yang sama.

3. Jika Anda ingin mewajibkan penggunaan sertifikat klien (untuk otentikasi dan TLS mutual), tetapkan direktif “tls-auth-clients” menjadi “yes”.

4. Pergi ke pengaturan firewall dan hapus aturan untuk port 6380, karena tidak lagi diperlukan.

5. Terakhir, restart kontainer Redis untuk menerapkan perubahan.

Sekarang, layanan Redis hanya tersedia melalui koneksi SSL pada port 6379.

  • interkoneksi cluster/sentinel melalui SSL

Interkoneksi cluster Redis tetap biasa (tidak aman) secara default. Ini memastikan kompatibilitas ke belakang dengan cluster yang sudah ada. Namun, jika Anda ingin mengaktifkan enkripsi interkoneksi, ikuti langkah-langkah di bawah ini:

peringatan

Penskalaan otomatis dan manual dapat bekerja tidak benar setelah perubahan ini karena dirancang untuk koneksi biasa non-SSL.

1. Jika Anda menggunakan solusi cluster, pastikan bahwa direktif “tls-cluster” dalam file /etc/redis.conf diatur ke “yes” (batalkan komentar opsi).

2. Jika Anda menggunakan replikasi sentinel, batalkan komentar opsi “tls-replication” juga (seharusnya memiliki nilai “yes”).

3. Direktif “tls-auth-clients” sebaiknya dibiarkan sebagai “optional” (nilai default).

4. Konfigurasi cluster default menggunakan port 6379 untuk interkoneksi cluster, jadi Anda sebaiknya mengubah direktif “tls-port” menjadi 6379 atau mengubah port cluster/replikasi ke 6380.

5. Restart cluster Redis untuk menerapkan perubahan.

  • interkoneksi SSL multi-regional cluster

Ketika bekerja dengan cluster Redis multi-regional, sertifikat root yang sama harus digunakan di semua node dari semua environment untuk interkoneksi antar node yang berhasil melalui TLS.

1. Pasang SSL add-on di environment pertama dari cluster multi-regional.

2. Salin /var/lib/jelastic/keys/SSL-TLS/server/root.crt dan /var/lib/jelastic/keys/SSL-TLS/server/root.crt ke direktori /var/lib/jelastic/keys/SSL-TLS/ di semua node environment kedua dan ketiga.

3. Sekarang pasang SSL add-on pada environment ini seperti biasa – sertifikat root baru tidak akan dihasilkan dengan cara ini.

Baca Juga