Lewati ke konten utama

SSL/TLS Encryption in Transit for MySQL/MariaDB/Percona

Solusi database MySQL/MariaDB/Percona dilengkapi dengan add-on bawaan yang menerapkan “encryption in transit ”. Fungsionalitas ini memastikan perlindungan data dengan koneksi terenkripsi SSL/TLS saat data berpindah antar server. Setelah pemasangan add-on, semua operasi terkait ditangani secara otomatis - enkripsi data sebelum transmisi, otentikasi titik akhir, dekripsi konten, dan verifikasi saat tiba.

Add-On Installation

Add-on dapat dipasang di atas node MySQL/MariaDB/Percona dan ProxySQL (untuk cluster database) saja.

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

tip

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

MySQL SSL add-on

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

install MySQL SSL add-on
peringatan

Baik lapisan MySQL/MariaDB/Percona dan ProxySQL (jika ditambahkan) harus dipilih untuk solusi clustered.

Klik Install untuk melanjutkan.

3. Dalam satu menit, database Anda akan dikonfigurasi ulang untuk bekerja melalui koneksi terenkripsi.

SSL add-on installed

Add-On Specifics

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

  • Sertifikat dibuat dengan utilitas /usr/local/sbin/selfcertgen.
  • Sertifikat bersifat self-signed dan diterbitkan untuk hostname node tertentu. Artinya setiap node memiliki satu set sertifikat sendiri, dan Anda harus menggunakan yang sesuai dengan node yang diakses untuk otentikasi.
  • 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 memberikan enkripsi TLS dari koneksi ke database
    • client – sertifikat client yang dapat diunduh dapat digunakan untuk mengotentikasi koneksi klien ke server database
SSL add-on certificates

Konfigurasi MySQL/MariaDB/Percona:

  • Semua konfigurasi add-on disediakan melalui file konfigurasi terpisah /etc/mysql/conf.d/ssl-config.cnf:

    [mysqld]
    ssl_cert=/var/lib/jelastic/keys/SSL-TLS/server/server.crt
    ssl_key=/var/lib/jelastic/keys/SSL-TLS/server/server.key
    ssl-cipher=ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA
    #require_secure_transport=ON
SSL configuration file
  • Konfigurasinya menyediakan jalur ke file SSL server dan daftar cipher yang didukung. Juga, termasuk opsi (dikomentari secara default) untuk membuat server meminta penggunaan koneksi aman. Jika diubah, klien tidak akan dapat terhubung ke server ini menggunakan koneksi biasa yang tidak terenkripsi.

Konfigurasi ProxySQL:

  • SSL pada node ProxySQL diaktifkan dengan menetapkan variabel berikut pada semua server:

    • mysql-have_ssl (true) - mengaktifkan SSL untuk koneksi frontend
    • use_ssl (1) - menetapkan kolom yang sesuai di mysql_servers, yang akan memberi tahu ProxySQL bahwa node backend kita menggunakan SSL
  • Perubahan dilakukan dengan kueri SQL berikut:

    UPDATE global_variables SET variable_value='true' WHERE variable_name='mysql-have_ssl';
    LOAD MYSQL VARIABLES TO RUNTIME;
    SAVE MYSQL VARIABLES TO DISK;
    UPDATE mysql_servers SET use_ssl=1 WHERE port=3306;
    LOAD MYSQL VARIABLES TO RUNTIME;
    LOAD MYSQL SERVERS TO RUNTIME;
    SAVE MYSQL SERVERS TO DISK;

Add-On Configuration

Setelah pemasangan, add-on dapat ditemukan di bawah tab Add-Ons untuk layer yang sesuai. Di sini, Anda dapat menghasilkan ulang sertifikat SSL dengan mengklik tombol Re-issue certificates (misalnya jika Anda berpikir mereka dikompromikan atau terhapus secara tidak sengaja).

configure MySQL SSL add-on

Untuk menghapus add-on dari layer (termasuk konfigurasi khusus dan sertifikat SSL yang dihasilkan), perluas menu di pojok kanan atas panel dan klik Uninstall.

Secure Connection to MySQL/MariaDB/Percona

1. Fungsionalitas “encryption in transit ” (server-side encryption) berfungsi segera setelah pemasangan add-on. Anda dapat memeriksanya dengan menghubungkan ke database menggunakan kredensial dari email. Untuk koneksi jarak jauh, Anda bisa menambahkan endpoint atau public IP:

database endpoint

Gunakan perintah berikut untuk menghubungkan ke database:

mysql --ssl-mode=required -h {host} -P {port} -u {user} -p
peringatan

Jika Anda bekerja dengan klien MariaDB, ganti opsi “--ssl-mode=required” dengan “--ssl”.

Di sini:

  • {user} - nama pengguna database untuk koneksi
  • {host} - titik masuk database (endpoint, dalam kasus kita)
  • {port} - port untuk koneksi (dari endpoint, dalam kasus kita)

Setelah terhubung, jalankan perintah status dan periksa lini SSL di output.

MySQL remote connection with SSL

2. Ketika terhubung ke server, Anda dapat mengonfigurasi penggunaan sertifikat klien untuk otentikasi untuk mendapatkan server- dan client-side encryption. Jalankan perintah di bawah ini untuk membuat otentikasi SSL wajib untuk pengguna yang ditentukan. Misalnya, kita akan memberikan “user-2700607 ” (gantilah placeholder {user}) dari email yang diterima setelah pembuatan environment:

FLUSH PRIVILEGES;
ALTER USER '{user}'@'%' REQUIRE X509;
ALTER USER '{user}'@'localhost' REQUIRE X509;
FLUSH PRIVILEGES;
alter user command
peringatan

Common name (CN) tidak diperiksa, setiap sertifikat yang ditandatangani dengan certificate authority (CA) ini akan dianggap sesuai. Jika Anda ingin memeriksa CN dari sertifikat klien (yaitu apakah sertifikat diterbitkan untuk pengguna tertentu), jalankan perintah berikut: FLUSH PRIVILEGES; ALTER USER '{user}'@'%' REQUIRE SUBJECT 'CN={user}'; ALTER USER '{user}'@'localhost' REQUIRE SUBJECT 'CN={user}'; FLUSH PRIVILEGES;, Juga, jika Anda ingin menggunakan sertifikat saja untuk login, Anda bisa menghapus persyaratan password dengan perintah ALTER USER juga.

Sekarang, berikan server klien (komputer/container/VM) dengan file sertifikat SSL yang sesuai, yang dapat diunduh dari direktori /var/lib/jelastic/keys/SSL-TLS/client dari node target yang dibutuhkan. Setelah selesai, Anda bisa terhubung dengan perintah berikut:

mysql –h {host} -P {port} -u {user} -p --ssl-mode=required --ssl-ca={path/to/root.crt} --ssl-cert={path/to/client.crt} --ssl-key={path/to/client.key}
SSL connection with client certificates
tip

Untuk menghindari menentukan sertifikat sebagai argumen, Anda dapat menambahkan opsi semacam itu ke file my.cnf di server klien:

[client]
ssl-ca = {path/to/root.crt}
ssl-cert = {path/to/client.crt}
ssl-key = {path/to/client.key}

Baca Juga