Sto sviluppando un'applicazione iOS che dovrà leggere Nome alternativo soggetto da un certificato (.pfx).OpenSSL Ottieni oggetto Nome alternativo dal certificato
Security.framework non dispone di un modo per ottenere queste informazioni, in modo da sto usando OpenSSL (openssl-1.0.1e)
Per leggere nome soggetto che sto utilizzando X509_get_subject_name (certificato) e per Emittente sto usando X509_get_issuer_name (certificato) e funziona.
Il problema è il nome soggetto alternativo. Non riesco a trovare alcuna funzione per restituire queste informazioni.
È possibile utilizzare OpenSSL per ottenere il Nome alternativo soggetto? Come?
Edit:
ho importato il certificato in MAC portachiavi. In Nome alternativo soggetto Vedo Nome principale NT e Nome RFC 822.
Ho provato questo, ma sta tornando NULL: certificato
GENERAL_NAME *name = (GENERAL_NAME*)X509_get_ext_d2i(cert,NID_subject_alt_name, NULL, NULL)
Sto leggendo con questo:
X509 *cert;
CFDataRef der = SecCertificateCopyData(certificate);
const unsigned char * ptr = CFDataGetBytePtr(der);
int len = CFDataGetLength(der);
d2i_X509(&cert,&ptr,len);
Sto provando questo: (GENERAL_NAME *) X509_get_ext_d2i (cert, NID_subject_alt_name, NULL, NULL); Ma io sono nullo. Dovrebbe funzionare? – Freedom
In teoria si dovrebbe ottenere NULL solo se cert è NULL, il certificato non ha un'estensione di nome alternativo soggetto o più di uno. Potresti postare il codice che carica il certificato in cert e il contenuto del certificato (o l'output di openssl x509 -in -text se lo preferisci)? –
Sto usando X509_get_subject_name() e funziona. Ho importato il certificato nel portachiavi mac. Sull'oggetto Nome alternativo vedo NT Nome principale e Nome RFC 822 (hanno lo stesso valore). Potrebbe essere il problema? – Freedom