2012-04-15 30 views
10

Làm theo hướng dẫn trên page, tôi đang cố gắng sử dụng openSSL để kết nối máy khách/máy chủ một cách an toàn.OpenSSL: Không thể tạo SSL_CTX * bằng SSL_CTX_new()

tôi không thể để tạo ra các SSL_CTX như sau:

/* OpenSSL headers */ 

#include "openssl/bio.h" 
#include "openssl/ssl.h" 
#include "openssl/err.h" 

int main() 
{ 

     /* Initializing OpenSSL */ 

     SSL_load_error_strings(); 
     ERR_load_BIO_strings(); 
     OpenSSL_add_all_algorithms(); 

     SSL_CTX * ctx = SSL_CTX_new(SSLv23_client_method()); 

     ..... 
    } 

Tham chiếu ctx luôn hóa ra là NULL. Bất cứ ai có thể xin vui lòng cho biết những gì tôi đang bỏ lỡ bước?

Cảm ơn.

Cập nhật

On kiểm tra lỗi, thông điệp là

Error: library has no ciphers 

Trả lời

15

tôi đã sử dụng cuộc gọi sau khi khởi động của main() chức năng:

SSL_library_init(); 

Giải pháp tìm thấy tại địa chỉ: here

+1

Cũng lưu ý rằng bạn có thể có điều này cùng một lỗi nếu bạn sử dụng đối số sai cho 'SSL_CTX_new()'. Tôi đã tìm thấy một số mã đã sử dụng 'SSLv2_client_method()'. Nó biên dịch và chạy, nhưng đã nhận được một giá trị NULL 'ctx'. – kmort

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