3

我有一个指向 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 。

4

1 回答 1

4

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

于 2013-04-05T12:15:42.720 回答