J'utilise un produit appelé install4j pour créer les fichiers DMG de mon application. Il signe correctement l'application dans le fichier DMG et peut le faire à partir d'un système d'exploitation autre que macOS.
Attention cependant :install4j n'est pas un logiciel gratuit, et est en fait assez cher.
Vous pouvez contourner ce problème en signant uniquement le JavaApplicationStub et info.plist de votre application et en excluant le dossier "Ressources" de la signature. Ensuite, vous devrez modifier votre processus de génération pour utiliser le conteneur pré-signé. Bien sûr ce n'est pas le sens du codesigning mais ça marchera;-)
Pour y parvenir, procédez comme suit :
- créez votre .app comme d'habitude
- déplacez-le sur votre mac
- créez un fichier "ResourceRules.plist" avec le contenu suivant :
ResourceRules.plist :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>rules</key>
<dict>
<key>^Resources/</key>
<false/>
<key>^version.plist$</key>
<true/>
</dict>
</dict>
</plist>
-
signez maintenant avec les commandes suivantes :CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"codesign -s "Nom du certificat" --resource-rules ResourceRules.plist -fv MyApp.app
-
Ensuite, supprimez tout dans Resource et vérifiez la signature (codesign -v -v MyApp.app). Vous verrez qu'il est toujours valide
-
Utilisez le talon signé complet dans votre processus de génération. Vous pouvez tout modifier dans les ressources, mais vous ne pouvez pas modifier info.plist.
Il n'existe aucun moyen documenté de signature de code d'une application Mac OS X sous Linux.
Le seul moyen que j'ai trouvé pour le faire jusqu'à présent est de se connecter en SSH à un Mac et de l'utiliser.
D'autre part, selon @Steve McLeod (https://stackoverflow.com/a/55906962/28190), le package d'installation install4j offre ceci :
Signature de code intégrée sur Windows et Mac OS X . Dans la section "Paramètres généraux", install4j dispose désormais d'un onglet "Signature de code" où vous pouvez configurer les certificats de signature de code pour Windows et Mac OS X. La conception codée sera appliquée à tous les lanceurs et applications d'installation dans les fichiers multimédias correspondants. Les implémentations pour la signature de code sont multiplateformes, vous pouvez donc signer des fichiers multimédias Windows et Mac OS X à partir d'un serveur de build Linux, par exemple.
Cela doit donc être techniquement possible.