Avec Catalina (macOS 10.15), il est fortement recommandé de notariser les applications distribuées sur un réseau public. Un nombre important de développeurs transfèrent leurs applications en utilisant un périphérique de stockage connecté ou via le partage de fichiers, la notarisation n’est pas nécessaire dans ces cas où l’utilisateur fait déjà confiance au développeur. L’objectif de la notarisation est d’assurer aux utilisateurs que l’application n’est pas malveillante et n’est requise que pour les applications téléchargées à partir d’un site web.
Si vous utilisez notre fonction de signature intégrée lorsque vous créez vos applications avec 4D v18, votre application est prête à être notariée. Ce processus s’effectue en dehors de 4D. Il consiste à ajouter une signature électronique à votre demande et à soumettre votre demande signée à un service d’inspection automatisé. Voici tout ce que vous devez savoir :
Conditions préalables
Xcode
La notarisation nécessite Xcode 10 ou une version ultérieure et macOS 10.13.6 ou une version ultérieure.
Si vous avez plus d’une version de Xcode installée sur votre Mac, vous pouvez utiliser l’utilitaire xcode-select pour choisir la version appropriée :
sudo xcode-select -s /path/to/Xcode10.app
Authentification à deux facteurs
Vous devez également avoir activé l’authentification à deux facteurs sur votre identifiant Apple.
Si vous n’êtes pas sûr d’avoir configuré l’authentification à deux facteurs, connectez-vous à la page de votre compte Apple ID. Dans la section Sécurité, recherchez l’option d’authentification à deux facteurs et voyez si la fonction est activée ou non.
mot de passe spécifique à l’application pour altool
Le téléchargement d’une application à des fins de notarisation s’effectue via l’interface de ligne de commande du plug-in de chargement d’applications appelé altool, qui est fourni avec Xcode.
Avant de notariser votre première application, vous devez générer un mot de passe spécifique à l’application pour altool.
Connectez-vous à la page de votre compte Apple ID. Dans la section Sécurité, cliquez sur l’option « Générer un mot de passe » située sous l’option « Mots de passe spécifiques à l’application », saisissez un libellé de mot de passe comme demandé et cliquez sur le bouton « Créer ».
Vous pouvez maintenant stocker le mot de passe en tant qu’élément du trousseau, en utilisant votre Apple ID et le mot de passe spécifique à l’application :
security add-generic-password -a "<apple_id>" -w "<password>" -s "altool"
Signer votre application avec 4D
Dans 4D v18, le script de signature intégré de 4D a été mis à jour pour répondre à toutes les exigences d’Apple en matière de notarisation. 4D effectue désormais une signature récursive de tout le contenu du paquet et un horodatage sécurisé est inclus avec la signature. L’exécution renforcée est activée et un fichier de droits est fourni. Afin d’éviter toute restriction de fonctionnalité, toutes les capacités sont définies sur « true ».
Création d’une archive zip ou d’une image dmg
Comme les paquets .app ne peuvent pas être téléchargés directement vers le service de notariat, vous devez créer une archive compressée contenant votre application signée :
/usr/bin/ditto -c -k --keepParent "<path_to_app>" "<path_to_zip_archive>"
Notez que vous pouvez également télécharger une image .dmg au lieu d’une archive .zip.
Téléchargement de votre demande
Vous pouvez maintenant télécharger votre application pour la notarisation en utilisant la commande suivante :
xcrun altool --notarize-app --primary-bundle-id "<primary_bundle_identifier>" --username "<apple_id>" --password "@keychain:altool" --file path_to_zip_archive
Remarque : vous pouvez utiliser n’importe quel nom comme identifiant primaire de regroupement, mais il ne doit pas contenir d’espaces, de traits de soulignement ou autre chose que des lettres, des chiffres, des traits d’union et des points.
Si le téléchargement réussit, un UID de demande est renvoyé. Conservez-le pour l’utiliser ultérieurement lors de la vérification du statut de votre demande de notarisation.
Vérification de l’état de la demande de notarisation
Le processus de notarisation peut prendre jusqu’à une heure. Lorsqu’il est terminé, vous recevez un courrier électronique indiquant le résultat.
Étant donné qu’Apple a assoupli les conditions préalables à l’authentification jusqu’en janvier 2020, il est conseillé de demander également un rapport détaillé afin de vérifier s’il contient des avertissements susceptibles d’empêcher l’authentification après janvier 2020.
Un rapport détaillé peut être demandé à l’aide de la commande suivante, qui renverra un état et une URL de fichier journal :
xcrun altool --notarization-info <request_uid> -u "<apple_id>" -p "@keychain:altool"
Agrafer le ticket à votre application
Afin de s’assurer que Gatekeeper sait que votre application est notariée (même si aucune connexion réseau n’est disponible au premier lancement de l’application), il est recommandé de joindre le ticket produit par la notarisation à votre application. Ce processus est appelé « agrafage ».
Si vous avez utilisé une archive .zip pour la notarisation, veuillez noter que l’outil d’agrafage doit être exécuté contre le bundle .app ajouté à l’origine à l’archive zip car vous ne pouvez pas agrafer une archive .zip. Si vous avez utilisé une image .dmg, vous pouvez directement agrafer votre image .dmg.
L’agrafage est traité avec la commande suivante :
xcrun stapler staple <your_app_or_dmg_file>
Une fois que tout est dit et fait, vous pouvez alors créer une nouvelle archive .zip contenant l’application agrafée pour la distribution.
Mise à jour de
Les versions récentes de macOS (BigSur/xcode 12) peuvent nécessiter des modifications.
Apple recommande désormais d’enregistrer son mot de passe en utilisant :
xcrun altool --store-password-in-keychain-item "altool" -u "<apple_id>" -p "password"
Et ensuite de ne plus spécifier le nom d’utilisateur (apple_id) en utilisant -u ou –username lors du téléchargement ou de la vérification de l’application.
Pour les dernières mises à jour de xcrun altool, ouvrez votre Terminal et entrez :
xcrun altool --help