2017-03-06 2 views
2

Je me bats avec cela depuis un certain temps et serais extrêmement reconnaissant si quelqu'un pouvait m'aider à comprendre ce qui se passe ici.Comment signer DMG et installer pour OSX

J'ai un projet install4j qui crée des paquets d'installation pour Windows et OSX. J'ai un cert de signature régulier pour Windows et cela fonctionne sans problème. J'ai aussi un certificat de développeur Apple. J'ai exporté la clé privée de mon trousseau vers un fichier p12. J'ai testé le fichier p12 résultant pour m'assurer qu'il fonctionne avec le mot de passe keystore. Le certificat est définitivement valide, puisque je viens de le créer (encore) aujourd'hui. Et, quand je lance le programme d'installation de construction via Maven, il semble même que si tout va bien:

[INFO] Compressed media file 'Mac OS X Single Bundle': 
[INFO] Compressing files 
[INFO] Generating VM options file vmoptions.txt. 
[INFO] Signing installer 
[INFO] Signing DMG 
[INFO] Moving media files to media directory /Users/.... 
[INFO] The name of the media file is my-app_macos_1_1_1.dmg. 
[INFO] The size of the media file is 4.8 MB 

Ce qui semble bien, sauf que l'installateur et DMG ne sont pas signés, ou du moins pas de manière qui est utile:

$ spctl -a -v target/media/my-app_macos_1_1_1.dmg 
target/media/my-app_macos_1_1_1.dmg: CSSMERR_TP_CERT_EXPIRED 
$ spctl -a -v /Volumes/my-app/My\ Application\ Installer.app 
/Volumes/my-app/My Application Installer.app: CSSMERR_TP_CERT_EXPIRED 

le Cert est pas expiré:

Alias name: mac developer: me myself (my company, inc.) 
Creation date: Mar 6, 2017 
Entry type: PrivateKeyEntry 
Certificate chain length: 1 
Certificate[1]: 
Owner: C=US, O="Radiologics, Inc.", OU=K865L34KBQ, CN=Mac Developer: Me Myself (XXXX), UID=YYYY 
Issuer: CN=Apple Worldwide Developer Relations Certification Authority, OU=Apple Worldwide Developer Relations, O=Apple Inc., C=US 
Serial number: 30544da25ea67233 
Valid from: Mon Mar 06 14:46:17 CST 2017 until: Tue Mar 06 14:46:17 CST 2018 

Mais si je construis le DMG/installateur directement à partir install4j ou par le biais du plugin Maven, le résultat est pas valide. Je reçois toujours quelque chose de similaire à ceci:

$ codesign -dvvv target/media/my-app_macos_1_1_0.dmg 
Executable=.../target/media/my-app_macos_1_1_0.dmg 
Identifier=my-app_macos_1_1_0 
Format=disk image 
CodeDirectory v=20100 size=173 flags=0x0(none) hashes=1+2 location=embedded 
Hash type=sha256 size=32 
CandidateCDHash sha256=XXXXXX 
Hash choices=sha256 
CDHash=XXXXX 
Signature size=8641 
Authority=(unavailable) 
Info.plist=not bound 
TeamIdentifier=not set 
Sealed Resources=none 
Internal requirements count=1 size=36 

Pour que nous puissions distribuer cette application, nous avons vraiment besoin d'obtenir ce travail, mais j'ai passé littéralement jours sur cela sans faire aucun progrès tout. Si quelqu'un pouvait faire la lumière sur ce qui se passe ici, je l'apprécierais grandement.

Répondre

5

Il existe deux types de certificats différents pour distribuer des applications en dehors du Mac App Store.

Un certificat d'application et un certificat d'installation. Vérifiez vos certificats (que vous pouvez faire via "Mes certificats" dans l'application Keychain Access se cachant dans/Application/Utilities) pour vous assurer que vous utilisez un certificat d'installateur (sur ma machine le nom est " développeur ID Installer: Michael Dautermann «Il est distinct du" développeur ID de l'application peut » certificat que vous utilisez pour des applications codesign

Plus d'informations can be seen here

Quant à DMG de, ma réponse originale aurait été. ». t faire cela ", mais en fait, à partir de MacOS 10.11.5 vous CAN signer des fichiers dmg.Plus d'informations peuvent être vus dans le "Signing Disk Images" section du guide de référence "macOS code signing in depth". Vous utiliseriez votre certificat d'application Developer ID.

+0

Merci beaucoup pour votre aide! Je suis habitué à simplement tout signer avec un seul certificat de signature Java standard, donc l'idée d'avoir plusieurs certificats à des fins différentes est très ... Apple :) La seule chose que je devais faire différemment était que, lorsque j'utilisais le certificat d'installateur, j'ai reçu une erreur avec le message "install4j: compilation échouée Raison: com.install4j.cg: aucune clé d'application ID de développeur trouvée dans le fichier PKCS12". Je suis passé au certificat "Developer ID Application" exporté et cela a fonctionné. Je ne sais pas de quoi il s'agit, mais mon installateur fonctionne donc je m'en fous;) –

+0

Cela a fonctionné parce que les images de disque ne doivent être signées qu'avec l'identité de votre application d'identification de développeur. –