Как получить сертификат в кодировке base64 (PEM) из подключенного сеанса ssl

Я использую следующее, чтобы получить сертификат PEM для подключенного сеанса в openssl C. Мне нужно получить сертификат в кодировке base64.

if(this->ssl) {
  X509 *cert = SSL_get_certificate(this->ssl);
  EVP_PKEY *pubKey = X509_get_pubkey(cert);
  LOG_INFO("Public key is " << BN_bn2hex(pubKey->pkey.rsa->n));
}

Любая информация о том, как я могу достичь этого, будет полезна.


person Adnan Akbar    schedule 16.10.2012    source источник


Ответы (1)


Вы должны использовать функцию i2d_X509 для получения сертификата в кодировке DER. Затем используйте свой любимый кодировщик base64 и закодируйте его в PEM. Не забудьте добавить -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----, если вы хотите, чтобы это было правильно .

Здесь вы можете найти пример как кодировать с помощью самого OpenSSL. При использовании OpenSSL вы можете упростить задачу, используя функцию i2d_X509_bio для помещения данных в кодировке DER непосредственно в BIO.

person Rostislav Kondratenko    schedule 16.10.2012