Điểm:0

Lỗi "nhà phát hành chứng chỉ ngang hàng không được công nhận" khi cố gắng giao tiếp giữa hai máy chủ

lá cờ ca

Tôi có hai máy chủ Mộtb lưu trữ các trang web hoạt động tốt trong trình duyệt có https. Biểu tượng khóa trong trình duyệt hiển thị chứng chỉ SSL đang hoạt động và đáng tin cậy.

Tôi đang cố chạy curl để máy chủ Một có thể nói chuyện với máy chủ b, nhưng đang gặp lỗi.

- Máy chủ A -
$ cuộn tròn https://dev.partsvu.com
Tệp CA: /etc/pki/tls/certs/ca-bundle.crt
curl: (60) Nhà phát hành Chứng chỉ ngang hàng không được công nhận.

Tôi đã thực hiện một số nghiên cứu xung quanh các trang web Stack Overflow và gặp phải nhiều câu hỏi, tuy nhiên, các giải pháp của họ không hiệu quả với tôi.

Lần đầu tiên tôi thử tải xuống tệp chứng chỉ cho máy chủ b từ báo cáo Phòng thí nghiệm SSL và thêm thủ công danh sách chứng chỉ vào /etc/pki/tls/certs/ca-bundle.crt tập tin trên máy chủ Một nhưng tôi vẫn nhận được cùng một lỗi.

Tôi cũng đã đảm bảo rằng máy chủ b giấy chứng nhận có giá trị với những điều sau đây:

- Máy chủ B -
openssl x509 -dates -noout < /etc/pki/tls/certs/cloudflare.pem
not Before=Ngày 6 tháng 5 21:25:00 2022 GMT
notafter=2 tháng 5 21:25:00 2037 GMT

Tôi cũng đã thử sao chép nội dung của /etc/pki/tls/certs/cloudflare.pem trên máy chủ b trực tiếp đến /etc/pki/tls/certs/ca-bundle.crt trên máy chủ Một nhưng cùng một lỗi.

Cuối cùng, tôi đã thử truy cập máy chủ b trong Chrome và tải xuống tệp crt mà nó hiển thị tại https://cacerts.digicert.com/CloudflareIncECCCA-3.crt, đã chuyển đổi nó thành pem với:

openssl x509 -inform DES -in CloudflareIncECCCA-3.crt -out outcert.pem

và thêm nó vào cùng ca-bó.crt tập tin trên máy chủ Một.

Lỗi tương tự khi cố chạy curl.

Đây là chuỗi chứng chỉ từ Chrome:

nhập mô tả hình ảnh ở đây

Binky avatar
lá cờ de
Lệnh `$ curl https://.com` có vấn đề. "Địa chỉ máy chủ B" có phải là địa chỉ IP hay (các) nhãn DNS bên dưới ".com" không? Vui lòng gửi lệnh và lỗi thực tế. Nếu đó là địa chỉ IP, thì lệnh không thành công vì máy chủ cần thông tin về chứng chỉ nào sẽ gửi, dựa trên phần URL có sau lược đồ ("https://") và trước phần đầu của đường dẫn (" /"). Danh tính chứng chỉ thường là tên DNS, không phải địa chỉ IP. Vui lòng đăng chứng chỉ của máy chủ B ở dạng PEM, kèm theo ảnh chụp màn hình chuỗi chứng chỉ được trình duyệt hiển thị khi duyệt máy chủ B.
Binky avatar
lá cờ de
Ngoài ra, khi bạn nói "Tôi cũng đã đảm bảo rằng chứng chỉ B của máy chủ hợp lệ.." thì ngày có hiệu lực cho thấy đây không phải là chứng chỉ máy chủ, trừ khi bạn cấp chứng chỉ từ PKI riêng thay vì sử dụng cơ quan cấp chứng chỉ công khai. Chứng chỉ máy chủ từ CA công cộng không thể có hiệu lực hơn một năm. Vì vậy, bạn có 1) chứng chỉ sai trong tệp đó hoặc 2) nhiều chứng chỉ và ngày không phải Trước/Sau có thể thuộc về chứng chỉ gốc.
dave_thompson_085 avatar
lá cờ jp
Thực hiện `curl -V` (chữ hoa) để tìm hiểu phần mềm trung gian mà curl của bạn đang sử dụng; bạn có thể sẽ thấy đó là NSS (KHÔNG PHẢI OpenSSL) có nghĩa là nó KHÔNG sử dụng /etc/pki/tls/certs/ca-bundle.crt (_or_ ca-bundle.trust.crt). Đó là lý do tại sao RH/CentOS/etc có `update-ca-trust` để _chính xác_ cập nhật nhiều cửa hàng tin cậy thay vì để người dùng thiếu hiểu biết cố gắng thực hiện thủ công. Ngoài ra, lưu ý rằng trình duyệt hoạt động không phải là bằng chứng cho thấy máy chủ của bạn vẫn ổn vì trình duyệt thường có thể hoạt động xung quanh các chứng chỉ chuỗi bị thiếu trong khi `curl` thường không thể, nhưng nếu bạn gặp sự cố đó thì SSLLabs sẽ thông báo như vậy.
Timothy Fisher avatar
lá cờ ca
@Binky Tôi đã cập nhật lệnh với tên miền thực và cả ảnh chụp màn hình chuỗi chứng chỉ. Và vâng, bạn nói đúng rằng chứng chỉ cho ngày hết hạn là chứng chỉ gốc, không phải chứng chỉ hiển thị trong trình duyệt. Chúng tôi đang sử dụng Cloudflare. Có một chứng chỉ cạnh trong Cloudflare và sau đó là một chứng chỉ khác được HAProxy sử dụng để liên kết trên cổng 443.
lá cờ in
Bạn đang sử dụng phiên bản CentOS nào? Các gói đã cài đặt có được cập nhật không?
Timothy Fisher avatar
lá cờ ca
@dave_thompson_085 Tôi nghĩ bạn nói đúng về NSS.khi tôi chạy nó với `-V`, tôi nhận được `curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.53.1 zlib/1.2.7 libidn/1.28 libssh2/1.8.0`, và chạy `-v` hiển thị `* Khởi tạo NSS bằng certpath: sql:/etc/pki/nssdb`
Timothy Fisher avatar
lá cờ ca
@GeraldSchneider CentOS Linux phát hành 7.9.2009 (Lõi). Tôi đã đảm bảo rằng gói ca-chứng chỉ đã được cập nhật.
lá cờ in
Trên CentOS 7.9 có sẵn, tôi có thể kết nối với `https://dev.partsvu.com` bằng curl mà không gặp vấn đề gì.
Timothy Fisher avatar
lá cờ ca
@GeraldSchneider Tôi cũng có thể sử dụng curl trên máy cục bộ của mình. Tuy nhiên, khi tôi thử từ một máy chủ cụ thể, tôi nhận được lỗi không được nhận dạng. Tự hỏi nơi tôi có thể bắt đầu khắc phục sự cố này.
lá cờ in
Bạn đã thử chạy `yum install ca-certificates` chưa?
Timothy Fisher avatar
lá cờ ca
Có, tôi đã chạy nó cũng như làm theo điều này để cố gắng đưa mọi thứ trở lại trạng thái mặc định: https://access.redhat.com/solutions/1549003
lá cờ in
Vâng, điều này là khá không có kết quả. Nếu không có bất kỳ cách nào để biết bạn thực sự đã làm gì và hệ thống của bạn đang ở trạng thái nào thì thực sự không có cách nào để giúp bạn. Nếu máy chủ của tôi ở trạng thái này, tôi chỉ cần cài đặt lại.
Binky avatar
lá cờ de
@TimothyFisher Bạn có thể đăng đầu ra của các lệnh không: 1) sudo ls -l /etc/pki/nssdb và 2) sudo certutil -L -d sql:/etc/pki/nssdb ? Cái sau có thể có rất nhiều đầu ra; nếu vậy, hãy chuyển đầu ra thành grep và tìm kiếm "Baltimore CyberTrust Root".

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