|
|
|
@@ -30,7 +30,7 @@ using X509_ptr = std::unique_ptr<X509, Deleter<X509, X509_free>>;
|
|
|
|
|
using SSL_CTX_ptr = std::unique_ptr<SSL_CTX, Deleter<SSL_CTX, SSL_CTX_free>>;
|
|
|
|
|
using BIO_ptr = std::unique_ptr<BIO, Deleter<BIO, BIO_vfree>>;
|
|
|
|
|
|
|
|
|
|
CertManager::CertManager() : _sessionPkey(nullptr), _caPkey(nullptr), _caCert(nullptr) {}
|
|
|
|
|
CertManager::CertManager() : _caPkey(nullptr), _caCert(nullptr), _sessionPkey(nullptr) {}
|
|
|
|
|
|
|
|
|
|
CertManager::~CertManager()
|
|
|
|
|
{
|
|
|
|
@@ -102,7 +102,7 @@ void CertManager::installCert(X509* cert)
|
|
|
|
|
PCCERT_CONTEXT certCtx = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, derBuf, derLen);
|
|
|
|
|
if (certCtx)
|
|
|
|
|
{
|
|
|
|
|
HCERTSTORE rootStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL, CERT_SYSTEM_STORE_CURRENT_USER, L"Root");
|
|
|
|
|
HCERTSTORE rootStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, CERT_SYSTEM_STORE_CURRENT_USER, L"Root");
|
|
|
|
|
if (rootStore)
|
|
|
|
|
{
|
|
|
|
|
BOOL success = CertAddCertificateContextToStore(rootStore, certCtx, CERT_STORE_ADD_REPLACE_EXISTING, NULL);
|
|
|
|
@@ -145,9 +145,10 @@ bool CertManager::generateCA()
|
|
|
|
|
X509_gmtime_adj(X509_get_notBefore(cert.get()), 0);
|
|
|
|
|
X509_gmtime_adj(X509_get_notAfter(cert.get()), 31536000L); // 1 year
|
|
|
|
|
|
|
|
|
|
X509_NAME* name = X509_get_subject_name(cert.get());
|
|
|
|
|
X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_ASC, (unsigned char*)"Debug Proxy CA", -1, -1, 0);
|
|
|
|
|
X509_set_issuer_name(cert.get(), name);
|
|
|
|
|
X509_NAME* subjName = X509_get_subject_name(cert.get());
|
|
|
|
|
std::string randomCN = utils::randomizeString(16);
|
|
|
|
|
X509_NAME_add_entry_by_txt(subjName, "CN", MBSTRING_ASC, (unsigned char*)randomCN.c_str(), -1, -1, 0);
|
|
|
|
|
X509_set_issuer_name(cert.get(), subjName);
|
|
|
|
|
X509_set_pubkey(cert.get(), _caPkey);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@@ -197,8 +198,8 @@ SSL_CTX* CertManager::createHostContext(const std::string& host)
|
|
|
|
|
X509_gmtime_adj(X509_get_notBefore(cert.get()), 0);
|
|
|
|
|
X509_gmtime_adj(X509_get_notAfter(cert.get()), 31536000L);
|
|
|
|
|
|
|
|
|
|
X509_NAME* name = X509_get_subject_name(cert.get());
|
|
|
|
|
X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_ASC, (unsigned char*)host.c_str(), -1, -1, 0);
|
|
|
|
|
X509_NAME* subjName = X509_get_subject_name(cert.get());
|
|
|
|
|
X509_NAME_add_entry_by_txt(subjName, "CN", MBSTRING_ASC, (unsigned char*)host.c_str(), -1, -1, 0);
|
|
|
|
|
X509_set_issuer_name(cert.get(), X509_get_subject_name(_caCert));
|
|
|
|
|
X509_set_pubkey(cert.get(), _sessionPkey);
|
|
|
|
|
|
|
|
|
|