Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách bật SSL / TLS cho MySQL trong Ubuntu

MySQL cho phép người dùng kết nối an toàn với cơ sở dữ liệu bằng chứng chỉ SSL / TLS. Trong bài viết này, chúng ta sẽ xem xét Cấu hình SSL của MySQL - cách bật SSL / TLS cho MySQL trong Ubuntu.


Cách bật SSL / TLS cho MySQL

Dưới đây là các bước để thiết lập kết nối SSL trong MySQL.


1. Cài đặt MySQL

Mở terminal và chạy các lệnh sau để cài đặt MySQL.

$ sudo apt-get update
$ sudo apt-get install mysql-client

Phần thưởng đã đọc:Đối chiếu thay đổi MySQL của tất cả các bảng


2. Kiểm tra trạng thái SSL

Đăng nhập vào MySQL bằng quyền root

$ mysql -uroot -p

Bạn sẽ được nhắc nhập mật khẩu gốc. Sau khi đăng nhập, hãy nhập lệnh sau để tìm trạng thái SSL / TLS hiện tại

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       |          |
+---------------+----------+

Bạn sẽ thấy rằng have_openssl have_ssl cả hai đều có giá trị KHUYẾT TẬT. Có nghĩa là SSL không được bật trong MySQL.

Phần thưởng đã đọc:Các blog cơ sở dữ liệu hàng đầu để theo dõi


3. Tạo chứng chỉ SSL / TLS

Tiếp theo, chúng ta cần tạo chứng chỉ SSL / TLS và trỏ máy chủ MySQL đến vị trí của chúng. Thông thường, mọi người sử dụng openssl để tạo chứng chỉ SSL và sau đó di chuyển chúng đến / var / lib / mysql, là vị trí mặc định của tệp SSL cho máy chủ MySQL.

Tuy nhiên, MySQL 5.7 và các phiên bản mới hơn đã đi kèm với tiện ích mysql_ssl_rsa_setup để đơn giản hóa quá trình này. Nó tạo chứng chỉ SSL và lưu trữ chúng tại / var / lib / mysql.

Vì chúng tôi cần quy trình mysql để có thể đọc các tệp này, chúng tôi sẽ tạo mysql với tư cách là chủ sở hữu của các tệp này, như được hiển thị bên dưới.

Chạy lệnh sau để tạo chứng chỉ 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' 
-----

Bạn có thể kiểm tra các tệp đã tạo bằng cách chạy lệnh sau

$ ls -all /var/lib/mysql/*.pem

Bạn sẽ thấy một cái gì đó giống như sau

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

Đây là tệp chứng chỉ SSL và các cặp khóa riêng tư cho tổ chức phát hành chứng chỉ, Máy chủ MySQL và máy khách MySQL.

Phần thưởng đọc:Các lựa chọn thay thế MySQL Workbench hàng đầu


4. Bật kết nối SSL trong MySQL Server

Tiếp theo, khởi động lại Máy chủ MySQL để bật SSL / TLS trong MySQL.

$ sudo systemctl restart mysql 

MySQL Server sẽ tự động tìm kiếm các tệp chứng chỉ SSL trong / var / lib / mysql khi nó khởi động. Vì vậy, bạn không phải chỉ định thủ công vị trí của chúng trong tệp cấu hình MySQL.

Phần thưởng đọc:Cách kích hoạt bộ nhớ cache truy vấn MySQL


5. Xác minh kết nối SSL

Đăng nhập vào MySQL như trước (bước 2) và chạy lệnh sau.

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  |
+---------------+-----------------+

Bây giờ bạn sẽ tìm thấy have_openssl have_ssl các biến là CÓ. Bạn cũng sẽ thấy rằng ssl_ca , ssl_cert ssl_key được điền các giá trị thích hợp.

Bạn cũng có thể kiểm tra chi tiết kết nối của mình.

mysql> \s

-------------- 
. . . 
SSL: Cipher in use is DHE-RSA-AES256-SHA 
. . . 
Connection: 127.0.0.1 via TCP/IP 
. . . 
--------------


6. Định cấu hình SSL cho kết nối từ xa (Tùy chọn)

Nếu máy chủ MySQL của bạn có các kết nối đến từ xa, thì bạn có thể bật SSL cho kết nối từ xa và thậm chí bắt buộc sử dụng bằng cách sửa đổi tệp cấu hình máy chủ MySQL.

Mở terminal và chạy lệnh sau để mở cấu hình MySQL.

$ sudo vi /etc/mysql/my.cnf

Thêm khối mã [mysqld] như được hiển thị bên dưới hai câu lệnh! Includeir.

!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

Trong dòng cuối cùng, chúng tôi đã đặt địa chỉ ràng buộc thành 0.0.0.0 để cho phép kết nối từ xa. Bạn không cần thêm nó nếu bạn đã bật kết nối từ xa.

Khởi động lại Máy chủ MySQL để áp dụng các thay đổi. Từ bây giờ, MySQL sẽ yêu cầu SSL.

Đối với các kết nối từ xa, đừng quên mở cổng 443, thay vì cổng mặc định 3306. Điều này là do kết nối SSL xảy ra qua cổng 443 chứ không phải cổng 3306.

Hy vọng rằng, bài viết này sẽ giúp bạn kích hoạt kết nối SSL / TLS trong 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. MySQL MOD () Hàm - Thực hiện một hoạt động Modulo trong MySQL

  2. Tham số ràng buộc cho mệnh đề WHERE IN với PDO

  3. Cách phân cụm các bộ cân bằng tải ProxySQL của bạn

  4. Lỗi truy vấn SQL MySQL trong WordPress trong lớp WPDB

  5. 3 cách để phát hiện xem một chuỗi có khớp với một biểu thức chính quy trong MySQL hay không