2012-07-29 1 views
13

Ich unterzeichne ein App-Bundle mit einem Apple Developer ID-Zertifikat. Ich muss unter Verwendung des Befehlszeilenwerkzeugs unterzeichnen, da unser Aufbau automatisiert ist und von unserer Werkzeugkette läuft. 90% der Zeit, funktioniert es mit diesem Befehl fein:Fehler, "Der Zeitstempel-Dienst ist nicht verfügbar." Bei der Verwendung von Codesign unter 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$ 

Hinweis: MyApp.app ist nicht mein richtiger Name der Anwendung, und <my name here> ist nicht der tatsächliche Wert.

Also, vielleicht 1 in 10mal es nicht intermittierend mit diesem Fehler:

MyApp.app: The timestamp service is not available. 

Ich habe überprüfte die .app durch den Quarantänemechanismus wird mit spctl --assess und durch sie zu zippen und die signierte Datei herunterzuladen - also sag bitte nicht "Du machst das falsch, benutze Xcode". Ich weiß, dass Apple "offiziell" nicht empfiehlt, codesign für Entwickler-ID-Zertifikate zu verwenden (nach einer WWDC video), aber wir müssen es für die Automatisierung verwenden und weil unsere App eine seltsame Kombination aus gcc und Qt Build-Ausgabe ist.

Ist die beste Strategie um diesen Fehler zu wiederholen, bis es wieder funktioniert? Das ist alles, woran ich denken kann.

Antwort

2

Ich denke, das hat nichts mit der Art, wie Sie unterschreiben, zu tun. Ich habe mein Projekt heute Nachmittag viele Male in Xcode gebaut, ohne solche Probleme. Aber heute Abend, während ich in einem Bus ohne Internetzugang fuhr, versuchte ich dreimal zu bauen und bekam jedes Mal denselben Fehler. Also habe ich mein MacBook Air geschlossen und wir haben beide ein Nickerchen gemacht. Als ich zu Hause ankam, mit kabellosem Internet, konnte ich wieder aufbauen.

Also wird Xcode anscheinend nicht mit dem Code arbeiten und daher keine Code-signierte App erstellen, es sei denn, es kann einen Zeitserver im Internet oder etwas Ähnliches erreichen. Ziemlich nervig, dass die Fehlermeldung das nicht erklärt! Ist Ihr Internetzugang zeitweise?

Offensichtlich würde die Brute-Force-Problemumgehung des Entfernens der Codeigning-Build-Phase es wahrscheinlich beheben. Ich fand auch eine easier workaround, außer dass ich eine Erinnerung daran erinnern würde, diesen Zeitstempelschalter wieder einzuschalten, bevor er zum Versand gebaut wurde. Andernfalls nehme ich an, dass Ihr nicht zeitgestempeltes Produkt möglicherweise die Prüfung im Mac App Store oder Gatekeeper nicht besteht.

4

Dies wird von Apple rdar: // 11785270 verfolgt, eine Workaround, die für mich funktioniert, ist ein Projekt sauber vor jedem Build auszuführen.

+0

Richtig, so einfach ist das. – codingFriend1

6

Dieses Problem scheint von Netzwerk-/Firewall-Problemen zu entstehen. Ich habe diesen Fehler immer erhalten, bevor ich ein VPN nutze, um ein weniger restriktives Netzwerk zu erreichen. Ich frage mich, auf welchen Server dieses Tool zugreifen möchte.

Eine Problemumgehung scheint das Flag --timestamp=none hinzuzufügen (zu "Andere Code Signing Flags", wenn Sie XCode verwenden).

-1

Reinigen Sie Ihr Projekt + stellen Sie sicher, dass Sie eine aktive Internetverbindung haben. Das hat mir zumindest geholfen.

7

Ich kann die Workstation --timestamp = none nicht empfehlen. Wenn Sie Ihre Signaturen nicht mit Zeitstempel versehen, werden Ihre Binärdateien vor dem Ablauf des Zertifikats nicht signiert/ungültig. Zumindest wenn Sie Ihre Signatur mit einem Zeitstempel versehen, wird die Verifizierung so lange bestehen, wie die Binärdatei signiert wurde, während das Zertifikat noch gültig war. Dies wird nicht das Zertifikat widerrufen, das tatsächlich widerrufen wird, aber sollte Sie abgedeckt halten, falls jemand, möglicherweise Sie, Ihre Archivkopien einige Zeit nach Ablauf des Zertifikats verwenden muss.

Wenn Sie nicht über das Internet verfügen, um Ihre Signatur mit einem Zeitstempel zu versehen, können Sie die Signierung auch vollständig deaktivieren, bis die Verbindung wieder hergestellt ist.

EDIT: Oder, angenommen, dass Ihre Verbindung besteht, aber Apple Standard-Zeitstempel-Server flockig ist, könnten Sie sich entscheiden, Ihren eigenen gültigen Zeitstempel-Server zu liefern.

Verwandte Themen