MySQL memungkinkan pengguna untuk terhubung dengan aman ke database menggunakan sertifikat SSL/TLS. Pada artikel ini kita akan melihat Konfigurasi SSL MySQL – cara mengaktifkan SSL/TLS untuk MySQL di Ubuntu.
Cara Mengaktifkan SSL/TLS untuk MySQL
Berikut adalah langkah-langkah untuk Setup koneksi SSL di MySQL.
1. Instal MySQL
Buka terminal dan jalankan perintah berikut untuk menginstal MySQL.
$ sudo apt-get update $ sudo apt-get install mysql-client
Bonus Baca :MySQL Ubah Collation Semua Tabel
2. Periksa Status SSL
Masuk ke MySQL sebagai root
$ mysql -uroot -p
Anda akan dimintai kata sandi root. Setelah masuk, masukkan perintah berikut untuk menemukan status SSL/TLS saat ini
mysql> SHOW VARIABLES LIKE '%ssl%'; +---------------+----------+ | Variable_name | Value | +---------------+----------+ | have_openssl | DISABLED | | have_ssl | DISABLED | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | | +---------------+----------+
Anda akan menemukan bahwa have_openssl dan memiliki_ssl keduanya memiliki nilai DISABLED. Artinya SSL tidak diaktifkan di MySQL.
Bonus Baca :Blog Basis Data Teratas untuk Diikuti
3. Buat sertifikat SSL/TLS
Selanjutnya, kita perlu membuat sertifikat SSL/TLS dan mengarahkan server MySQL ke lokasinya. Biasanya, orang menggunakan openssl untuk menghasilkan sertifikat SSL dan kemudian memindahkannya ke /var/lib/mysql yang merupakan lokasi default file SSL untuk server MySQL.
Namun, MySQL 5.7 dan versi yang lebih baru sudah dikirimkan dengan utilitas mysql_ssl_rsa_setup untuk menyederhanakan proses ini. Ini menghasilkan sertifikat SSL dan menyimpannya di /var/lib/mysql.
Karena kita membutuhkan proses mysql untuk dapat membaca file-file ini, kita akan membuat mysql sebagai pemilik file-file ini, seperti yang ditunjukkan di bawah ini.
Jalankan perintah berikut untuk menghasilkan sertifikat SSL
$ sudo mysql_ssl_rsa_setup --uid=mysqlGenerating a 2048 bit RSA private key ...................................+++ .....+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key ......+++ .................................+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key ......................................................+++ .................................................................................+++
writing new private key to 'client-key.pem'
-----
Anda dapat memeriksa file yang dihasilkan dengan menjalankan perintah berikut
$ ls -all /var/lib/mysql/*.pem
Anda akan melihat sesuatu seperti berikut
256740 4 -rw-r--r-- 1 mysql mysql 1078 May 1 12:24 /var/lib/mysql/server-cert.pem 256735 4 -rw------- 1 mysql mysql 1675 May 1 12:24 /var/lib/mysqlsql/ca-key.pem 256739 4 -rw-r--r-- 1 mysql mysql 451 May 1 12:24 /var/lib/mysqlsql/public_key.pem 256741 4 -rw------- 1 mysql mysql 1689 May 1 12:24 /var/lib/mysqlsql/client-key.pem 256737 4 -rw-r--r-- 1 mysql mysql 1064 May 1 12:24 /var/lib/mysqlsql/ca.pem 256743 4 -rw-r--r-- 1 mysql mysql 1048 May 1 12:24 /var/lib/mysqlsql/client-cert.pem 256736 4 -rw------- 1 mysql mysql 1625 May 1 12:24 /var/lib/mysqlsql/private_key.pem 256738 4 -rw------- 1 mysql mysql 1615 May 1 12:24 /var/lib/mysqlsql/server-key.pem
Ini adalah file sertifikat SSL dan pasangan kunci pribadi untuk otoritas sertifikat, Server MySQL, dan klien MySQL.
Bonus Baca :Alternatif Meja Kerja MySQL Teratas
4. Aktifkan Koneksi SSL di Server MySQL
Selanjutnya, restart MySQL Server untuk mengaktifkan SSL/TLS di MySQL.
$ sudo systemctl restart mysql
Server MySQL akan secara otomatis mencari file sertifikat SSL di /var/lib/mysql ketika dimulai. Jadi Anda tidak perlu menentukan lokasinya secara manual di file konfigurasi MySQL.
Bonus Baca :Cara Mengaktifkan Cache Query MySQL
5. Verifikasi koneksi SSL
Masuk ke MySQL seperti sebelumnya (langkah 2) dan jalankan perintah berikut.
SHOW VARIABLES LIKE '%ssl%'; Output +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | ca.pem | | ssl_capath | | | ssl_cert | server-cert.pem | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | server-key.pem | +---------------+-----------------+
Sekarang Anda akan menemukan have_openssl dan memiliki_ssl variabel adalah YA. Anda juga akan melihat bahwa ssl_ca , ssl_cert dan ssl_key diisi dengan nilai yang sesuai.
Anda juga dapat memeriksa detail koneksi Anda.
mysql>\s
--------------
. . .
SSL: Cipher in use is DHE-RSA-AES256-SHA
. . .
Connection: 127.0.0.1 via TCP/IP
. . .
--------------
6. Konfigurasikan SSL untuk koneksi jarak jauh (Opsional)
Jika server MySQL Anda memiliki koneksi masuk jarak jauh, maka Anda dapat mengaktifkan SSL untuk koneksi jarak jauh, dan bahkan membuatnya wajib dengan memodifikasi file konfigurasi server MySQL.
Buka terminal dan jalankan perintah berikut untuk membuka konfigurasi MySQL.
$ sudo vi /etc/mysql/my.cnf
Tambahkan blok kode [mysqld] seperti yang ditunjukkan, di bawah dua pernyataan !includedir.
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
# Require clients to connect either using SSL
# or through a local socket file
require_secure_transport = ON
bind-address = 0.0.0.0
Di baris terakhir, kami telah menetapkan bind-address ke 0.0.0.0 untuk mengizinkan koneksi jarak jauh. Anda tidak perlu menambahkannya jika Anda telah mengaktifkan koneksi jarak jauh.
Mulai ulang Server MySQL untuk menerapkan perubahan. Mulai sekarang, MySQL akan membutuhkan SSL.
Untuk koneksi jarak jauh, jangan lupa untuk membuka port 443, bukan default 3306. Ini karena koneksi SSL terjadi melalui port 443, dan bukan 3306.
Semoga artikel ini membantu Anda mengaktifkan koneksi SSL/TLS di MySQL.