Pracuję nad aplikacją na iOS, która będzie musiała odczytać alternatywną nazwę podmiotu z certyfikatu (.pfx).OpenSSL Get Subject Alternatywna nazwa z certyfikatu
Security.framework nie ma sposobu na zdobycie tej informacji, więc używam OpenSSL (openssl-1.0.1e)
Aby przeczytać Nazwa podmiotu Używam X509_get_subject_name (certyfikat) oraz Emitent Używam X509_get_issuer_name (certyfikat) i działa.
Problem stanowi alternatywna nazwa podmiotu. Nie mogę znaleźć żadnej funkcji zwracającej te informacje.
Czy można skorzystać z OpenSSL w celu uzyskania alternatywnej nazwy podmiotu? W jaki sposób?
Edit:
I importowany certyfikat do MAC pęku kluczy. Na temat alternatywnej nazwy podmiotu widzę nazwę główną NT i nazwę RFC 822.
próbowałem tego, ale to wraca NULL:
GENERAL_NAME *name = (GENERAL_NAME*)X509_get_ext_d2i(cert,NID_subject_alt_name, NULL, NULL)
Czytam certyfikat z tym:
X509 *cert;
CFDataRef der = SecCertificateCopyData(certificate);
const unsigned char * ptr = CFDataGetBytePtr(der);
int len = CFDataGetLength(der);
d2i_X509(&cert,&ptr,len);
Próbuję tego: (GENERAL_NAME *) X509_get_ext_d2i (cert, NID_subject_alt_name, NULL, NULL); Ale jestem nieważny. Czy to powinno działać? – Freedom
Teoretycznie powinieneś otrzymać NULL tylko wtedy, gdy cert ma wartość NULL, certyfikat nie ma alternatywnego rozszerzenia nazwy podmiotu lub więcej niż jednego. Czy mógłbyś opublikować kod ładujący certyfikat do certyfikatu i zawartość certyfikatu (lub wyjście z openssl x509 -w -text jeśli wolisz)? –
Używam X509_get_subject_name() i działa. Zaimportowałem certyfikat do pęku kluczy mac. Na temat alternatywnej nazwy podmiotu widzę nazwę główną NT i nazwę RFC 822 (mają tę samą wartość). Czy to może być problem? – Freedom