Я переношу клиентскую библиотеку Java в статическую библиотеку C ++. Эти библиотеки предоставляют SDK для связи с сервером, который написан на Java с использованием Netty .
Я использую Boost 1.87 с C ++ 23.
#pragma once
#include "Config.hpp"
#include "util/concurrent/ThreadPool.hpp"
#include
#include
#include
#include
#include
using namespace boost::asio;
namespace fs = std::filesystem;
namespace sdk {
class HttpClient {
public:
explicit HttpClient(std::shared_ptr threadPool)
: m_threadPool(std::move(threadPool)),
m_ioContext(m_threadPool->getIoContext()),
m_sslContext(ssl::context::tlsv12_client),
m_sslSocket(m_ioContext, m_sslContext),
m_host(Config::getData()->host),
m_port(Config::getData()->port)
{
auto configData = Config::getData();
// so dumb. why can't I just use the context directly?
// i have to use the native handle to load the certificate and key
// because boost::asio is not sending the client certificate
SSL *sslHandle = m_sslSocket.native_handle();
if (!sslHandle) {
throw std::runtime_error("Failed to retrieve SSL handle!");
}
if (SSL_use_certificate_file(sslHandle, configData->keystore.path.c_str(), SSL_FILETYPE_PEM) keystore.path); // keystore.path);
}
else if (SSL_use_PrivateKey_file(sslHandle, configData->key.path.c_str(), SSL_FILETYPE_PEM) key.path, ssl::context::pem); // key.path);
}
}
void connect()
{
ip::tcp::resolver resolver(m_ioContext);
auto endpoints = resolver.resolve(m_host, std::to_string(m_port));
LOG(info)
Подробнее здесь: [url]https://stackoverflow.com/questions/79401513/boostasiosslcontext-not-sending-client-certificates[/url]
Я переношу клиентскую библиотеку Java в статическую библиотеку C ++. Эти библиотеки предоставляют SDK для связи с сервером, который написан на Java с использованием Netty . Я использую Boost 1.87 с C ++ 23. [code]#pragma once
using namespace boost::asio; namespace fs = std::filesystem;
namespace sdk {
class HttpClient { public: explicit HttpClient(std::shared_ptr threadPool) : m_threadPool(std::move(threadPool)), m_ioContext(m_threadPool->getIoContext()), m_sslContext(ssl::context::tlsv12_client), m_sslSocket(m_ioContext, m_sslContext), m_host(Config::getData()->host), m_port(Config::getData()->port) { auto configData = Config::getData();
// so dumb. why can't I just use the context directly? // i have to use the native handle to load the certificate and key // because boost::asio is not sending the client certificate SSL *sslHandle = m_sslSocket.native_handle(); if (!sslHandle) { throw std::runtime_error("Failed to retrieve SSL handle!"); }
if (SSL_use_certificate_file(sslHandle, configData->keystore.path.c_str(), SSL_FILETYPE_PEM) keystore.path); // keystore.path); } else if (SSL_use_PrivateKey_file(sslHandle, configData->key.path.c_str(), SSL_FILETYPE_PEM) key.path, ssl::context::pem); // key.path); } }
void connect() { ip::tcp::resolver resolver(m_ioContext); auto endpoints = resolver.resolve(m_host, std::to_string(m_port));
Я переношу клиентскую библиотеку Java в статическую библиотеку C ++. Эти библиотеки предоставляют SDK для связи с сервером, который написан на Java с использованием Netty .
Я использую Boost 1.87 с C ++ 23.
#pragma once
Доброе утро.
Моя проблема в том, что я хочу создать HttpsurlConnection , который принимает доверенные сертификаты по умолчанию, но также и мой самоопределенный сертификат. /> Это в значительной степени то, что я хочу, но с разницей:
Они будут...
В Chrome, Firefox и Curl можно заставить openssl записывать сеансовые ключи SSL в файл журнала, установив переменную среды SSLKEYLOGFILE. Есть ли у boost что-нибудь похожее на конфигурацию?
Я знаю, что это можно сделать в коде с помощью...
В нашей программе время от времени происходит сбой: программа завершена с сигналом 11, ошибка сегментации. В основном файле показано исключение, возникшее в ssl3_read_internal(). Что может быть причиной этого? Трассировка основного стека файлов:...
В Chrome, Firefox и Curl иметь ключи SSL openssl записать SSL в файл журнала, установив переменную среды sslkeylogfile . У Boost есть что -то похожее на конфигурацию?