Dalam posting blog ini, kami meninjau beberapa aspek penting dalam mengonfigurasi dan mengelola SSL di hosting MySQL. Ini akan mencakup konfigurasi default, menonaktifkan SSL, dan mengaktifkan dan menegakkan SSL pada server MySQL. Pengamatan kami didasarkan pada versi komunitas MySQL 5.7.21.
Konfigurasi SSL Default di MySQL
Secara default, server MySQL selalu menginstal dan mengaktifkan konfigurasi SSL. Namun, tidak diberlakukan bahwa klien terhubung menggunakan SSL. Klien dapat memilih untuk terhubung dengan atau tanpa SSL karena server mengizinkan kedua jenis koneksi tersebut. Mari kita lihat cara memverifikasi perilaku default server MySQL ini.
Ketika SSL diinstal dan diaktifkan di server MySQL secara default, biasanya kita akan melihat yang berikut:
- Keberadaan file *.pem di direktori data MySQL. Ini adalah berbagai sertifikat dan kunci klien dan server yang digunakan untuk SSL seperti yang dijelaskan di sini.
- Akan ada catatan di file log kesalahan mysqld selama server mulai, seperti:
- [Catatan] Ditemukan ca.pem, server-cert.pem dan server-key.pem di direktori data. Mencoba mengaktifkan dukungan SSL menggunakan mereka.
- Nilai variabel 'have_ssl' adalah YA:
mysql> tampilkan variabel seperti 'have_ssl';
+—————+——-+
| Nama_variabel | Nilai |
+—————+——-+
| have_ssl | YA |
+—————+——-+
Sehubungan dengan klien MySQL, secara default, ia selalu mencoba untuk menggunakan koneksi jaringan terenkripsi dengan server, dan jika gagal, ia akan kembali ke mode tidak terenkripsi.
Jadi, dengan menghubungkan ke server MySQL menggunakan perintah:
mysql -h
Kami dapat memeriksa apakah koneksi klien saat ini dienkripsi atau tidak menggunakan perintah status:
status mysql>
————–
mysql Ver 14.14 Distrib 5.7.21, untuk Linux (x86_64) menggunakan EditLine wrapper
ID koneksi: 75
Database saat ini:
Pengguna saat ini: [email protected]
SSL: Cipher yang digunakan adalah DHE-RSA-AES256-SHA
Halaman saat ini: stdout
Menggunakan outfile: ”
Menggunakan pembatas: ;
Versi server: 5.7.21-log Server Komunitas MySQL (GPL)
Versi protokol: 10
Koneksi: 127.0.0.1 melalui TCP/IP
…………………………..
Bidang SSL yang disorot di atas menunjukkan bahwa koneksi dienkripsi. Namun, kita dapat meminta klien MySQL untuk terhubung tanpa SSL dengan menggunakan perintah:
mysql -h
status mysql>
————–
ID koneksi: 93
Database saat ini:
Pengguna saat ini: [email protected]
SSL: Tidak digunakan
Halaman saat ini: stdout
Menggunakan outfile: ”
Menggunakan pembatas: ;
Versi server: 5.7.21-log Server Komunitas MySQL (GPL)
Versi protokol: 10
Koneksi: 127.0.0.1 melalui TCP/IP
……………………………
Kami dapat melihat bahwa meskipun SSL diaktifkan di server, kami dapat terhubung tanpa SSL.
Tutorial MySQL - Cara Mengonfigurasi dan Mengelola SSL di #MySQL ServerKlik Untuk Tweet
Menonaktifkan SSL di MySQL
Jika kebutuhan Anda adalah untuk sepenuhnya mematikan SSL di server MySQL alih-alih opsi default 'diaktifkan, tetapi mode opsional', kita dapat melakukan hal berikut:
- Hapus sertifikat *.pem dan file kunci di direktori data MySQL.
- Mulai MySQL dengan opsi SSL dimatikan. Ini dapat dilakukan dengan menambahkan entri baris:
ssl=0 di file my.cnf.
Kita dapat mengamati bahwa:
- TIDAK akan ada catatan di log mysqld seperti :
- [Note] Ditemukan ca.pem, server-cert.pem dan server-key.pem di direktori data. Mencoba mengaktifkan dukungan SSL menggunakan mereka.
- Nilai variabel 'have_ssl' akan DINONAKTIFKAN:
mysql> tampilkan variabel seperti 'have_ssl';
+—————+——-+
| Nama_variabel | Nilai |
+—————+——-+
| have_ssl | DINONAKTIFKAN |
+—————+——-+
Menerapkan SSL di MySQL
Kami melihat bahwa meskipun SSL diaktifkan secara default di server MySQL, itu tidak diterapkan dan kami masih dapat terhubung tanpa SSL.
Sekarang, dengan menyetel variabel sistem require_secure_transport, kami akan dapat menerapkan bahwa server hanya akan menerima koneksi SSL. Ini dapat diverifikasi dengan mencoba terhubung ke server MySQL dengan perintah:
mysql -h
Dan, kita dapat melihat bahwa koneksi akan ditolak dengan pesan kesalahan berikut dari server:
ERROR 3159 (HY000):Koneksi menggunakan transportasi tidak aman dilarang saat –require_secure_transport=ON.
Pertimbangan SSL untuk Saluran Replikasi
Secara default, dalam pengaturan replikasi MySQL, slave terhubung ke master tanpa enkripsi.
Oleh karena itu, untuk menyambung ke master dengan cara yang aman untuk lalu lintas replikasi, budak harus menggunakan MASTER_SSL=1; sebagai bagian dari 'CHANGE MASTER TO' perintah yang menentukan parameter untuk menghubungkan ke master. Harap perhatikan bahwa opsi ini juga wajib jika master Anda dikonfigurasi untuk menerapkan koneksi SSL menggunakan require_secure_transport.