Tôi đang viết một chương trình nhỏ với thư viện OpenSSL giả sử thiết lập kết nối với máy chủ SSLv3. Máy chủ này phân phối chứng chỉ tự ký, điều này khiến cho việc bắt tay thất bại với thông báo này: "lỗi bắt tay cảnh báo sslv3, chứng chỉ tự ký trong chuỗi chứng chỉ".OpenSSL Bỏ qua lỗi chứng chỉ tự ký
Có cách nào tôi có thể buộc kết nối tiếp tục không? Tôi đã thử gọi SSL_CTX_set_verify như sau:
SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, NULL);
Nhưng dường như nó không thay đổi gì cả.
Mọi đề xuất?
'SSL_VERIFY_NONE' vô hiệu hóa xác minh giấy chứng nhận hoàn toàn. Bạn có thể không muốn làm điều này vì điều này khiến bạn dễ bị tấn công MITM. Điều đúng đắn cần làm là thêm chứng chỉ tự ký vào danh sách chứng chỉ đáng tin cậy. (Xem SSL_CTX_load_verify_locations().) –
Nhân tiện, thông báo lỗi không có nghĩa là chứng chỉ của máy chủ được tự ký. Điều đó có nghĩa là bạn không tin tưởng chứng chỉ của CA gốc: ** X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN ** _A chứng chỉ tự ký tồn tại trong chuỗi chứng chỉ. Chuỗi chứng chỉ có thể được tạo bằng các chứng chỉ không đáng tin cậy, nhưng không thể tìm thấy CA gốc tại địa phương._ Chứng chỉ CA gốc luôn được ký tự. –