openssl ssl_connect函数错误called a function you should not call
执行ssl_connect出现error
前面已经建立了socket连接并成功通信
SSL_library_init();
OpenSSL_add_all_algorithms();
SSL_load_error_strings();
ctx = SSL_CTX_new(SSLv23_server_method());
SSL_CTX_set_verify(ctx,SSL_VERIFY_PEER,NULL);
if(!SSL_CTX_load_verify_locations(ctx,CA_CERT.c_str(),NULL))
{
err = ERR_get_error();
printf("Connect error code: %d ,string: %s\n",err,ERR_error_string(err,NULL));
}
if(!SSL_CTX_use_certificate_file(ctx, MY_CERT.c_str (), SSL_FILETYPE_PEM))
{
err = ERR_get_error();
printf("Connect error code: %d ,string: %s\n",err,ERR_error_string(err,NULL));
}
SSL_CTX_set_default_passwd_cb_userdata(ctx,(void*)PASSWORD.c_str ());
if(!SSL_CTX_use_PrivateKey_file(ctx, PRIVT_KEY.c_str (), SSL_FILETYPE_PEM))
{
err = ERR_get_error();
printf("Connect error code: %d ,string: %s\n",err,ERR_error_string(err,NULL));
}
if(!SSL_CTX_check_private_key(ctx))
{
err = ERR_get_error();
printf("Connect error code: %d ,string: %s\n",err,ERR_error_string(err,NULL));
}
SSL_CTX_set_cipher_list(ctx,"RC4-MD5");
//
if(!Socket::Create())
printf("Could not create client socket.\n");
//printf("sock:%d\n",m_sockfd);
if(!Socket::Connect("127.0.0.1",port))
printf("Could not connect to port.\n");
Socket::Write(static_cast<Socket&>(*this),"hello!\n");
//printf("sock:%d\n",m_sockfd);
if((ssl = SSL_new(ctx))<=0)
{
err = ERR_get_error();
printf("Connect error code: %d ,string: %s\n",err,ERR_error_string(err,NULL));
}
if(SSL_set_fd(ssl, m_sockfd)<=0)
{
err = ERR_get_error();
printf("Connect error code: %d ,string: %s\n",err,ERR_error_string(err,NULL));
}
if (SSL_connect(ssl) <=0)
ERR_print_errors_fp(stderr);
else {
printf("Connected with %s encryption\n", SSL_get_cipher(ssl));
ShowCerts(ssl);
}
执行到上面加粗部分报error:140C5042:SSL routines:SSL_UNDEFINED_FUNCTION:called a function you should not call:ssl_lib.c:2396:
socket连接成功之后客户端发送了一个hello!字符串 已经打印在服务器上了 所以socket连接是没有问题的
这个错误完全不知道是什么意思啊...