Làm cách nào để kết nối với MySQL mà không cần SSL?

Để kiểm tra một số sự cố kết nối phổ biến trong MySQL, hãy làm theo các bước sau. Quy trình này giúp bạn biết mình đã bật SSL và cấp quyền sử dụng hay chưa

Để tìm giải pháp cho một số sự cố kết nối phổ biến trong MySQL

  1. Kiểm tra /etc/my.cnf để đảm bảo SSL được bật cho MySQL

  2. Trong MySQL, hãy chạy lệnh sau

    
    show status like 'Ssl%';
                            

    Nếu SSL đang hoạt động, bạn sẽ thấy kết quả như sau

    
    +--------------------------------+----------------------+
    | Variable_name                  | Value                |
    +--------------------------------+----------------------+
    | Ssl_accept_renegotiates        | 0                    |
    | Ssl_accepts                    | 1                    |
    | Ssl_callback_cache_hits        | 0                    |
    | Ssl_cipher                     |                      |
    | Ssl_cipher_list                |                      |
    | Ssl_client_connects            | 0                    |
    | Ssl_connect_renegotiates       | 0                    |
    | Ssl_ctx_verify_depth           | 18446744073709551615 |
    | Ssl_ctx_verify_mode            | 5                    |
    | Ssl_default_timeout            | 0                    |
    | Ssl_finished_accepts           | 0                    |
    | Ssl_finished_connects          | 0                    |
    | Ssl_session_cache_hits         | 0                    |
    | Ssl_session_cache_misses       | 0                    |
    | Ssl_session_cache_mode         | SERVER               |
    | Ssl_session_cache_overflows    | 0                    |
    | Ssl_session_cache_size         | 128                  |
    | Ssl_session_cache_timeouts     | 0                    |
    | Ssl_sessions_reused            | 0                    |
    | Ssl_used_session_cache_entries | 0                    |
    | Ssl_verify_depth               | 0                    |
    | Ssl_verify_mode                | 0                    |
    | Ssl_version                    |                      |
    +--------------------------------+----------------------+
                            

    Nếu SSL bị tắt, bạn sẽ thấy kết quả như sau

    
    +--------------------------------+-------+
    | Variable_name                  | Value |
    +--------------------------------+-------+
    | Ssl_accept_renegotiates        | 0     |
    | Ssl_accepts                    | 0     |
    | Ssl_callback_cache_hits        | 0     |
    | Ssl_cipher                     |       |
    | Ssl_cipher_list                |       |
    | Ssl_client_connects            | 0     |
    | Ssl_connect_renegotiates       | 0     |
    | Ssl_ctx_verify_depth           | 0     |
    | Ssl_ctx_verify_mode            | 0     |
    | Ssl_default_timeout            | 0     |
    | Ssl_finished_accepts           | 0     |
    | Ssl_finished_connects          | 0     |
    | Ssl_session_cache_hits         | 0     |
    | Ssl_session_cache_misses       | 0     |
    | Ssl_session_cache_mode         | NONE  |
    | Ssl_session_cache_overflows    | 0     |
    | Ssl_session_cache_size         | 0     |
    | Ssl_session_cache_timeouts     | 0     |
    | Ssl_sessions_reused            | 0     |
    | Ssl_used_session_cache_entries | 0     |
    | Ssl_verify_depth               | 0     |
    | Ssl_verify_mode                | 0     |
    | Ssl_version                    |       |
    +--------------------------------+-------+                            
                            
  3. Đảm bảo rằng bạn đã cài đặt chứng chỉ SSL được hỗ trợ trên máy chủ cơ sở dữ liệu

  4. Cấp quyền sử dụng cho người dùng cụ thể để kết nối bằng SSL

    
    GRANT USAGE ON *.* TO 'encrypted_user'@'%' REQUIRE SSL;                        
                            

Để biết thêm chi tiết về giải pháp trong ví dụ này, hãy xem phần sau

Giao tiếp SSL bắt đầu với giai đoạn handshake, trong đó public-crypto-key đang được gửi cho khách hàng để sử dụng trong tương lai. Vì vậy, bạn không cần phải có nó, khách hàng của bạn sẽ nhận được nó.

Vậy thì tại sao chúng ta cần những Public SSL certificate này?

Public SSL certificate không bao gồm public-crypto-key nên bạn thực sự có thể so sánh public-crypto-key đến từ máy chủ với public-crypto-key từ Public SSL certificate của bạn. Bản thân điều này không thực sự có ý nghĩa trừ khi bạn cũng muốn kiểm tra xem public-crypto-key này có được phát hành bởi một số


+--------------------------------+----------------------+
| Variable_name                  | Value                |
+--------------------------------+----------------------+
| Ssl_accept_renegotiates        | 0                    |
| Ssl_accepts                    | 1                    |
| Ssl_callback_cache_hits        | 0                    |
| Ssl_cipher                     |                      |
| Ssl_cipher_list                |                      |
| Ssl_client_connects            | 0                    |
| Ssl_connect_renegotiates       | 0                    |
| Ssl_ctx_verify_depth           | 18446744073709551615 |
| Ssl_ctx_verify_mode            | 5                    |
| Ssl_default_timeout            | 0                    |
| Ssl_finished_accepts           | 0                    |
| Ssl_finished_connects          | 0                    |
| Ssl_session_cache_hits         | 0                    |
| Ssl_session_cache_misses       | 0                    |
| Ssl_session_cache_mode         | SERVER               |
| Ssl_session_cache_overflows    | 0                    |
| Ssl_session_cache_size         | 128                  |
| Ssl_session_cache_timeouts     | 0                    |
| Ssl_sessions_reused            | 0                    |
| Ssl_used_session_cache_entries | 0                    |
| Ssl_verify_depth               | 0                    |
| Ssl_verify_mode                | 0                    |
| Ssl_version                    |                      |
+--------------------------------+----------------------+
                        
4 cụ thể hay không

Dù sao, tại sao chúng ta cần kiểm tra xem public-crypto-key này có được phát hành bởi một số


+--------------------------------+----------------------+
| Variable_name                  | Value                |
+--------------------------------+----------------------+
| Ssl_accept_renegotiates        | 0                    |
| Ssl_accepts                    | 1                    |
| Ssl_callback_cache_hits        | 0                    |
| Ssl_cipher                     |                      |
| Ssl_cipher_list                |                      |
| Ssl_client_connects            | 0                    |
| Ssl_connect_renegotiates       | 0                    |
| Ssl_ctx_verify_depth           | 18446744073709551615 |
| Ssl_ctx_verify_mode            | 5                    |
| Ssl_default_timeout            | 0                    |
| Ssl_finished_accepts           | 0                    |
| Ssl_finished_connects          | 0                    |
| Ssl_session_cache_hits         | 0                    |
| Ssl_session_cache_misses       | 0                    |
| Ssl_session_cache_mode         | SERVER               |
| Ssl_session_cache_overflows    | 0                    |
| Ssl_session_cache_size         | 128                  |
| Ssl_session_cache_timeouts     | 0                    |
| Ssl_sessions_reused            | 0                    |
| Ssl_used_session_cache_entries | 0                    |
| Ssl_verify_depth               | 0                    |
| Ssl_verify_mode                | 0                    |
| Ssl_version                    |                      |
+--------------------------------+----------------------+
                        
4 cụ thể không? . Bởi vì bạn biết IP của máy chủ MySQL của mình và bạn đã tin tưởng nó


+--------------------------------+----------------------+
| Variable_name                  | Value                |
+--------------------------------+----------------------+
| Ssl_accept_renegotiates        | 0                    |
| Ssl_accepts                    | 1                    |
| Ssl_callback_cache_hits        | 0                    |
| Ssl_cipher                     |                      |
| Ssl_cipher_list                |                      |
| Ssl_client_connects            | 0                    |
| Ssl_connect_renegotiates       | 0                    |
| Ssl_ctx_verify_depth           | 18446744073709551615 |
| Ssl_ctx_verify_mode            | 5                    |
| Ssl_default_timeout            | 0                    |
| Ssl_finished_accepts           | 0                    |
| Ssl_finished_connects          | 0                    |
| Ssl_session_cache_hits         | 0                    |
| Ssl_session_cache_misses       | 0                    |
| Ssl_session_cache_mode         | SERVER               |
| Ssl_session_cache_overflows    | 0                    |
| Ssl_session_cache_size         | 128                  |
| Ssl_session_cache_timeouts     | 0                    |
| Ssl_sessions_reused            | 0                    |
| Ssl_used_session_cache_entries | 0                    |
| Ssl_verify_depth               | 0                    |
| Ssl_verify_mode                | 0                    |
| Ssl_version                    |                      |
+--------------------------------+----------------------+
                        
4 là một loại public-crypto-key3 đến từ một cách sử dụng khác của các giao thức được bảo mật SSL được biết đến là public-crypto-key4. Trong public-crypto-key4, bạn kết nối với địa chỉ IP không xác định, nhưng có một điều bạn nên chắc chắn - public-crypto-key6. Tên miền có thể được gán lại cho một địa chỉ IP mới mỗi phút. Và nó có thể được gán lại cho máy chủ cục bộ của riêng bạn (thông qua cấu hình của tệp 'hosts'). Chỉ cần tưởng tượng một loại vi-rút máy tính tinh vi xâm nhập vào máy tính của bạn, triển khai một máy chủ web và chỉ định lại "ngân hàng của bạn". com" đến máy chủ web đó. Lần tới khi bạn mở trình duyệt, bạn nhập thông tin đăng nhập tài khoản ngân hàng của mình, nhưng thay vì cấp cho bạn quyền truy cập vào tài khoản ngân hàng, máy chủ web sẽ gửi thông tin đăng nhập của bạn cho tin tặc. Nó sẽ khó chịu, phải không?

Trong HTTPS, trình duyệt của bạn thực hiện một số kiểm tra cho bạn. Nó yêu cầu một public-crypto-key từ một máy chủ web chỉ để so sánh nó với một danh sách các public-crypto-key9 đã biết từ


+--------------------------------+----------------------+
| Variable_name                  | Value                |
+--------------------------------+----------------------+
| Ssl_accept_renegotiates        | 0                    |
| Ssl_accepts                    | 1                    |
| Ssl_callback_cache_hits        | 0                    |
| Ssl_cipher                     |                      |
| Ssl_cipher_list                |                      |
| Ssl_client_connects            | 0                    |
| Ssl_connect_renegotiates       | 0                    |
| Ssl_ctx_verify_depth           | 18446744073709551615 |
| Ssl_ctx_verify_mode            | 5                    |
| Ssl_default_timeout            | 0                    |
| Ssl_finished_accepts           | 0                    |
| Ssl_finished_connects          | 0                    |
| Ssl_session_cache_hits         | 0                    |
| Ssl_session_cache_misses       | 0                    |
| Ssl_session_cache_mode         | SERVER               |
| Ssl_session_cache_overflows    | 0                    |
| Ssl_session_cache_size         | 128                  |
| Ssl_session_cache_timeouts     | 0                    |
| Ssl_sessions_reused            | 0                    |
| Ssl_used_session_cache_entries | 0                    |
| Ssl_verify_depth               | 0                    |
| Ssl_verify_mode                | 0                    |
| Ssl_version                    |                      |
+--------------------------------+----------------------+
                        
4 đáng tin cậy. Sau đó, nó kiểm tra tên miền được gán cho public-crypto-key9 này và thiết lập xem máy chủ web này có thực sự được phép cung cấp nội dung cho miền được cung cấp hay không

Nhưng sau đó, tại sao "virus tinh vi" của chúng tôi không thể phân tích cú pháp một handshake và trích xuất một public-crypto-key từ trang web thực chỉ để cung cấp cho trình duyệt của bạn?

Câu trả lời là - "nó có thể". Và nó có thể cho phép public-crypto-key4 ủy quyền đi qua, nhưng sau đó máy chủ web lừa đảo sẽ cần phải "nói chuyện" với trình duyệt của bạn. Và để có thể "nói chuyện", máy chủ web lừa đảo sẽ cần sử dụng Public SSL certificate5 để mã hóa tin nhắn của máy chủ, nhưng rất khó để đạt được Public SSL certificate5

Thấy chưa, chúng ta đã thắng

Kết thúc

Ngoại trừ một điều, AWS sử dụng tên miền để truy cập RDS chứ không phải địa chỉ IP. Vì vậy, chúng tôi cần public-crypto-key9. Nhưng MySQL_Workbench không phải là một trình duyệt web nên bạn sẽ nghĩ rằng nó có thể không biết nhiều về Public SSL certificate8. Nhưng trên thực tế, MySQL_Workbench biết về


+--------------------------------+----------------------+
| Variable_name                  | Value                |
+--------------------------------+----------------------+
| Ssl_accept_renegotiates        | 0                    |
| Ssl_accepts                    | 1                    |
| Ssl_callback_cache_hits        | 0                    |
| Ssl_cipher                     |                      |
| Ssl_cipher_list                |                      |
| Ssl_client_connects            | 0                    |
| Ssl_connect_renegotiates       | 0                    |
| Ssl_ctx_verify_depth           | 18446744073709551615 |
| Ssl_ctx_verify_mode            | 5                    |
| Ssl_default_timeout            | 0                    |
| Ssl_finished_accepts           | 0                    |
| Ssl_finished_connects          | 0                    |
| Ssl_session_cache_hits         | 0                    |
| Ssl_session_cache_misses       | 0                    |
| Ssl_session_cache_mode         | SERVER               |
| Ssl_session_cache_overflows    | 0                    |
| Ssl_session_cache_size         | 128                  |
| Ssl_session_cache_timeouts     | 0                    |
| Ssl_sessions_reused            | 0                    |
| Ssl_used_session_cache_entries | 0                    |
| Ssl_verify_depth               | 0                    |
| Ssl_verify_mode                | 0                    |
| Ssl_version                    |                      |
+--------------------------------+----------------------+
                        
4 và để kích hoạt nó, bạn cần chuyển đến tab "SSL" và đặt danh sách thả xuống "Sử dụng SSL" thành "Yêu cầu và xác minh CA" - trong trường hợp này, bạn cần cung cấp tệp Public SSL certificate0 cho " . " đồng ruộng

Quay lại câu hỏi của bạn. "tại sao khách hàng báo cáo rằng kết nối được mã hóa SSL khi tôi không cung cấp chứng chỉ?"

Bởi vì nó được mã hóa bằng một số chứng chỉ và khách hàng của bạn có thể sử dụng chứng chỉ do máy chủ MySQL cung cấp hoặc để xác minh CA và có thể từ chối nó. Bây giờ bạn hãy cho tôi biết, tại sao bạn lại thiết lập ứng dụng khách DB của mình để chấp nhận bất kỳ chứng chỉ nào từ máy chủ MySQL mà bỏ qua việc xác minh CA?

MySQL có yêu cầu SSL không?

MySQL hỗ trợ các kết nối được mã hóa giữa máy khách và máy chủ bằng giao thức TLS (Bảo mật tầng truyền tải). TLS đôi khi được gọi là SSL (Lớp cổng bảo mật) nhưng MySQL không thực sự sử dụng giao thức SSL cho các kết nối được mã hóa vì khả năng mã hóa của nó yếu (xem Phần . 3.

Làm cách nào để tắt kết nối SSL MySQL?

Tắt SSL trong MySQL . Xóa *. chứng chỉ pem và các tệp chính trong thư mục dữ liệu MySQL. Khởi động MySQL với tùy chọn SSL bị tắt.

Làm cách nào để sử dụng MySQL Workbench mà không cần SSL?

mysql/bàn làm việc/kết nối. xml , hãy tìm kết nối mà bạn muốn tắt ssl và tìm đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0 đặt thành 0, that will disable ssl for that connection.

Làm cách nào để tắt SSL trong JDBC?

Bạn cần tắt SSL rõ ràng bằng cách đặt useSSL=false hoặc đặt useSSL=true và cung cấp cửa hàng tin cậy để xác minh chứng chỉ máy chủ. Nếu bạn muốn tránh cảnh báo MySQL ở trên, hãy sử dụng cú pháp đề cập ở đầu.