1

我正在使用以下内容在 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));
}

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

4

1 回答 1

1

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

在这里,您可以找到有关如何使用 OpenSSL 本身进行编码的示例。在使用 OpenSSL 时,您可以通过使用i2d_X509_bio函数将 DER 编码数据直接放入 BIO 来简化事情。

于 2012-10-16T13:00:00.733 回答