program generate developer crear certificado certificacion apple ios openssl rsa pkcs#12

ios - generate - Cómo hacer que un archivo p12 válido sea importado correctamente por SecPKCS12Import



https developer apple com account ios certificate (1)

He resuelto mi problema anterior de convertir la clave privada XML RSA al archivo PEM, pero me encuentro con otro problema al obtener datos nulos al importar la clave privada P12. Lo que sigue son mis pasos:

  1. Convertir archivo PEM a P12

    openssl> pkcs12 -export -in rsa.pem -inkey rsa.pem -out rsa.p12 -nocerts

  2. Leer el archivo P12 en el proyecto de iOS

    NSString *path = [[NSBundle bundleForClass:[self class]] pathForResource:@"MyPrivateKey" ofType:@"p12"]; NSData *p12data = [NSData dataWithContentsOfFile:path]; if (![self getPrivateKeyRef]) RSAPrivateKey = getPrivateKeywithRawKey(p12data);

  3. Importar clave privada P12

    SecKeyRef getPrivateKeywithRawKey(NSData *pfxkeydata) { NSMutableDictionary * options = [[[NSMutableDictionary alloc] init] autorelease]; // Set the public key query dictionary //change to your .pfx password here [options setObject:@"MyPassword" forKey:(id)kSecImportExportPassphrase]; CFArrayRef items = CFArrayCreate(NULL, 0, 0, NULL); OSStatus securityError = SecPKCS12Import((CFDataRef) pfxkeydata, (CFDictionaryRef)options, &items); CFDictionaryRef identityDict = CFArrayGetValueAtIndex(items, 0); SecIdentityRef identityApp = (SecIdentityRef)CFDictionaryGetValue(identityDict, kSecImportItemIdentity); //NSLog(@"%@", securityError); assert(securityError == noErr); SecKeyRef privateKeyRef; SecIdentityCopyPrivateKey(identityApp, &privateKeyRef); return privateKeyRef; }

Pensé que no había errores (el valor OSStatus es 0), pero la matriz de elementos no obtuvo ningún dato de identidad. Me pregunto si no obtuve el formato de archivo p12 correcto debido al uso incorrecto de OpenSSl. ¿Alguien ha importado con éxito el archivo p12? Me he quedado atrapado en este problema por un par de días, por favor dame consejos si tienes pistas, ¡gracias!

Hubert


Recibí algunos consejos de Internet, y los siguientes son los pasos para obtener la clave p12 y el archivo de certificación de iOS aceptables:

  1. convertir XML a PEM
    Shell> compile XMLSpec2PEM.java
    Shell> XMLSpec2PEM rsa.xml
    guarde el resultado de salida en rsa.pem
    (tome prestado de aquí )

  2. convertir PEM a clave privada RSA
    OpenSSL> rsa -in rsa.pem -out rsaPrivate.key

  3. Generar una solicitud de certificación
    OpenSSL> req -new -key rsaPrivate.key -out rsaCertReq.crt
    (ingrese algunos datos de certificación básicos)

  4. Firmar la certificación de la solicitud
    OpenSSL> x509 -req -days 3650 -en rsaCertReq.crt -signkey rsaPrivate.key -out rsaCert.crt

  5. Convierta el formato de archivo de certificación a DER (formato aceptable de iOS)
    OpenSSL> x509 -outform der -in rsaCert.crt -out rsaCert.der

  6. Generar clave privada PKCS12 (formato aceptable iOS)
    OpenSSL> pkcs12 -export -out rsaPrivate.pfx -inkey rsaPrivate.key -in rsaCert.crt

¡No más pasos, los archivos generados en el paso 5 y 6 ahora se pueden usar en iOS!

referencia de las instrucciones de OpenSSL:
http://blogs.yaclife.com/?tag=ios%E3%80%80seckeyref%E3%80%80raw%E3%80%80key%E3%80%80rsa%E3%80%803des

http://devsec.org/info/ssl-cert.html