Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Mengaktifkan SSL/TLS untuk MySQL di Ubuntu

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=mysql

Generating 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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mereset kata sandi root mysql?

  2. MySQL SELECT WHERE datetime cocok dengan hari (dan belum tentu waktu)

  3. MySQL MONTHNAME() dari angka

  4. 2 Cara Mengonversi Angka ke Oktal di MySQL

  5. Bisakah saya menyelesaikan ini dengan mysql murni? (bergabung pada '' nilai yang dipisahkan dalam kolom)