Tôi đã cài đặt chứng chỉ SSL Letsencrypt trên máy chủ VPN Ubuntu 20.4 của mình và nó hoạt động. Bây giờ, tôi đang cố định cấu hình mysql trên máy chủ này cho SSL. Tôi đã đọc nhiều bài đăng liên quan giải quyết cùng một vấn đề và tôi đã dành nhiều giờ để khắc phục vấn đề đó nhưng không thành công.
Đây là các bước tôi đã làm:
Tôi đã sao chép các tệp cert.pem, chain.pem, fullchain.pem và privkey.pem vào /var/lib/mysql.
Đây là những tệp giống như tôi đã sử dụng cho cấu hình SSL của mình
miền.
Cấu hình trong mysql không rõ ràng. Tôi đã thử các kết hợp khác nhau trong [mysql] và [mysqld]. Cái tôi mong đợi là chính xác, không hoạt động: ssl_ca=/var/lib/mysql/cert.pem
,ssl_cert=/var/lib/mysql/chain.pem
,ssl_key=/var/lib/mysql/privkey.pem
Chỉ cấu hình này hoạt động mà không gây ra lỗi. Lưu ý: fullchain.pem chứa các chứng chỉ từ cert.pem và chain.pem. Trong /etc/mysql/mysql.conf.d:
[mysqld]
ssl_cert=/var/lib/mysql/fullchain.pem
ssl_key=/var/lib/mysql/privkey.pem
Tôi có thể kết nối với mysql cục bộ từ máy chủ của mình và khi kiểm tra các thuộc tính ssl, tôi nhận được:
(Tôi chỉ liệt kê các biến có giá trị)
| Tên_biến | Giá trị |
+------------------------------------+----------- -------------------+
| have_openssl | CÓ |
| have_ssl | CÓ |
| performance_schema_show_processlist | TẮT |
| ssl_cert | /var/lib/mysql/fullchain.pem | |
| ssl_fips_mode | TẮT |
| ssl_key | /var/lib/mysql/privkey.pem
Khi tôi chạy mysql > \s
, Tôi có:
mysql Ver 8.0.21 cho Win64 trên x86_64 (Máy chủ cộng đồng MySQL - GPL)
Id kết nối: 66
Cơ sở dữ liệu hiện tại:
Người dùng hiện tại: someUser@someIP
SSL: Mật mã đang sử dụng là TLS_AES_256_GCM_SHA384
Sử dụng dấu phân cách: ;
Phiên bản máy chủ: 8.0.26-0ubuntu0.20.04.3 (Ubuntu)
Phiên bản giao thức: 10
Kết nối: maraxai.de qua TCP/IP
Bộ ký tự máy chủ: utf8mb4
Bộ ký tự Db: utf8mb4
Bộ ký tự máy khách: cp850
Bộ ký tự kết nối: cp850
Cổng TCP: 3306
Dữ liệu nhị phân dưới dạng: Hệ thập lục phân
Khi tôi chạy $ openssl s_client -kết nối maraxai.de:3306 -tên máy chủ maraxai.de
, tôi hy vọng sẽ nhận được kết quả tương tự như với $ openssl s_client -kết nối maraxai.de:443 -tên máy chủ maraxai.de
, tức là chuỗi chứng chỉ hoàn chỉnh với quá trình bắt tay thành công nhưng thay vào đó, tôi nhận được:
139990121219392:error:1408F10B:SSL thường trình:ssl3_get_record:sai số phiên bản:../ssl/record/ssl3_record.c:331:
---
không có chứng chỉ ngang hàng
---
Không có tên CA chứng chỉ ứng dụng khách nào được gửi
---
Bắt tay SSL đã đọc 5 byte và ghi 302 byte
Xác minh: OK
---
Mới, (NONE), Mật mã là (NONE)
Đàm phán lại an toàn KHÔNG được hỗ trợ
Nén: KHÔNG CÓ
Mở rộng: KHÔNG CÓ
Không có ALPN nào được thương lượng
Dữ liệu ban đầu không được gửi
Xác minh mã trả về: 0 (ok)
Một số bài viết gợi ý rằng dòng Bắt tay SSL đã đọc 5 byte và ghi 302 byte
gợi ý rằng quá trình bắt tay SSL đã được bắt đầu nhưng bị hủy bỏ do máy chủ trả về điều gì đó không mong đợi.
Để kiểm tra thêm tôi sử dụng openssl s_client -kết nối maraxai.de:3306 -tên máy chủ maraxai.de -starttls mysql
. Phần đầu tiên cho tôi biết về lỗi:num=20:không thể lấy chứng chỉ nhà phát hành địa phương
và lỗi:num=21:chứng chỉ máy chủ chưa được xác minh
cho chứng chỉ máy chủ (độ sâu:0)
. Hơn nữa, tôi chỉ thấy một chứng chỉ (cert.pem). Chứng chỉ trung gian của chain.pem không được liệt kê. Điều này thật kỳ lạ vì tôi sử dụng fullchain.pem, đây là sự kết hợp của các chứng chỉ trong chain.pem và cert.pem.
ĐÃ KẾT NỐI(00000003)
độ sâu=0 CN = maraxai.de
xác minh lỗi:num=20:không thể lấy chứng chỉ nhà phát hành địa phương
xác minh trả lại: 1
độ sâu=0 CN = maraxai.de
lỗi xác minh: num=21: không thể xác minh chứng chỉ đầu tiên
xác minh trả lại: 1
---
Chuỗi chứng chỉ
0 s:CN = maraxai.de
i:C = US, O = Let's Encrypt, CN = R3
---
Chứng chỉ máy chủ
-----BẮT ĐẦU GIẤY CHỨNG NHẬN----
//MIIF...
-----GIẤY CHỨNG NHẬN KẾT THÚC-----
chủ đề=CN = maraxai.de
nhà phát hành=C = US, O = Let's Encrypt, CN = R3
---
Không có tên CA chứng chỉ ứng dụng khách nào được gửi
Thuật toán chữ ký được yêu cầu: ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:Ed25519:Ed448:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA-PSS+SHA256:RSA-PSS+SHA384: RSA-PSS+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA512:ECDSA+SHA224:RSA+SHA224
Thuật toán chữ ký được yêu cầu chung: ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:Ed25519:Ed448:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA-PSS+SHA256:RSA-PSS+SHA384 :RSA-PSS+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA512
Thông báo ký ngang hàng: SHA256
Loại chữ ký ngang hàng: RSA-PSS
Khóa tạm thời máy chủ: X25519, 253 bit
---
Bắt tay SSL đã đọc 2027 byte và ghi 448 byte
Lỗi xác minh: không thể xác minh chứng chỉ đầu tiên
---
Mới, TLSv1.3, Mật mã là TLS_AES_256_GCM_SHA384
Khóa công khai của máy chủ là 2048 bit
Đàm phán lại an toàn KHÔNG được hỗ trợ
Nén: KHÔNG CÓ
Mở rộng: KHÔNG CÓ
Không có ALPN nào được thương lượng
Dữ liệu ban đầu không được gửi
Xác minh mã trả lại: 21 (không thể xác minh chứng chỉ đầu tiên)
---
---
Vé phiên mới sau bắt tay đã đến:
Phiên SSL:
Giao thức: TLSv1.3
Mật mã: TLS_AES_256_GCM_SHA384
ID phiên: B157BD91FF0A458D6A546C26CB5665C95CD88B99CE6C66A5D98783642C39EFA4
Phiên-ID-ctx:
Tiếp tục PSK: CB807FC16CE11EB47FE7BDDD99C71A5AAF1AE5CDC600A127230E914AFC4AE1018A34F72F44741D2440EB4917D5DDD0D7
Danh tính PSK: Không có
Gợi ý nhận dạng PSK: Không có
Tên người dùng SRP: Không có
Gợi ý thời gian tồn tại của vé phiên TLS: 7200 (giây)
Vé phiên TLS:
// ...0000 - 00e0
Thời gian bắt đầu: 1645286635
Thời gian chờ: 7200 (giây)
Xác minh mã trả lại: 21 (không thể xác minh chứng chỉ đầu tiên)
Bí mật tổng thể mở rộng: không
Dữ liệu sớm tối đa: 0
---
đọc KHỐI R
2ââ#08S01Hết thời gian đọc các gói giao tiếp đã đọc:errno=0
Để kiểm tra xem tổ chức phát hành và đối tượng của chứng chỉ có được đặt chính xác hay không, tôi chạy:
openssl crl2pkcs7 -nocrl -certfile fullchain.pem | openssl pkcs7 -print_certs -noout
Mọi thứ có vẻ ổn ở đây:
chủ đề=CN = maraxai.de
nhà phát hành=C = US, O = Let's Encrypt, CN = R3
chủ đề=C = Hoa Kỳ, O = Hãy mã hóa, CN = R3
nhà phát hành=C = US, O = Nhóm nghiên cứu bảo mật Internet, CN = ISRG Root X1
chủ đề=C = US, O = Nhóm nghiên cứu bảo mật Internet, CN = ISRG Root X1
tổ chức phát hành=O = Digital Signature Trust Co., CN = DST Root CA X3
Ngoài ra, đối với privkey.pem, tôi đã thay đổi định dạng khóa thành PKCS#1 để có được tiêu đề chính xác ----- BEGIN RSA PRIVATE KEY -----
với lệnh $ openssl rsa -in privkey.pem -out privkey.pem
.
Tôi không biết làm thế nào để điều tra thêm vấn đề này. Mọi sự trợ giúp sẽ rất được trân trọng.