2009-10-29 59 views
10

Vì nhiều lý do khác nhau, tôi đã tạo một máy chủ HTTP đơn giản và hỗ trợ SSL bổ sung qua OpenSSL. Tôi đang sử dụng chứng chỉ tự ký. IE, Firefox và Chrome vui vẻ tải nội dung miễn là tôi thêm CA vào CA gốc đáng tin cậy.wget, các chứng chỉ tự ký và máy chủ HTTPS tùy chỉnh

Tuy nhiên, wget (ngay cả khi sử dụng --no-check-certificate cờ) báo cáo:

OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure 

Nếu tôi chạy client OpenSSL chống lại máy chủ của tôi sử dụng:

openssl s_client -connect dnvista:82 -debug 

tôi nhận được trở lại: xác minh lỗi: num = 19: chứng chỉ tự ký trong chuỗi chứng chỉ xác minh trở lại: 0 và sau đó

5852:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:.\ssl\s3_pkt.c:1060:SSL alert number 40 
5852:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:.\ssl\s23_lib.c:188: 

Thực hiện wget và ứng dụng OpenSSL đơn giản là không hoạt động với chứng chỉ tự ký?

UPDATE:

Đối với bất cứ ai mà đến cùng sau, thêm mã này giúp với khách hàng OpenSSL và Firefox:

EC_KEY *ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); 
SSL_CTX_set_tmp_ecdh(ctx, ecdh); 
EC_KEY_free(ecdh); 

Trả lời

11

Tôi đã kiểm tra man page của wget, và --no-check-certificate dường như chỉ ảnh hưởng đến chứng chỉ máy chủ . Bạn cần chỉ định chứng chỉ tự ký của mình làm chứng chỉ CA hợp lệ cục bộ.

Để thực hiện việc này, hãy chỉ định chứng chỉ là --ca-certificate=... trong wget-CAfile trong trường hợp s_client.

+5

Xin chào. Tôi đã nhìn thấy rất nhiều ý kiến ​​như thế này, "Turn the check-off" trong nhiều từ. Đó là một ý tưởng ** thực sự _BAD_ **. Một chút giống như đua xe đường phố với lốp hói trên đường ướt. Tôi thất vọng câu trả lời này có một đánh dấu 'đánh dấu'. – will

+5

sẽ: Tôi đồng ý, việc kiểm tra thường là một ý tưởng tồi. Câu trả lời của tôi cho thấy một cách để tạo chứng chỉ CA được khách hàng biết, để kiểm tra có thể được thực hiện đúng. –

5

Bạn cũng có thể cài đặt chứng chỉ CA gốc đáng tin cậy vào OpenSSL trong một trong một số cách:

  • Đặt chứng chỉ CA của bạn trong/etc/PKI/tls/certs hoặc thư mục tương đương, sau đó tạo ra một liên kết dựa trên băm chứng chỉ. Xem http://gagravarr.org/writing/openssl-certs/others.shtml#ca-openssl để biết chi tiết.
  • Nối chứng chỉ CA của bạn vào /etc/pki/tls/certs/ca-bundle.crt, /etc/pki/tls/cert.pem hoặc gói CA tương đương.
+0

Tôi đã đăng câu hỏi: [Thiết lập hoặc cấu hình Ruby OpenSSL cho mã ứng dụng của bạn] (http://stackoverflow.com/questions/5233169/ruby-openssl-set-up-or-configuration-for-your-application- mã), để yêu cầu _HOW_ Ruby nhận tài nguyên PEM hoặc CRT để thực hiện xác minh máy chủ. Tôi đã tìm kiếm một mô-đun đầy đủ để tải thông tin về môi trường hoặc cấu hình bằng các lần quét ** grep ** đệ quy - Không có may mắn (ngoại trừ trong thử nghiệm và các mẫu). – will

Các vấn đề liên quan