2012-10-16 49 views
0

我正在使用以下命令在openssl C中獲取連接會話的PEM證書。我需要的是獲取base64編碼證書。如何從連接的SSL會話中獲取base64編碼證書(PEM)

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

您應該使用i2d_X509函數來獲得DER編碼證書。 然後使用您最喜愛的base64編碼器並將其編碼到PEM。 不要忘了添加----- BEGIN CERTIFICATE ---------- END CERTIFICATE -----如果你想要它適當的方式。

Here你可以找到關於如何用OpenSSL本身進行編碼的例子。 在使用OpenSSL時,您可以使用i2d_X509_bio函數將DER編碼數據直接放入BIO中,從而簡化操作。