ios - OpenSSL 从证书中获取主题备用名称

标签 ios objective-c openssl x509certificate

我正在开发一个 iOS 应用程序,它需要从证书 (.pfx) 中读取主题备用名称。

Security.framework 没有办法获取这些信息,所以你我正在使用 OpenSSL(openssl-1.0.1e)

要阅读主题名称,我正在使用 X509_get_subject_name(certificate),对于 Issuer,我正在使用 X509_get_issuer_name(certificate) 并且正在工作。

问题是主题备用名称。我找不到任何函数来返回此信息。

是否可以使用 OpenSSL 获取主题备用名称?怎么办?

编辑:

我将证书导入 MAC 钥匙串(keychain)。 在主题备用名称上,我看到 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);

最佳答案

您可以使用 X509_get_ext_by_NID() 然后使用 X509_get_ext() 获取 x509 主题备用名称:

int loc = X509_get_ext_by_NID(X509 *, NID_subject_alt_name, -1);

if (loc >= 0) {
  X509_EXTENSION * ext = X509_get_ext(X509 *, loc);

然后您必须使用 sk_GENERAL_NAME_num() 和 sk_GENERAL_NAME_value() 或 X509_get_ext_d2i() 来解析扩展。

关于ios - OpenSSL 从证书中获取主题备用名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15343818/

相关文章:

objective-c - 来自 URL(RSS 阅读器)的图像在表格 View 中显示 - 问题

openssl - RSA-OAEP 和 RSAES-OAEP 之间有什么区别?

ios - 哪些限制会阻止我的 UIView 相互堆叠?

ios - 将 UITextfield 中的每个字符记录到 IOS 中的 NSDictionary

iphone - UITableViewCell 的动态高度取决于文本

c - Cocoa 和 Objective-C 中的哈希

c - 将 sendfile() 与 SSL 结合使用时出现问题

ios - UILabel 双线和约束

ios - Swift - 防止计时器重复

ios - 快速 skscene 触摸并按住其他 Action ,而不仅仅是触摸