Điểm:2

Mysql 8.0 với Letsencrypt SSL trên Ubuntu 20.4

lá cờ ht

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ươnglỗ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.

lá cờ in
Chứng chỉ SSL và cổng 443 thường được áp dụng cho Apache, không phải MySQL. Bạn đã cấu hình MySQL để nghe cả 3306 và 443 chưa? Mục tiêu là để các máy bên ngoài kết nối với cơ sở dữ liệu này qua SSL thay vì thông qua một phương thức bảo mật phổ biến hơn, chẳng hạn như đường hầm SSH?
lá cờ ht
Có, tôi cần một kết nối bên ngoài. Tôi muốn chạy ứng dụng Nodejs trên miền của mình, một bảng câu hỏi. Các câu hỏi được lưu trữ trong MySQL, cũng như các câu trả lời. Sau khi hoàn thành, một tệp PDF sẽ được tạo sẽ được gửi qua email cho người dùng. Máy chủ lắng nghe trên cổng 443 cho Apache và trên cổng 3306 cho MySQL.
lá cờ ht
Tôi phải tự sửa: kết nối mysql bên ngoài hoạt động. Tôi có: SSL: Mật mã đang sử dụng là TLS_AES_256_GCM_SHA384 Kết nối: maraxai.de ​​qua TCP/IP Cổng TCP: 3306

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.