从 X509* 获取主体和发行人信息

Rag*_*gas 4 c++ ssl openssl

我正在验证服务器上的客户端证书。

我使用了 SSL_CTX_set_verify 并有一个有效的回调 API,在其中我验证客户端证书的到期日期和其他一些参数。我需要提取客户端证书的“颁发者”和“颁发给”值。

回调函数是这样的

int certificateVerificationCallBack(int preverify_ok, X509_STORE_CTX *ctx)
{
    X509* cert = X509_STORE_CTX_get_current_cert(ctx);
}
Run Code Online (Sandbox Code Playgroud)

我将客户端证书详细信息填充到 X509 指针中,并且也能够获取到期日期(直接访问)。但我无法弄清楚使用什么 OpenSSL API 来获取“发布者”和“发布者”。

Jay*_*Jay 5

如果您需要证书的使用者名称和颁发者名称,则需要使用X509_get_subject_name()X509_get_issuer_name()API。它们采用 X509 指针并返回各自的名称。

更多信息可以在这里这里获得

  • 谢谢你!有效。尽管要提取实际的字符串,需要执行如下操作 - char *subj = X509_NAME_oneline(X509_get_subject_name(err_cert), NULL, 0); char *颁发者 = X509_NAME_oneline(X509_get_issuer_name(err_cert), NULL, 0); (2认同)