使用openssl从tls证书中有效地获得通用名称

时间:2013-04-05 11:01:49

标签: c ssl openssl

我有一个指向TLS证书的指针,我需要获取commonName属性;

我首先使用函数d2i_X509创建X509对象;

x = d2i_X509(NULL, &p, certificate_lenght);
if (x == NULL)
    return https_failure;

比调用函数X509_NAME_get_text_by_NID获取commonName

X509_NAME_get_text_by_NID(X509_get_subject_name(x),NID_commonName, hc->https_domain_name, 256);

它适合我,但我担心表现。我想,当我只需要commonName时,会解析所有证书对象。是否有更好的方法可以更有效地获取commonName。

1 个答案:

答案 0 :(得分:3)

使用OpenSSL高级API没有更有效的方法。如果您真的对能够获得最佳性能感兴趣,则需要使用低级ASN.1解析API。 但请记住,如果不完全解析证书就无法完全验证证书,因此我会关注仅提取CN的安全隐患。