C++ Boost ASIO p12 Certificate SSL Handshake

Cancelado Postado Jan 16, 2014 Pago na entrega
Cancelado Pago na entrega

We are trying to connect to our server using boost asio and getting the error "handshake: sslv3 alert handshake failure". We have tried changing the ssl type, setting verify peer to none and a few other things with no success. We are currently at a standstill with our project as a result and would like to find someone familiar with C++ Boost ASIO. This should be a simple project so if you know how to do this please be prepared to present code within 5-10 minutes of bid acceptance. We may have ongoing work for a quality C++ developer. Please see our current code,

FILE *fp;

EVP_PKEY *pkey;

X509 *cert;

STACK_OF(X509) *ca = NULL;

PKCS12 *p12;

int i;

OpenSSL_add_all_algorithms();

ERR_load_crypto_strings();

fp = fopen("/[url removed, login to view]", "rb");

p12 = d2i_PKCS12_fp(fp, NULL);

fclose (fp);

PKCS12_parse(p12, "mypasswordgoeshere", &pkey, &cert, &ca);

PKCS12_free(p12);

if (pkey) {

fprintf(fp, "***Private Key***\n");

PEM_write_PrivateKey(fp, pkey, NULL, NULL, 0, NULL, NULL);

}

if (cert) {

fprintf(fp, "***User Certificate***\n");

PEM_write_X509_AUX(fp, cert);

}

if (ca && sk_X509_num(ca)) {

fprintf(fp, "***Other Certificates***\n");

for (i = 0; i < sk_X509_num(ca); i++)

PEM_write_X509_AUX(fp, sk_X509_value(ca, i));

}

//sk_X509_pop_free(ca, X509_free);

//X509_free(cert);

//EVP_PKEY_free(pkey);

//fclose(fp);

using boost::asio::ip::tcp;

boost::system::error_code ec;

boost::asio::io_service io_service;

boost::asio::ssl::context ctx(io_service, boost::asio::ssl::context::sslv23);

//HOW TO LOAD cert object into ctx?

namespace ssl = boost::asio::ssl;

typedef ssl::stream<tcp::socket> ssl_socket;

ssl_socket sockconn(io_service, ctx);

tcp::resolver resolver(io_service);

tcp::resolver::query query("[url removed, login to view]", "https");

boost::asio::connect(sockconn.lowest_layer(), [url removed, login to view](query));

sockconn.lowest_layer().set_option(tcp::no_delay(true));

sockconn.set_verify_mode(boost::asio::ssl::verify_none);

[url removed, login to view](ssl_socket::client);

boost::asio::streambuf request;

std::ostream requestStream(&request);

requestStream << "GET /[url removed, login to view] HTTP/1.1\r\n"

<< "Connection: Close\r\n"

<< "Host: [url removed, login to view]\r\n\r\n";

boost::asio::write(sockconn, request);

boost::asio::streambuf respond;

boost::asio::read(sockconn, respond, completion, ec);

std::cout << &respond << std::endl;

Programação C++

ID do Projeto: #5328725

Sobre o projeto

1 proposta Projeto remoto Ativo em Jan 16, 2014

1 freelancer está oferecendo em média $257 para esse trabalho

TrackProgramming

Dear Customer, I can start now, kindly be noted that I have a professional team to do your work, so, if you interest, kindly send me a PM, in order I can start. Best regards.

$257 USD in 10 dias
(1 Comentário)
1.9