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.
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;) –
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. –