Điểm:1

curl cho biết chứng chỉ hợp lệ đã hết hạn

lá cờ in

Tôi có phiên bản cộng đồng gitlab được lưu trữ trên máy chủ và khi sử dụng curl trên máy chủ này để tìm nạp trang web gitlab cục bộ này, tôi gặp lỗi chứng chỉ hết hạn ngay cả khi ngày tháng hợp lệ:

curl --insecure -vvI https://gitlab.mysite.com 2>&1 | awk 'BEGIN { cert=0 } /^\* Chứng chỉ máy chủ:/ { cert=1 } /^\*/ { if (cert) print }'
* Chứng chỉ máy chủ:
* chủ đề: CN=gitlab.mysite.com
* ngày bắt đầu: 12 tháng 11 14:36:12 2021 GMT
* ngày hết hạn: 10 tháng 2 14:36:11 2022 GMT
* tổ chức phát hành: C=US; O=Hãy mã hóa; CN=R3
* Kết quả xác minh chứng chỉ SSL: chứng chỉ đã hết hạn (10), vẫn tiếp tục.

Nhưng tôi không gặp phải lỗi chứng chỉ hết hạn này khi tải trang web từ trình duyệt hoặc khi sử dụng curl trên máy chủ khác. Lỗi chỉ xuất hiện khi sử dụng curl cục bộ, trên máy chủ lưu trữ phiên bản gitlab ce.

Đây là kết quả khi sử dụng curl trên một máy chủ khác:

* Chứng chỉ máy chủ:
* chủ đề: CN=gitlab.mysite.com
* ngày bắt đầu: 12 tháng 11 14:36:12 2021 GMT
* ngày hết hạn: 10 tháng 2 14:36:11 2022 GMT
* tổ chức phát hành: C=US; O=Hãy mã hóa; CN=R3
* Chứng chỉ SSL xác minh ok.

Có thể xảy ra sự cố vì cuộn tròn đang phân giải thành một trang web cục bộ (ip đã giải quyết = 127.0.1.1)?

lá cờ cn
Bob
Sự cố có thể xảy ra với chứng chỉ gốc Let's Encrypt cũ chứ không phải chứng chỉ máy chủ thực tế. https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/
tio oit avatar
lá cờ in
Tôi đã sử dụng OpenSSL để có thêm thông tin và đây là những gì tôi nhận được: openssl s_client -showcerts -connect gitlab.mysite.com:443
Raul Benet avatar
lá cờ ru
@tiooit bạn đang sử dụng hệ điều hành và phiên bản nào? Phiên bản nào của curl? Phiên bản SSL nào đang sử dụng curl (nếu bạn đang chạy Linux, bạn có thể tìm hiểu bằng cách thực hiện "sh$ readelf -d ` which curl`" và tìm mục có chứa libssl ] ?
Raul Benet avatar
lá cờ ru
Xin lỗi, định dạng đã làm sai lệch lệnh `readelf` trong nhận xét ở trên - hãy xem liệu lần này tôi có làm đúng không ```sh$ readelf -d ` which curl` ```
tio oit avatar
lá cờ in
Máy chủ đang chạy `Debian 9.13`, với `curl 7.52.1`, nhưng lệnh `readelf` không hiển thị bất kỳ dữ liệu libssl nào
Raul Benet avatar
lá cờ ru
Hóa ra là trong Debian 9.3 (và có thể nhiều phiên bản khác) `curl` đầu tiên phụ thuộc vào `libcurl`, sau đó lại phụ thuộc vào `libssl`. Do đó, tại sao bạn không có dữ liệu libssl khi phát hành readelf. Kiểm tra kho lưu trữ Debian 9.3, nó cho thấy `curl` cuối cùng nó đang sử dụng OpenSSL 1.0.2d (điều này có thể độc lập với cài đặt gói `openssl` của bạn). Và do đó, rất có thể bạn bị ảnh hưởng bởi vấn đề được đề cập trong câu trả lời của tôi.
Raul Benet avatar
lá cờ ru
Trên thực tế, câu hỏi của bạn có thể trùng lặp với https://serverfault.com/q/1079199/473319 và trước tiên tôi sẽ thử câu trả lời sau: https://serverfault.com/a/1080278/473319
tio oit avatar
lá cờ in
Bạn hoàn toàn đúng! Áp dụng bản sửa lỗi của câu trả lời được đề cập đã giải quyết được sự cố, cảm ơn bạn :)
Điểm:3
lá cờ ru

Tôi gặp các triệu chứng đó (hoạt động trên trình duyệt, không thành công trên Curl) trên máy Ubuntu 16.04, curl 7.47.0.

Trong trường hợp của tôi, sự cố thực sự được kích hoạt bởi chứng chỉ đã hết hạn của Let's Encrypt (như Bob đã đề cập), nhưng thực tế được tạo ra bởi một bọ cánh cứng về xử lý OpenSSL của cây chứng chỉ đa đường dẫn.

Ubuntu 16.04

Sự cố này trên OpenSSL đã được vá trên phiên bản 1.0.2g-1ubuntu4.20 (mới nhất tính đến hôm nay) của gói dành cho Ubuntu 16.04 (xem nhật ký thay đổi đây).

Nếu bạn đang dùng Ubuntu 16.04, hãy thử cập nhật OpenSSL lên bản mới nhất. Nếu bạn đang sử dụng hệ thống khác, hãy kiểm tra phiên bản OpenSSL của bạn. Các phiên bản trước 1.1.x gặp sự cố và yêu cầu "vá lỗi" (như đã thực hiện đối với bản phân phối Ubuntu đã đề cập ở trên). Nếu bạn không thể chuyển sang sử dụng phiên bản OpenSSL có bản sửa lỗi, thì bạn có thể vô hiệu hóa chứng chỉ gây ra sự cố. Cách tắt chứng chỉ sẽ khác nhau tùy thuộc vào Hệ điều hành/Bản phân phối của bạn.

Debian 9.3

(câu trả lời được cập nhật - một khi OP đã xác định HĐH là Debian 9.3)
Có vẻ như đối với Debian 9.3, đây sẽ là một câu hỏi trùng lặp (tôi không có đủ đặc quyền để đánh dấu câu hỏi đó).
Ứng dụng khách trên Debian 9 báo cáo sai chứng chỉ đã hết hạn cho miền do letsencrypt cấp
Và OP đã thành công khi áp dụng câu trả lời này (tương đương với đề xuất của tôi ở trên cho Ubuntu 16.04):
https://serverfault.com/a/1080278/473319

Thêm thông tin

Trang sau có thể cung cấp thêm thông tin cơ bản và gợi ý để hiểu vấn đề tốt hơn. https://scothelme.co.uk/lets-encrypt-old-root-expiration/

tio oit avatar
lá cờ in
Cám ơn bạn đã đóng góp ý kiến. Tôi đã kiểm tra phiên bản OpenSSL và nó là 1.1.0l, vì vậy nó sẽ không bị ảnh hưởng bởi lỗi mà bạn đang giới thiệu. Gần đây tôi cũng đã gia hạn chứng chỉ nhưng nó vẫn không hoạt động khi gọi trang web từ máy chủ lưu trữ nó.
Paul avatar
lá cờ cn
Ubuntu 16.04 là EOL. Vui lòng nâng cấp máy chủ của bạn lên phiên bản được bảo trì.
tio oit avatar
lá cờ in
Đối với những người đang tìm kiếm giải pháp, Raul Benet đã đưa ra giải pháp trong một nhận xét trong câu hỏi của tôi
Raul Benet avatar
lá cờ ru
Để làm cho nó rõ ràng hơn, tôi đã nâng cao câu trả lời. @tiooit vui lòng chấp nhận lại, vì vậy nó được đánh dấu là đã trả lời. Cám ơn.

Đă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.