2012-07-29 14 views
13

Estoy firmando un paquete de aplicaciones utilizando un certificado de identificación de desarrollador de Apple. Necesito firmar usando la herramienta de línea de comando ya que nuestra compilación está automatizada y se ejecuta desde nuestra cadena de herramientas. 90% de las veces funciona bien con este comando:Error, "El servicio de indicación de fecha y hora no está disponible". al utilizar codesign en Mac OS X 10.8

ws5:bin nick$ codesign -fs "Developer ID Application: <my name here>" MyApp.app 
ws5:bin nick$ spctl --assess MyApp.app 
ws5:bin nick$ 

Nota: MyApp.app no ​​es mi nombre de la aplicación real, y <my name here> no es el valor real.

Así, tal vez 1 de cada 10 veces que de manera intermitente produce este error:

MyApp.app: The timestamp service is not available. 

He verificado la .app obtiene a través del mecanismo de cuarentena con spctl --assess y por comprimir y descargar el archivo firmado - así que por favor no digas "lo estás haciendo mal, usa Xcode". Sé que Apple no recomienda "oficialmente" usar codesign para certificados de ID de desarrollador (de acuerdo con WWDC video), pero tenemos que usarlo para la automatización y porque nuestra aplicación es una extraña combinación de resultados de compilación de gcc y Qt.

¿Es la mejor estrategia para solucionar este error volver a intentarlo hasta que vuelva a funcionar? Eso es todo lo que puedo hacer.

Respuesta

2

Creo que esto no tiene nada que ver con la forma en que está firmando. Construí mi proyecto muchas veces esta tarde, en Xcode, sin ningún problema. Pero esta noche, mientras viajaba en un autobús sin acceso a internet, traté de construir tres veces y obtuve el mismo error cada vez. Así que cerré mi MacBook Air y ambos dormimos la siesta. Cuando llegué a casa, con la conexión inalámbrica a Internet nuevamente, pude construir de nuevo.

Aparentemente, Xcode no codificará, y por lo tanto no puede construir una aplicación codificada, a menos que pueda llegar a un servidor de tiempo en Internet, o algo así. ¡Muy molesto que el mensaje de error no explique esto! ¿Su acceso a internet es intermitente?

Obviamente, la solución de fuerza bruta para eliminar la fase de construcción de la asignación de signo probablemente lo arreglaría. También encontré un easier workaround, excepto que establecería un recordatorio para recordar volver a activar el interruptor de la marca de tiempo antes de compilar para el envío. De lo contrario, supongo que su producto sin marca de tiempo podría fallar en la revisión de la Mac App Store o en Gatekeeper.

4

Esto es seguido por Apple rdar: // 11785270, una solución alternativa que funciona para mí es ejecutar un proyecto limpio antes de cada compilación.

+0

Bien, es tan fácil como eso. – codingFriend1

6

Este problema parece deberse a problemas de red/firewall. Constantemente recibía este error antes de usar una VPN para llegar a una red menos restrictiva. Me pregunto a qué servidor está intentando acceder esta herramienta de señalización.

Parece que una solución está agregando el indicador --timestamp=none (a "Otros indicadores de firma de código" si está utilizando XCode).

-1

Limpie su proyecto + asegúrese de tener una conexión a Internet activa. Esto solo me ayudó al menos.

7

No puedo recomendar el --timestamp = ninguna solución. Si no marca el tiempo de sus firmas, sus binarios quedarán sin firmar/inválidos cuando expire el certificado. Al menos si marca la fecha y hora de su firma, la verificación se aprobará siempre que el binario se haya firmado mientras el certificado aún era válido. Esto no descarta que el certificado sea revocado, pero debe mantenerlo cubierto en caso de que alguien, posiblemente usted, necesite usar sus copias de archivo algún tiempo después del vencimiento del certificado.

Si no tiene Internet para registrar la fecha y hora de su firma, también puede deshabilitar la firma por completo hasta que su conexión sea una copia de seguridad.

EDITAR: O, suponiendo que su conexión esté activada, pero el servidor predeterminado de la marca de tiempo de Apple está siendo escamosa, puede optar por proporcionar su propio servidor de marca de tiempo válido.

Cuestiones relacionadas