証明書 (.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);