Làm cách nào để tạo chứng chỉ SSL cho MySQL?
Trong hướng dẫn này, tôi sẽ chỉ cho bạn từng bước để định cấu hình MySQL một cách an toàn cho các kết nối từ xa. Khi bạn cần truy cập MySQL từ xa, bạn phải sử dụng VPN vì MySQL không mã hóa dữ liệu được truyền hoặc bạn có thể định cấu hình MySQL để sử dụng SSL, như tôi sẽ chỉ cho bạn trong hướng dẫn này. Trong cấu hình này, chỉ những người dùng có tệp chứng chỉ SSL chính xác mới được phép kết nối với máy chủ MySQL và lưu lượng truy cập được mã hóa. Chúng tôi sẽ cài đặt phiên bản MySQL mới nhất, sau đó định cấu hình SSL cho kết nối từ xa. Đối với hệ thống cơ sở, tôi sẽ sử dụng máy chủ CentOS 7 Show
chúng ta sẽ làm gì
Điều kiện tiên quyết
Bước 1 - Cài đặt MySQLTrong hướng dẫn này, chúng tôi sẽ sử dụng MySQL 5. 7, phiên bản mới nhất tại thời điểm này. Nó được cài đặt từ kho lưu trữ MySQL, vì vậy trước tiên chúng tôi phải thêm kho lưu trữ CentOS mới vào hệ thống Thêm kho lưu trữ mới cho MySQL bằng lệnh yum bên dưới yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm Bạn sẽ được yêu cầu cài đặt gói mới, nhập 'y' và nhấn 'Enter' để xác nhận Bây giờ bạn có thể cài đặt MySQL phiên bản 5 mới nhất. 7 đến máy chủ như thế này yum -y install mysql-community-server Khi quá trình cài đặt hoàn tất, hãy khởi động dịch vụ MySQL và cho phép nó chạy tự động khi khởi động bằng lệnh systemctl systemctl start mysqld Đảm bảo MySQL đang chạy bằng cách kiểm tra cổng được sử dụng bởi MySQL (3306). Kiểm tra bằng lệnh netstat bên dưới netstat -plntu MySQL đã được cài đặt trên CentOS 7 từ kho lưu trữ MySQL Bước 2 - Cấu hình MySQL Root PasswordTheo mặc định, MySQL 5. 7 tạo mật khẩu gốc mặc định cho bạn khi bắt đầu dịch vụ lần đầu tiên. Mật khẩu được lưu trữ trong tệp nhật ký MySQL '/var/log/mysqld. nhật ký' Để xem mật khẩu root MySQL mặc định, bạn có thể sử dụng lệnh grep bên dưới grep 'temporary' /var/log/mysqld.log Bạn sẽ thấy kết quả tương tự như bên dưới, mật khẩu mặc định của tôi là 'wxtX8Te&Uh1K' A temporary password is generated for [email protected]: wxtX8Te&Uh1K Kết nối với MySQL shell bằng mật khẩu mặc định và thay thế mật khẩu bằng mật khẩu của riêng bạn mysql -u root -p Bây giờ thay thế mật khẩu mặc định bằng mật khẩu của riêng bạn. Trong hướng dẫn này, tôi sẽ sử dụng '[email được bảo vệ]' làm mật khẩu gốc MySQL mới. Chạy các truy vấn MySQL bên dưới ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]'; Giờ đây, bạn có thể kết nối lại bằng mật khẩu mới '[email được bảo vệ]' ________số 8Bước 3 - Tạo tệp chứng chỉ tự ký mớiTheo mặc định, MySQL 5. 7 có các tệp chứng chỉ SSL riêng trong thư mục '/var/lib/mysql'. Nhưng trong hướng dẫn này, tôi sẽ chỉ cho bạn cách tạo các tệp Chứng chỉ SSL của riêng bạn bằng OpenSSL, sau đó định cấu hình chúng bằng MySQL. Quảng cáo Trong bước này, chúng tôi sẽ tạo các tệp chứng chỉ tự ký mới. Chúng tôi cần 3 chứng chỉ, Chứng chỉ CA, Chứng chỉ máy chủ và Khóa, Chứng chỉ ứng dụng khách và Khóa. Chúng tôi sẽ tạo chúng với OpenSSL Tạo một thư mục mới cho các tệp chứng chỉ SSL '/etc/certs/' và chuyển đến thư mục đó mkdir -p /etc/certs Tạo chứng chỉ CA mới ca. tập tin pem yum -y install mysql-community-server0 Tiếp theo, chúng ta phải tạo chứng chỉ phía máy chủ. Tạo chứng chỉ máy chủ mới server-cert. pem và khóa máy chủ. tập tin pem. Tạo tệp chứng chỉ mới, xóa cụm mật khẩu và ký chúng bằng chứng chỉ CA yum -y install mysql-community-server1 Bây giờ tạo tệp chứng chỉ cho khách hàng. Máy chủ MySQL sẽ chỉ chấp nhận kết nối từ xa từ máy khách có các tệp chứng chỉ này. Tạo tệp chứng chỉ ứng dụng khách mới, xóa cụm mật khẩu và ký chúng bằng chứng chỉ CA yum -y install mysql-community-server2 Ghi chú Thông tin chứng chỉ CA phải khác với thông tin máy khách và máy chủ Tất cả các chứng chỉ mà chúng tôi yêu cầu cho thiết lập này đã được tạo. Bây giờ chúng ta có thể xác minh các tệp chứng chỉ bằng lệnh bên dưới yum -y install mysql-community-server3 Đảm bảo không bị lỗi, kết quả như bên dưới Tất cả các tệp Chứng chỉ đã được xác minh. Thay đổi chủ sở hữu của thư mục certs thành người dùng 'mysql' và thay đổi quyền của tất cả các tệp chính yum -y install mysql-community-server4 Bước 4 - Kích hoạt SSL cho MySQLTrong bước này, chúng tôi sẽ kích hoạt SSL cho MySQL. Trước khi bắt đầu cấu hình và kích hoạt SSL trên MySQL, chúng ta cần sao lưu các tệp chứng chỉ mặc định vào thư mục sao lưu mới Tạo thư mục sao lưu mới 'mysql-certs' cho tất cả các chứng chỉ yum -y install mysql-community-server5 Chuyển đến thư mục '/var/lib/mysql' và di chuyển tất cả các chứng chỉ mặc định vào thư mục sao lưu yum -y install mysql-community-server6 Bây giờ khởi động lại dịch vụ MySQL yum -y install mysql-community-server7 Tiếp theo, kiểm tra SSL từ vỏ MySQL. Đăng nhập vào mysql bằng mật khẩu mới Chạy truy vấn bên dưới để chúng tôi có thể xem trạng thái SSL cho MySQL yum -y install mysql-community-server9 Bạn sẽ thấy trạng thái SSL là 'DISABLED' và người dùng root đã được kết nối mà không cần SSL Tiếp theo, chúng tôi sẽ kích hoạt kết nối SSL cho MySQL. Chúng ta phải chỉnh sửa tệp cấu hình MySQL 'my. cnf' với vim systemctl start mysqld0 Trong phần '[mysqld]', hãy dán cấu hình bên dưới systemctl start mysqld1 Lưu tệp và thoát vim, khởi động lại dịch vụ MySQL yum -y install mysql-community-server7 Bây giờ hãy đăng nhập lại vào MySQL và kiểm tra SSL ________số 8Chạy truy vấn bên dưới để đảm bảo giá trị phần SSL là 'CÓ' systemctl start mysqld4 Bạn sẽ thấy rằng SSL cho MySQL đã được kích hoạt, nhưng người dùng root vẫn chưa được kết nối bằng kết nối SSL Để buộc tất cả kết nối người dùng cục bộ bằng SSL, hãy chỉnh sửa tệp cấu hình mysql 'my. cnf' lần nữa systemctl start mysqld0 Dán cấu hình bên dưới vào cuối dòng systemctl start mysqld6 Lưu và thoát, sau đó khởi động lại MySQL yum -y install mysql-community-server7 Kết nối lại với MySQL và kiểm tra kết nối và kích hoạt SSL systemctl start mysqld8 SSL đã được bật và kết nối cục bộ cũng sử dụng SSL Bước 5 - Kích hoạt kết nối từ xaỞ các bước trên, chúng ta đã kích hoạt SSL cho máy chủ MySQL và các kết nối cục bộ buộc phải sử dụng SSL. Trong bước này, chúng tôi sẽ kích hoạt các kết nối từ xa cho MySQL, nhưng chúng tôi chỉ cho phép các máy khách có tệp chứng chỉ được ký bởi CA của chúng tôi để kết nối với máy chủ MySQL Chỉnh sửa tệp cấu hình MySQL bằng vim systemctl start mysqld0 Dán cấu hình này bên dưới vào cuối phần '[mysqld]' netstat -plntu0 Lưu tệp và thoát trình chỉnh sửa, khởi động lại MySQL yum -y install mysql-community-server7 Tiếp theo, tạo người dùng mới cho kết nối từ xa. Tôi sẽ tạo một người dùng mới có tên 'hakase' với mật khẩu '[email được bảo vệ]' và cấp tất cả các đặc quyền cho người dùng 'hakase'. Người dùng 'hakase' sẽ chỉ có thể kết nối với khóa Chứng chỉ netstat -plntu2 Người dùng mới cho kết nối từ xa đã được tạo Ghi chú Bạn có thể thấy '1 cảnh báo' trong kết quả truy vấn mysql. Nó chỉ cảnh báo về việc sử dụng truy vấn ALTER USER thay vì GRANT vì truy vấn 'GRANT' sẽ không được dùng nữa trong bản phát hành tiếp theo Bước 6 - Kiểm traTrong phần cuối cùng của hướng dẫn này, chúng tôi sẽ kiểm tra xem người dùng mới có tên 'hakase' có thể kết nối với máy chủ MySQL từ xa bằng các tệp chứng chỉ hay không. Ba chứng chỉ cho khách hàng phải được tải xuống
Tôi đã đăng nhập vào một hệ thống Linux khác và cài đặt các gói mysql-client ở đó. Sau đó, tôi đã tải xuống tất cả các tệp chứng chỉ ứng dụng khách bằng SCP. Bây giờ tôi sẽ kết nối với máy chủ MySQL bằng các tệp chứng chỉ netstat -plntu3 10. 0. 15. 11 = Địa chỉ IP của Máy chủ MySQL Bạn có thể xem trạng thái kết nối với truy vấn này bên dưới netstat -plntu4 Người dùng hakase với địa chỉ IP 10. 0. 15. 10 Đã kết nối với máy chủ MySQL bằng địa chỉ IP 10. 0. 15. 11, kết nối qua TCP/IP trên cổng 3306 và sử dụng SSL Khi bạn cố gắng kết nối mà không có tệp Chứng chỉ, bạn sẽ thấy lỗi như bên dưới Tiếp theo, tôi sẽ kiểm tra với MySQLWorkbench GUI từ máy chủ của tôi Dưới đây là cấu hình của tôi - Cài đặt tham số Cấu hình SSL - Cài đặt SSL Và bên dưới là kết quả kết nối với file SSL Client Certificate Người dùng mới đã kết nối thành công từ xa với máy chủ cơ sở dữ liệu MySQL bằng kết nối SSL. Khi người dùng cố gắng kết nối mà không có tệp Chứng chỉ, kết quả sẽ là 'từ chối'. Cài đặt và cấu hình MySQL với kết nối SSL đã thành công Chứng chỉ SSL trong MySQL là gì?Chứng chỉ SSL và tệp khóa cho phép MySQL hỗ trợ các kết nối được mã hóa bằng SSL . Xem Phần 6. 3. 1, “Cấu hình MySQL để sử dụng các kết nối được mã hóa”. Các tệp khóa RSA cho phép MySQL hỗ trợ trao đổi mật khẩu an toàn qua các kết nối không được mã hóa cho các tài khoản được xác thực bởi plugin sha256_password.
Tôi có thể tạo chứng chỉ SSL của riêng mình không?Yêu cầu ký chứng chỉ và khóa riêng để tạo chứng chỉ SSL . Chúng có thể được tạo bằng một vài lệnh đơn giản. Khi lệnh openssl req yêu cầu "mật khẩu thử thách", chỉ cần nhấn quay lại, để trống mật khẩu.
Làm cách nào để bật SSL MySQL 8?Cách bảo mật MySQL 8 bằng SSL/TLS trên Ubuntu 20. 04 . điều kiện tiên quyết Cài đặt máy chủ MySQL 8 Đặt mật khẩu gốc MySQL Kiểm tra trạng thái SSL/TLS của MySQL Tạo chứng chỉ SSL/TLS Kích hoạt kết nối SSL trên MySQL Kích hoạt kết nối từ xa và an toàn trong MySQL Xác minh kết nối SSL từ máy khách MySQL từ xa Cách cài đặt MySQL và cấu hình SSL?Mục lục . Yêu cầu Cài đặt máy chủ MySQL Thiết lập mật khẩu gốc MySQL Xác minh trạng thái SSL/TLS Tạo chứng chỉ SSL/TLS Kích hoạt kết nối SSL trên MySQL Định cấu hình MySQL để kết nối an toàn và đăng nhập từ xa Phần kết luận |