如何从连接的ssl会话中获取base64编码证书(PEM)

时间:2012-10-16 12:49:23

标签: c++ c openssl certificate x509

我正在使用以下内容获取openssl C中已连接会话的PEM证书。我需要获得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));
}

有关如何实现这一目标的任何信息都会有所帮助。

1 个答案:

答案 0 :(得分:1)

您应该使用i2d_X509函数来获取DER编码证书。 然后使用您喜欢的base64编码器并将其编码为PEM。 不要忘记添加 ----- BEGIN CERTIFICATE ----- ----- END CERTIFICATE ----- 如果你想要它正确的话

Here您可以找到有关如何使用OpenSSL编码的示例。 在使用OpenSSL时,您可以通过使用 i2d_X509_bio 函数将DER编码数据直接放入BIO来简化操作。