C++ Boost ASIO p12 Certificate SSL Handshake

キャンセルされた 投稿 Jan 16, 2014 着払い
キャンセルされた 着払い

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;

C++プログラミング

プロジェクトID: #5328725

プロジェクトについて

1個の提案 リモートプロジェクト アクティブ Jan 16, 2014

1人のフリーランサーが、このジョブに平均$257で入札しています

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 10日以内
(レビュー1件)
1.9