Le Problème

Si ce message vous parle, alors vous êtes au bon endroit :

Notarization required
“Nuxeo Drive” can’t be opened because Apple cannot check it for malicious software.
This software needs to be updated. Contact the developer for more information.

This item is on the disk image “nuxeo-drive-4.4.2.112.dmg”. Firefox downloaded this disk image today at 17:31 from community.nuxeo.com.

Un fix crade, mais qui fonctionnera tout de suite :

$ xattr -d com.apple.quarantine "/Applications/Nuxeo Drive.app"

Sinon, voici comment notariser votre application.


Étapes

Pour mettre en place un environnement minimal pour la notarisation d'un fichier, il faudra :

Il peut-être intéressant d'avoir jeté un œil à ces articles :


Signature de Code

Apple demande à ce que la signature de code soit plus stricte, il faudra donc utiliser ces nouveaux arguments à tous vos appels à codesign :

# hardened runtime and secure timestamp
$ codesign --options runtime --timestamp --sign "${SINGIN_ID}" ...

Notarisation

Téléchargez le script notarize.py, il fera tout le travail.
Avant de le lancer, il faudra déclarer ces variables d'environnement :

  • BUNDLE_IDENTIFIER : le bundle ID de votre application ;
  • NOTARIZATION_USERNAME : l'adresse email du compte developpeur Apple ;
  • NOTARIZATION_PASSWORD : le mot de passe créé en amont spécifiquement pour la notarisation.

Enfin, l'utilisation du script est simple :

$ python notarize.py FILE [NOTARIZATION_UUID]

Si, pour une raison ou pour une autre, vous souhaitez reprendre la notarization d'un fichier, passez NOTARIZATION_UUID en argument. Où NOTARIZATION_UUID est un identifiant unique renvoyé par Apple et affiché pendant l'exécution du script.

Exemple de sortie :

>>> [notarization] Uploading 'dist/nuxeo-drive-4.4.2.dmg'
    (it may take a while)
>>> [notarization] Waiting status for '808ecc8a-8493-4843-992f-cd2d04118321'
    (it may take a while)
    (new check in 30 seconds ... )
    (new check in 30 seconds ... )
    (new check in 30 seconds ... )
    (new check in 30 seconds ... )
    (new check in 30 seconds ... )
    (new check in 30 seconds ... )
>>> Downloading the report to report-808ecc8a-8493-4843-992f-cd2d04118321.json
>>> [notarization] Done with success ᕦ(ò_óˇ)ᕤ

Si la notarization s'est bien passée, un fichier JSON de ce type sera renvoyé : notarization-accepted.json (donné à titre d'exemple). Sinon, ça sera un autre fichier JSON contenant le détail des erreurs (exemple : notarization-failed.json).

En cas d'erreur non liée au contenu à notariser, le script affichera le contenu complet de celle-ci afin d'aider à déboguer (typiquement, il s'agit de formulaires à accepter en ligne sur le compte Apple ou le renouvellement de celui-ci) :

Package Summary:
 
1 package(s) were not uploaded because they had problems:
        /var/folders/.../.../.../UID/Untitled.itmsp - Error Messages:
                You must first sign the relevant contracts online. (1048)
altool[46630:2764989] *** Error: You must first sign the relevant contracts online. (1048)

Source : (NXDRIVE-2041) Notarize the application