licencia - El despliegue de aplicaciones empresariales no funciona en iOS 7.1
ios app development (16)
Distribuimos aplicaciones a través de una cuenta Enterprise, utilizando un itms-services://
URL. Esto siempre ha funcionado bien, pero después de instalar la versión beta de iOS 7.1 en nuestro iPad, se niega a instalar. En su lugar, solo obtenemos el mensaje genérico Cannot connect to example.com
que iOS muestra de forma poco útil cuando hay algún tipo de problema al descargar la aplicación.
No he podido encontrar nada aquí en SO, en Google o en las notas de la versión 7.1 para sugerir qué podría estar causando el problema.
Abra el terminal y ejecute el comando: curl -i https: // (ruta del archivo .ipa no completa)
Esto le dirá si el instalador puede ver el archivo IPA o no. Si ejecuta el comando curl con ''-i'' verá la respuesta completa y probablemente no sea el archivo IPA. Esta es la respuesta que ve el instalador, por lo que si no devuelve HTTP 200 y una IPA, deberá devolverlo en su extremo.
El instalador de ITMS no guarda ningún contexto de Safari. Si se autenticó en un portal seguro en Safari, las cookies de autenticación no se transfieren al instalador. es decir, el instalador debe poder ver la aplicación sin autenticación y esta podría ser la razón por la que está obteniendo el mensaje "No se puede conectar al servidor".
Además de la respuesta de Mark Parnell, una forma rápida y sucia de solucionar esto es colocar el manifiesto en Dropbox y luego usar la interfaz web de Dropbox para obtener un enlace https directo a él (''Compartir enlace'' -> '' Obtener enlace ''->'' Descargar '').
La ipa real puede permanecer desde donde la sirvió. Deberá codificar la URL de la lista de plics antes de insertarla en la consulta de la URL de itms-servivces (aunque la sustitución de cualquier & s con% 3D podría funcionar).
Un inconveniente es que el cuadro de diálogo de instalación ahora mostrará "dl.dropbox.com quiere instalar [lo que sea]".
Además de las respuestas anteriores sobre Dropbox, implementé el siguiente árbol de archivos, ya que solo el archivo PLIST debe cargarse en Dropbox:
- cargue el archivo ipa a su servidor en http (no hay cambios aquí)
- cargue el archivo de aprovisionamiento (.mobileprovision) en su servidor en http (no hay cambios aquí)
- suba el archivo plist a su dropbox (no hay cambios que hacer dentro del archivo plist ya que las URL están en absoluto)
usa la opción "Compartir el enlace con Dropbox" que copia el enlace en tu portapapeles. Este enlace se debe copiar en su archivo html en la consulta de la URL de itms-servivces después de cambiar la parte
dl.dropboxusercontent.com
pordl.dropboxusercontent.com
. Tenga en cuenta que la URL codificó el enlace según lo sugerido por @Mike pero no pruebo sin hacerlo. Ahora la consulta de la URL de itms-services debería tener este aspecto:itms-services://?action=download-manifest&url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2FYourShortDropboxLink.plist
sube el archivo html a tu servidor en http. Tenga en cuenta que el archivo html contiene ambos enlaces a ipa y archivos de aprovisionamiento.
- acceda a su archivo html desde su dispositivo y ahora la ipa puede ser instalada por OTA como de costumbre.
A partir de ahora, solo el archivo ipa debe cambiarse para proporcionar las próximas versiones de aplicaciones por OTA a sus probadores beta. Hasta que Apple todavía está cambiando las reglas de seguridad.
Me uní aquí después del simple archivo HTML que estoy usando:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>iPhone app for test</title>
</head>
<body>
<h1>iPhone app for test</h1>
<br/>
<ul>
<li><a href="http://www.yourdomain.com/with/directories/provision/v.last/yourprovision_adhoc.mobileprovision">
Install Provisioning File</a></li>
<li><a href="itms-services://?action=download-manifest&url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2FYourShortDropboxLink.plist">
Install Application</a></li>
</ul>
</body>
</html>
Apter intentó cambiar itms-services://?action=download-manifest&url=http://....
a itms-services://?action=download-manifest&url=https://....
Tampoco puede funcionar. La alerta cannot connect to my domain
. Me entero de que también necesito actualizar la página web también.
El problema no es que la URL principal sea HTTPS sino parte del código HTML en un enlace dentro de la página. Necesitará que sus desarrolladores actualicen la página web. También me di cuenta de que no hay un certificado SSL válido en su dominio de prueba, por lo que deberá instalar uno o usar Dropbox, y este es el enlace que puede ser útil para usted.
Como alternativa al uso de Dropbox para la distribución empresarial, puede usar TestFlight para la distribución de aplicaciones firmadas por la empresa.
https://www.testflightapp.com/
Este es un servicio fantástico para el alojamiento y la distribución de ambas compilaciones de desarrollo ad-hoc Y compilaciones empresariales.
Después de leer este post, todavía tenía un problema con la descarga de mi aplicación. El problema se debió a un certificado SSL autofirmado.
He encontrado una solución para este problema. Debe cargar su archivo de certificado con la extensión ''.crt'' en la web y escribir su dirección en su safari móvil. El sistema le pregunta si desea agregar su certificado a la lista de certificados de confianza. Después de esta operación, podrá instalar su aplicación ad-hoc.
Encontré el problema conectando el iPad a la computadora y viendo la consola a través del Organizador XCode mientras intentaba instalar la aplicación. El error resulta ser:
No se pudo cargar la URL del manifiesto no https: http://example.com/manifest.plist
Resulta que en iOS 7.1, la URL del archivo manifest.plist
tiene que ser HTTPS, donde estábamos usando HTTP. Cambiar la URL a HTTPS resolvió el problema.
Es decir
itms-services://?action=download-manifest&url=http://example.com/manifest.plist
se convierte en
itms-services://?action=download-manifest&url=https://example.com/manifest.plist
Supongo que debe tener un certificado SSL válido para el dominio en cuestión. Ya lo hicimos, pero me imagino que tendrás problemas sin él.
Es cierto, en el futuro se espera que realice todas las implementaciones de OTA a través de https en adelante con iOS7.1. Vergüenza en Apple por no documentar esto.
Para aquellos de ustedes que buscan una mejor solución interna que confiar en Dropbox o tener que desembolsar efectivo para obtener un certificado, puede tener una solución si sigue los pasos descritos en la sugerencia n.º 5 aquí: http://blog.httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/
La esencia de esto es esto:
- Cree su propio certificado de CA Authority que puede instalar en el dispositivo que es completamente confiable (lo instalé simplemente enviándolo por correo electrónico)
- Cree el par clave / cer contra el certificado raíz e instálelo en su servidor
- Asegúrese de que su servidor web utilice el par clave / certificado que coincida con el certificado raíz de CA Authority
- En este punto, debería poder instalar sus aplicaciones como de costumbre a través de https
- Todo esto se puede lograr en OSX usando openssl que ya está instalado por defecto
Esto no es lo mismo que hacer un certificado autofirmado, en esta solución usted también actúa como su propia Autoridad de Certificación privada. Si su certificado raíz que está instalado en su dispositivo Apple no está marcado como De confianza (verde), entonces algo está mal. Hazlo de nuevo.
Esto funciona absolutamente.
Actualización: 13/03/2014 - He proporcionado una pequeña utilidad de línea de comandos que simplifica todo este proceso. Puede obtenerlo en: https://github.com/deckarep/EasyCert/releases
La solución universal es conectar su dispositivo a Mac y observar lo que sucede durante la instalación. Tengo un error:
No se pudo cargar el manifiesto de descarga con error subyacente: Dominio de error = NSURLErrorDomain Code = -1202 "No se puede conectar a la Tienda" UserInfo = 0x146635d0 {NSLocalizedDescription = No se puede conectar a la Tienda, NSLocalizedRecoverySuggestion = ¿Desea conectarse al servidor de todos modos? NSLocalizedFailureReason = No se pudo establecer una conexión segura. Por favor, compruebe su configuración de fecha y hora. , NSErrorFailingURLStringKey = https://myserver.com/app/manifest.plist , NSUnderlyingError = 0x14678880 "El certificado para este servidor no es válido. Es posible que se esté conectando a un servidor que pretende ser" myserver.com ", lo que podría poner su información confidencial en riesgo. ", NSURLErrorFailingURLPeerTrustErrorKey =, NSErrorFailingURLKey = https://myserver.com/app/manifest.plist }
Incluso hubo una sugerencia en ese error para verificar la configuración de la fecha. Por alguna razón, la fecha era el 1 de enero de 1970. El ajuste de la fecha correcta resolvió el problema.
Nuestro equipo utiliza Dropbox para la distribución ad-hoc que usa https pero aún así nuestra aplicación no se pudo instalar. Después de muchos problemas, nos dimos cuenta de que el campo de título también es obligatorio. Cada vez que enviamos un enlace sin este campo, el safari ignoró el enlace y no solicitó al usuario que instalara. A veces, para las pruebas de desarrollo rápido, omitimos el nodo de título en el xml y no lo rellenamos. En caso de que esto sea útil para cualquier persona que tenga este problema, asegúrese de que su .plist contenga los siguientes nodos:
....
<string>software</string>
<key>title</key>
<string>Your App Name</string>
...
Puedo confirmar que funciona, pero tienes que poner html AND plist en dropbox. Funciona también para OTA no empresarial, es decir, desea compartir la aplicación con su desarrollador. equipo.
Yo si:
a) en mi sitio hice una página con este enlace:
.. href = "https://dl.dropboxusercontent.com/u//(your DB id) /ipa.html"> MyApp
b) en DropBox escribí otra página HTML:
.. https://dl.dropboxusercontent.com/u/(su ID de la base de datos) /MyApp.plist "> Toque para instalar MyApp
c) movió plist en DropBox pero dejándolo en POINT a mi antiguo servidor (sin https)
Si por casualidad tienes AWS S3, eso también funciona como un encanto. Bien. Hablando relativamente :-)
Cree un grupo para sus anuncios publicitarios en AWS, agregue un archivo de índice (puede ser un archivo index.html en blanco) y luego use un cliente que pueda conectarse a S3 como CyberDuck o Coda (usé Coda, donde seleccionaría Agregar Sitio para obtener una ventana de conexión) luego configure las conexiones como la adjunta:
Luego construya su empresa ad hoc en XCode y asegúrese de usar https://s3.amazonaws.com/your-bucket-name/your-ad-hoc-folder/your-app.ipa como la URL de la aplicación, y cárguela a su nuevo directorio de cubo S3.
Su enlace de itms debe coincidir, es decir, itms-services: //? Action = download-manifest & url = https://s3.amazonaws.com/your-bucket-name/your-ad-hoc-folder/your-app.plist
Y voilá.
Esto es solo para las URL genéricas de AWS. No he probado con las URL personalizadas en AWS, por lo que es posible que tenga que hacer algunas cosas de manera diferente.
Estaba decidido a intentar que la solución de James Webster funcionara, pero no pude hacer que funcionara con Plesk.
Tuve el mismo problema y aunque ya estaba usando un servidor SSL, simplemente cambiando los enlaces a https no funcionaba porque había un problema subyacente.
Ese poco resaltado me dijo que se nos debería dar la opción de confiar en el certificado, pero como esta es la tienda de aplicaciones, trabajando en Safari, la sugerencia de recuperación simplemente no se presenta.
No estaba contento con las soluciones existentes porque:
- Algunas opciones requieren la dependencia de un tercero (Dropbox)
- No estábamos dispuestos a pagar por un certificado SSL
- Los certificados SSL gratuitos son solo una solución temporal.
Finalmente encontré una solución al crear una Autoridad de certificado raíz autofirmada y al generar el certificado SSL de nuestro servidor con esto.
Usé Keychain Access y OSX Server, pero hay otras soluciones válidas para cada paso.
Creación de una Autoridad de Certificación
De lo que he recopilado, las autoridades de certificación se utilizan para verificar que los certificados son auténticos. Ya que estamos a punto de crear uno, no es exactamente seguro , pero significa que puede confiar en todos los certificados de una autoridad determinada. Por lo general, se incluye una lista de estas autoridades de forma predeterminada en sus navegadores, ya que realmente son de confianza. (GeoTrust Global CA, Verisign, etc.)
- Abra Llavero y use el asistente de certificados para crear una autoridad
- Complete la información de su autoridad de certificación
- No sé si es necesario, pero confié en la autoridad.
Generando una solicitud de firma de certificado
En nuestro caso, las solicitudes de firma de certificado son generadas por el administrador del servidor. Simplemente es un archivo que pregunta "¿Puedo tener un certificado con esta información para mi sitio, por favor?".
- A continuación, tendrá que crear su solicitud de firma de certificado (usé el administrador de certificados de OSX Server para este bit)
- Complete la información de su certificado (debe contener solo caracteres ASCII, gracias @Jasper Blues)
- Guarda el CSR generado en algún lugar
Creando el Certificado
Actuando como la autoridad de certificación nuevamente, depende de usted decidir si la persona que le envió el CSR es genuina y no pretende ser otra persona. Las verdaderas autoridades tienen sus propias formas de hacer esto, pero como esperamos que estés bastante seguro de que lo eres, tu verificación debería ser bastante segura :)
- Vuelva a Acceso a Llaves y abra la opción "Crear un certificado ..." como se muestra
- Arrastre en su CSR guardado al cuadro indicado
- Haga clic en "Permitir anular los valores predeterminados para este botón de solicitud"
- Me gusta aumentar el período de validez.
- Por alguna razón, tenemos que completar alguna información de nuevo
- Haga clic en continuar en esta pantalla.
- ASEGÚRESE DE HACER CLIC EN LA AUTENTICACIÓN DEL SERVIDOR SSL , esta me causó algunos dolores de cabeza.
Puede hacer clic en continuar a través del resto de las opciones.
La aplicación Mail se abrirá y le dará la oportunidad de enviar el certificado. En lugar de enviar por correo electrónico, haga clic derecho y guárdelo.
Instalando el certificado
Ahora necesitamos configurar el servidor para usar el certificado que acabamos de crear para su tráfico SSL.
- Si el dispositivo en el que está trabajando es su servidor, es posible que el certificado ya esté instalado.
- Si no es así, haga doble clic en el certificado pendiente y arrastre el archivo PEM que acabamos de guardar desde el correo electrónico al espacio indicado. (Alternativamente, puede exportar su PEM desde el llavero si no lo guardó).
- Actualice su servidor para utilizar este nuevo certificado. Si encuentra que el nuevo certificado no se "pegará" y continúa revirtiéndose, vuelva al bit en BOLD ITALIC CAPS
Configuración de dispositivos
Cada dispositivo en el que necesite instalar aplicaciones necesitará tener una copia de esta autoridad de certificación para que sepan que pueden confiar en los certificados SSL de esa autoridad.
- Regrese a Keychain Access y exporte su certificado como un .cer
- Luego coloco este archivo en mi servidor con mis aplicaciones OTA, los usuarios pueden hacer clic en este enlace y descargar el certificado de autoridad. Enviar el certificado directamente a los usuarios también es una opción válida.
- Instala el certificado en tu dispositivo.
Prueba
Asegúrese de que sus enlaces de plist son https
- Intenta e instala una aplicación! Ahora debería funcionar. La autoridad de certificación es de confianza y el certificado SSL provino de esa autoridad.
Tuve los mismos problemas e hice como se mencionó anteriormente.
- Ponga el plist en dropbox.
- Sobre el botón de descargar archivo, debajo de una imagen del documento con el botón derecho del mouse, seleccione la acción de enlace de copia. Este enlace ya es algo así como https://dl.dropboxusercontent.com/s/xyz123/app.plist?stuff=stuff con muchos parámetros.
- Eliminar los parámetros (solo se mantuvo la dirección entre https y .plist)
- Busque la codificación url en línea, seleccione uno de esos enlaces, copie, pegue, ejecute, luego el texto resultante copiado y pegado en el html donde tengo el enlace itms-services. Por cierto, tengo este html en dos ubicaciones diferentes, una de ellas es donde se encuentra la ipa.
- Asegúrese de que la lista incluya referencias absolutas al archivo ipa.
Ambas páginas funcionaron correctamente para instalar la aplicación en iphones con iOS 7.1
Pero ahora, iphones con ios 7.0x no puede instalar la aplicación.
Creé una nueva pregunta: la implementación de aplicaciones adhoc actualizadas no funciona en ios anterior a 7.1
Ambas cuestiones están estrechamente relacionadas y también vinculadas por la falta de referencias oficiales.
Un buen tipo manejó el problema usando el certificado de clase 1 StartSSL y la configuración compartida de Apache que agrega soporte de certificado (funcionará con cualquier certificado) y código para cambiar los enlaces en los archivos * .plist existentes de forma automática. Demasiado tiempo para copiar, así que aquí está el enlace: http://cases.azoft.com/how-to-fix-certificate-is-not-valid-error-on-ios-7/
ingconti tiene razón.
- Sube tu app.plist a dropbox.
- Obtenga un enlace compartido de app.plist, como https://www.dropbox.com/s/qgknrfngaxazm38/app.plist
- reemplace
dl.dropboxusercontent.com
condl.dropboxusercontent.com
en el enlace, como https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist - Elimine todos los parámetros en el enlace de Dropbox que se puede compartir, como "? Dl = 0t" (según Carlos Aguirre Tradeco, la implementación de la aplicación Enterprise no funciona en iOS 7.1 y mi propia experiencia).
- Cree un archivo
download.html
con un enlace formateado como<a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist">INSTALL!!</a>
- Sube tu
download.html
a dropbox - Nuevamente, obtenga un enlace compartido de download.html, como https://www.dropbox.com/s/gnoctp7n9g0l3hx/download.html , y elimine todos los parámetros.
- Reemplace
dl.dropboxusercontent.com
condl.dropboxusercontent.com
en el segundo enlace, como https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html
Ahora, visite https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html
en su dispositivo, puede instalar la aplicación como antes.
¡QUÉ MUNDO TAN MARAVILLOSO!