PEM_write_X509(x509 *)并在多线程进程中崩溃

时间:2016-09-23 09:39:16

标签: openssl x509 pem

我正在使用PEM_write_X509(x509*)来编写连接到SSL服务器时收到的证书。这适用于单线程环境,但在多线程环境中失败。

PEM_write_X509_AUX()PEM_write_X509()之间的区别是什么?

只使用write()电话转储证书是否可以?

在多线程应用程序中是否还有其他选项来编写证书文件?

1 个答案:

答案 0 :(得分:0)

使用以下代码而不是PEM_write_X509()后,我能够解决此问题。

X509  *cert = GetPeerCertificate(hostname, port);
if(cert)
{
    unsigned char *data;
    unsigned int len = 0;
    BIO *bio = BIO_new(BIO_s_mem());
    PEM_write_bio_X509(bio, cert);
    len = BIO_get_mem_data(bio, &data);
    if(0 != Writeile(certificate_file, data, len))
    {
        ret = ERROR;
    }
    BIO_free(bio);
}