Tengo un certificado autofirmado en el punto final de mi API. Estoy tratando de probar algunas cosas usando el simulador pero obtengo "certificado de servidor no confiable".
Intenté usar safari en el simulador para descargar el archivo .crt, pero parece que no funciona.
¿De dónde obtiene iPhone Simulator 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 CA en el servidor API y NSConnection simplemente funcionó. No pude hacer que funcionara con un certificado autofirmado por alguna razón. Necesito volver a intentarlo usando el software de aprovisionamiento.
Mi pregunta real es ¿cómo hago para que esto funcione en el simulador? Creo que el simulador usa el llavero de la computadora real.
Respuestas:
Solo para información, si alguien aún se encuentra con ese problema:
simplemente arrastre y suelte sus archivos .cer en la ventana del Simulador en ejecución. Verá Safari parpadeando y luego el cuadro de diálogo de importación para su Certificado (o Autoridad de Certificación) ...
Trabajando para iOS 7 Simulator (y creo que también funcionó para iOS 6).
fuente
Para aquellos que encuentran que arrastrar y soltar el 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. Haga esto yendo a:
Vea la respuesta completa aquí :
fuente
Certificate Trust Settings
? Mi perfil se agregó e incluye un certificado; esto solo funcionaba hace menos de un mes. Restablezca las cachés de mi simulador, ahora se agrega el certificado pero no hay opción para confiar plenamente en él.basicConstraints = CA:TRUE
al generar el certificado usando openssl. De lo contrario, no aparecerá para ser confiable.Tuve este mismo problema durante meses y hoy FINALMENTE lo resolví con:
ADVTrustStore
Querrás usar un proyecto llamado ADVTrustStore de github. Hace algo de magia elegante, pero instalará correctamente los certificados en su almacén de confianza 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
Usando este proceso pude hacer que las imágenes de GoogleStreetView se renderizaran correctamente mientras estaba detrás de un firewall corporativo usando SSL renunciando con certificados autofirmados
Antecedentes
Estaba usando CharlesProxy y noté que estaba instalando correctamente los certificados en el Simulador, pero no aparecían en la sección Configuración - Perfiles . Luego, después de buscar, descubrí esta herramienta. Probablemente existan algunas otras herramientas, pero en mi caso, la función de arrastrar y soltar nunca funcionó correctamente en todos los casos. Safari estaría bien, pero no mis aplicaciones.
fuente
Eche un vistazo al script 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:
Parece que instalar su propio certificado en el simulador puede requerir instalarlo en un dispositivo a través de Safari y luego copiar la fila resultante del dispositivo
TrustStore.sqlite3
en la del simulador.fuente
Para cualquiera que use OS X Catalina, verifique esto: https://forums.developer.apple.com/thread/124056 .
Catalina actualmente está bloqueando el acceso a la carpeta Escritorio, Documentos y Descargas. Moví los archivos de certificado a la carpeta compartida y arrastré y solté los archivos al simulador desde allí.
fuente
El uso de iPhone de copia de seguridad Extractor , he copiado de mi iPhone
TrustStore.sqlite3
en~/Library/Application Support/iPhone Simulator/6.0/Library/Keychains
, sobrescribir 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
Nuevamente, los comandos sqlite anteriores no funcionaron para mí, pero podrían ser un buen punto de partida para otra persona. Copiar todo
TrustStore.sqlite3
desde la copia de seguridad en el simulador funcionó bien.fuente
Eche un vistazo a la
iostrust
gema Ruby: http://github.com/yageek/iostrustfuente