perfiles - ¿Agregar un certificado autofirmado a iphone simulator?
trust store ios (6)
Tengo un certificado autofirmado en el punto final de mi API. Estoy intentando probar algunas cosas con el simulador, pero obtengo un "certificado de servidor que no es de confianza".
Intenté utilizar Safari en el simulador para descargar el archivo .crt, pero parece que no funciona.
¿De dónde obtiene el simulador de iPhone su llavero? ¿Cómo puedo agregar un certificado de confianza para que mi aplicación funcione?
ACTUALIZAR
Lo hice funcionar creando una CA y luego agregando un certificado de CA usando la herramienta de aprovisionamiento de iPhone. Luego pude tener un certificado firmado por ese certificado de CA en el servidor de API y la NSConnection acaba de funcionar. No pude hacer que funcione con un certificado autofirmado por algún motivo. Necesito volver a intentar esto usando el software de aprovisionamiento.
Mi verdadera pregunta es ¿cómo hago para que funcione en el simulador? Creo que el simulador utiliza el llavero de la computadora real.
Eche un vistazo a la gema de Ruby iostrust
: http://github.com/yageek/iostrust
Eche un vistazo al guión de shell que Charles usa para instalar su certificado autofirmado en el llavero del simulador. http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/
Ver también:
- certificados de CA de TrustSphere de iPhone
- http://redgreenrefactor.eu/blog/testing-https-on-iphone-simulator/
Parece que instalar tu propio certificado en el simulador puede requerir instalarlo en un dispositivo a través de Safari y luego copiar la fila resultante del TrustStore.sqlite3
del dispositivo en el simulador.
Para aquellos que consideran que el arrastre y la caída del certificado en el simulador no funciona, hubo un cambio reciente que agrega un paso adicional .
Se debe indicar explícitamente al simulador que confíe en la CA raíz. Haz esto yendo a:
General -> Acerca de -> Configuración de confianza del certificado -> "Habilitar la confianza completa para el certificado raíz" para su certificado particular
Vea la respuesta completa aquí :
Solo por información, si alguien todavía se encuentra con ese problema:
simplemente arrastre y suelte sus archivos .cer en la ventana de ejecución de Simulator. Verás que Safari parpadea y luego aparece el cuadro de diálogo de importación para tu Certificado (o Autoridad de certificación) ...
Trabajando para iOS 7 Simulator (y creo que funcionó para iOS 6 también).
Tuve este mismo problema por meses y hoy FINALMENTE lo resolví con:
ADVTrustStore
ADVTrustStore que utilizar un proyecto llamado ADVTrustStore de github. Hace algo de magia extravagante, pero instalará certificados correctamente en su tienda de confianza de la raíz en el simulador.
Pasos para instalar un certificado personalizado
# Clone the repo
git clone https://github.com/ADVTOOLS/ADVTrustStore.git
# Enter the repo directory
cd ADVTrustStore/
# Copy your .crt file
cp somewhere/something.crt my.crt
# conver to a .pem file
openssl x509 -in my.crt -out my.pem -outform PEM
# Install the pem in the simulators
./iosCertTrustManager.py -a my.pem
Con este proceso, pude obtener imágenes de GoogleStreetView para que se procesaran correctamente mientras estaba detrás de un firewall corporativo usando SSL renunciando con certificados autofirmados
Fondo
Estaba usando CharlesProxy y noté que estaba instalando certificados correctamente en el simulador, pero no aparecieron en la sección Configuración - Perfiles . Luego, después de buscar, descubrí esta herramienta. Probablemente existan algunas otras herramientas, pero en mi caso el arrastrar y soltar nunca funcionó correctamente para todos los casos. Safari estaría bien, pero no mis aplicaciones.
Utilizando iPhone Backup Extractor , copié el TrustStore.sqlite3
mi iPhone en ~/Library/Application Support/iPhone Simulator/6.0/Library/Keychains
, sobrescribiendo el archivo existente. Intenté insertar solo una fila con el siguiente sqlite, pero no pude hacerlo funcionar.
sqlite3 ~/backup/iOS/ Files/TrustStore.sqlite3
sqlite3>.mode insert
sqlite3>.output working.sql
sqlite3>select * from tsettings;
sqlite3>.quit
Ahora, working.sql
tiene todo el contenido de la tabla tsettings (en mi caso, 1 fila).
sqlite3 ~/Library/Application/ Support/iPhone/ Simulator/6.0/Library/Keychains/TrustStore.sqlite3
sqlite3>INSERT INTO tsettings VALUES(X''...
sqlite3>.quit
Una vez más, los comandos sqlite anteriores no me funcionaron, pero podría ser un buen punto de partida para otra persona. Copiando todo TrustStore.sqlite3
de la copia de seguridad en el simulador funcionó bien.