首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.crt API将.crt转换为.pem

使用.crt API将.crt转换为.pem
EN

Stack Overflow用户
提问于 2014-10-01 13:38:09
回答 1查看 3.3K关注 0票数 2

有人能告诉我如何使用openssl将.crt文件转换为.pem文件吗?我试过这样做:

代码语言:javascript
复制
FILE *fl = fopen(cert_filestr, "r");
fseek(fl, 0, SEEK_END);
long len = ftell(fl);
char *ret = malloc(len);
fseek(fl, 0, SEEK_SET);
fread(ret, 1, len, fl);
fclose(fl);
BIO* input = BIO_new_mem_buf((void*)ret, sizeof(ret));
x509 = d2i_X509_bio(input, NULL);
FILE* fd = fopen(certificateFile, "w+");
BIO* output = BIO_new_fp(fd, BIO_NOCLOSE);
X509_print_ex(output, x509, XN_FLAG_COMPAT, X509_FLAG_COMPAT);
fclose(fd);

但是这不起作用,x509总是空的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-02 14:12:30

.crt证书“可以被编码为二进制DER或ASCII。(见http://info.ssl.com/article.aspx?id=12149)。

如果您的.crt文件已经编码,您不需要转换它,只需将文件名从.crt更改为.pem即可。

如果将其编码为DER,则将其转换为PEM,如下例所示:

代码语言:javascript
复制
X509* x509 = NULL;
FILE* fd = NULL,*fl = NULL;

fl = fopen(cert_filestr,"rb");
if(fl) 
{
    fd = fopen(certificateFile,"w+");
    if(fd) 
    {
        x509 = d2i_X509_fp(fl,NULL);
        if(x509) 
        {
            PEM_write_X509(fd,x509);
        }
        else 
        {
           printf("failed to parse to X509 from fl");
        }
        fclose(fd);
    }
    else
    {
        printf("can't open fd");
    }
   fclose(fl);
}
else 
{
    printf("can't open f");
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26142763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档