2013-03-11 9 views
5

Bir sertifikadan (.pfx) Konu Alternatif Adı'nı okumalı olan bir iOS uygulaması geliştiriyorum.OpenSSL Kurun Gelecek Adı Sertifikadan

Security.framework bu bilgileri almak için bir yol yoktur, bu yüzden ben

Ben X509_get_subject_name (sertifika) kullanıyorum Konu Adı okumak için OpenSSL (openssl-1.0.1e) kullanılarak ve için yaşıyorum Verici X509_get_issuer_name (sertifika) kullanıyorum ve çalışıyor.

Sorun, Konu Alternatif Adıdır. Bu bilgiyi iade etmek için herhangi bir işlev bulamıyorum.

Konu Alternatif Adı almak için OpenSSL kullanarak mümkün mü? Nasıl?

Düzenleme:

Ben MAC Anahtarlık sertifikayı ithal. Konu Üzerindeki Alternatif İsim Ben NT Asıl Adı ve RFC 822 Adını görüyorum.

Bu çalıştı ama NULL döndürüyor: bununla

GENERAL_NAME *name = (GENERAL_NAME*)X509_get_ext_d2i(cert,NID_subject_alt_name, NULL, NULL) 

okuyorum sertifikayı:

X509 *cert; 
CFDataRef der = SecCertificateCopyData(certificate); 
const unsigned char * ptr = CFDataGetBytePtr(der); 
int len = CFDataGetLength(der); 
d2i_X509(&cert,&ptr,len); 

cevap

2

Ardından X509_get_ext_by_NID() X509_get_ext kullanarak x509 alternatif konu adını alabilir(): Sk_GENERAL_NAME_n öğesini kullanarak uzantıyı ayrıştırmanız gerekiyorsa

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

if (loc >= 0) { 
    X509_EXTENSION * ext = X509_get_ext(X509 *, loc); 
um() ve sk_GENERAL_NAME_value() veya X509_get_ext_d2i().

+0

Bunu deniyorum: (GENERAL_NAME *) X509_get_ext_d2i (sertifika, NID_subject_alt_name, NULL, NULL); Ama ben boşum. Çalışmalı mı? – Freedom

+0

Teoride, sertifika NULL ise, sertifikanın konu adı alternatif adı uzantısı veya birden fazla olması durumunda yalnızca NULL elde etmeniz gerekir. Sertifikayı cert'e ve sertifikanın içeriğine yükleyen kodu (veya tercih ederseniz openssl x509 -in -txt dosyasının çıktısını) yükleyebilir misiniz? –

+0

X509_get_subject_name() kullanıyorum ve çalışıyor. Sertifikayı mac anahtarlık içine aldım. Konu Adı Alternatif Adı'nda, NT Asıl Adı ve RFC 822 İsmini görüyorum (Aynı değere sahipler). Sorun bu olabilir mi? – Freedom