我正在开发一个需要从证书 (.pfx) 中读取主题备用名称的 iOS 应用程序。
Security.framework 没有办法获取这些信息,所以你我使用的是 OpenSSL(openssl-1.0.1e)
要阅读主题名称,我使用的是 X509_get_subject_name(certificate),对于颁发者,我使用的是 X509_get_issuer_name(certificate) 并且正在工作。
问题是主题备用名称。我找不到任何函数来返回此信息。
是否可以使用 OpenSSL 获取主题备用名称?如何?
编辑:
我将证书导入 MAC 钥匙串。在主题备用名称上,我看到 NT 主体名称和 RFC 822 名称。
我试过了,但它返回 NULL:
GENERAL_NAME *name = (GENERAL_NAME*)X509_get_ext_d2i(cert,NID_subject_alt_name, NULL, NULL)
我正在阅读证书:
X509 *cert;
CFDataRef der = SecCertificateCopyData(certificate);
const unsigned char * ptr = CFDataGetBytePtr(der);
int len = CFDataGetLength(der);
d2i_X509(&cert,&ptr,len);