如何理解TLS证书是PEM或DER格式

时间:2013-03-29 12:08:56

标签: c ssl openssl

我的任务是从TLS证书中获取“通用名称”信息。 我设法通过解析TLS“证书”(在“你好的服务器”之后)来做到这一点 消息并获取指向证书的指针并传递给X509_NAME_get_text_by_NID;

p = certificate;//this is a pointer to certificate 
X509 *x;
x = d2i_X509(NULL, &p, certificate_lenght);

if (x == NULL)
{
    fout << " X509 object is null " << std::endl;
    return;
}
fout << " no x509  error " << endl;
X509_NAME_get_text_by_NID(X509_get_subject_name(x),NID_commonName, peer_CN, 256);

我希望我做得对。

我的问题我设计了“DER”格式的逻辑,这些信息可以采用“PEM”格式。 如果是,我如何理解证书是PEM还是DER格式?

1 个答案:

答案 0 :(得分:2)

在TLS握手期间发送的证书始终是DER中的二进制数据。你不需要关心那里的PEM。

如果要使用相同的代码从其他来源加载证书,则需要分析它是否是纯文本(即只有32-127范围内的字符)。如果是,那么很可能你有一些PEM。虽然不能保证您已获得证书。你需要删除页眉和页脚,如果它们存在,然后base64解码其余的以获得DER,然后你可以解码DER。