Я пробовал таким образом ... и мог прочитать значения сертификата.
bio_out=BIO_new_fp(stdout,BIO_NOCLOSE); //here instead of stdout, a file pointer can also be given
x509 = sk_X509_value(certs,0);
X509_NAME_print_ex(bio_out,X509_get_issuer_name(x509), XN_FLAG_COMPAT, X509_FLAG_COMPAT);
//Issuer Name
BIO_printf(bio_out,"\n");
unsigned long nmflag = 0;
CryptoUtility *cryptoU = [[CryptoUtility alloc] init];
[cryptoU print_name:bio_out title:"Verify : issuer= " x509name:X509_get_issuer_name(x509) flag:nmflag];
BIO_printf(bio_out,"\n");
//Subject Name
BIO_printf(bio_out,"\n");
[cryptoU print_name:bio_out title:"Verify : subject= " x509name:X509_get_subject_name(x509) flag:nmflag];
BIO_printf(bio_out,"\n");
//Serial NO
BIO_printf(bio_out,"\n");
BIO_printf(bio_out,"Verify : serial=");
i2a_ASN1_INTEGER(bio_out, X509_get_serialNumber(x509));
BIO_printf(bio_out,"\n");
BIO_printf(bio_out,"\n");
//NSLog(@"Issuer name %@",X509_get_issuer_name(x509));
//Common Name
char peer_CN[256];
X509_NAME_get_text_by_NID(X509_get_subject_name(x509),NID_commonName, peer_CN, 256);
NSLog(@"Verify : comman name %s",peer_CN);
Надеюсь, это поможет.