General:
Forums topic: Code Signing
Forums subtopic: Code Signing > Notarization
Forums tag: Notarization
WWDC 2018 Session 702 Your Apps and the Future of macOS Security
WWDC 2019 Session 703 All About Notarization
WWDC 2021 Session 10261 Faster and simpler notarization for Mac apps
WWDC 2022 Session 10109 What’s new in notarization for Mac apps — Amongst other things, this introduced the Notary REST API
Notarizing macOS Software Before Distribution documentation
Customizing the Notarization Workflow documentation
Resolving Common Notarization Issues documentation
Notary REST API documentation
TN3147 Migrating to the latest notarization tool technote
Fetching the Notary Log forums post
Q&A with the Mac notary service team Developer > News post
Apple notary service update Developer > News post
Notarisation and the macOS 10.9 SDK forums post
Testing a Notarised Product forums post
Notarisation Fundamentals forums post
The Pros and Cons of Stapling forums post
Resolving Error 65 When Stapling forums post
Many notarisation issues are actually code signing or trusted execution issue. For more on those topics, see Code Signing Resources and Trusted Execution Resources.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
Notarization
RSS for tagNotarization is the process of scanning Developer ID-signed software for malicious components before distribution outside of the Mac App Store.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
The problem is the following:
We create a keychain item called NotaryTool (There are multiple accounts that use Notary tool and we created it for all of them )
This is created in the following way:
$ xcrun notarytool store-credentials
This process stores your credentials securely in the Keychain. You reference these credentials later using a profile name.
Profile name:
NotaryTool
We recommend using App Store Connect API keys for authentication. If you'd like to authenticate with an Apple ID and app-specific password instead, leave this unspecified.
Path to App Store Connect API private key:
//AuthKey_ABCDEFGH.p8
App Store Connect API Key ID:
<ABCDEFGH>
App Store Connect API Issuer ID:
ABCDEF-ABCD-1234-1234-1234567
Validating your credentials...
Success. Credentials validated.
Credentials saved to Keychain.
To use them, specify `--keychain-profile "NotaryTool"`
The key is downloaded from Apple and some other IDs are provided alongside.
These should remain in the keychain for as long as the user process is running (just like any other process)
A few runs are successful when we run with the profile that was created.
After a few runs we start seeing a failure.
Now we are seeing the following issue where the keychain item just vanishes:
Error: No Keychain password item found for profile: NotaryTool\n\nRun 'notarytool store-credentials' to create another credential profile.\nError during the not process\nTue Aug 26 06:02:09 2025 Notarization failed with notarytool with exit code 17664: \nTue Aug 26 06:02:09 2025 could not upload for notarization!!!
Topic:
Code Signing
SubTopic:
Notarization
I've tried to notarize my app recently and got the error:{
"logFormatVersion": 1,
"jobId": "...",
"status": "Rejected",
"statusSummary": "Team is not yet configured for notarization",
"statusCode": 7000,
"archiveFilename": "myapp.dmg",
"uploadDate": "2019-06-20T06:24:53Z",
"sha256": "...",
"ticketContents": null,
"issues": null
}I've never heard about "team configuration for notarization" previously. What are the steps to resolve that issue?Thanks in advance.
I’m unable to notarize the executable and the .app — the status has been showing “In Progress” for over an hour. Upon checking the xcrun logs, it indicates that the submission ID was not received. I also noticed there’s an Apple Developer Service outage reported since October 8, 2025. Could you please let me know when this outage is expected to be resolved? It would be very helpful.
I am facing an issue while trying to staple a notarization ticket to my signed macOS installer package.
Details of my setup:
The .pkg file is signed using my Developer ID Installer certificate.
The app inside the package is signed using my Developer ID Application certificate.
Notarization via xcrun notarytool completes successfully with status: Accepted.
However, the stapler command fails with the following error:
xcrun stapler staple -v /Users/mac-test/Desktop/IPMPlus_Arm_Installer_signed.pkg
Processing: /Users/mac-test/Desktop/IPMPlus_Arm_Installer_signed.pkg
Could not validate ticket for /Users/mac-test/Desktop/IPMPlus_Arm_Installer_signed.pkg
The staple and validate action failed! Error 65.
I verified that all other Apple notarization-related servers (api.apple-cloudkit.com, gs.apple.com, ocsp.apple.com, ocsp2.apple.com, crl.apple.com, developer.apple.com) are reachable.
However, the domain cdn-apple-cloudkit.apple.com cannot be resolved from any network, including mobile or public Wi-Fi.
Both dig and nslookup return “No answer” even when using external DNS servers like 8.8.8.8 or 1.1.1.1.
It appears that cdn-apple-cloudkit.apple.com might be required during the stapler validation process, but the DNS for this domain is not resolving.
Could you please confirm whether this CDN endpoint is required for stapling, and if there is currently an outage or configuration issue with cdn-apple-cloudkit.apple.com?
I believe that this is related to the post https://developer.apple.com/forums/thread/790880.
I essentially have the same problem that they did. I submit my Distribution PKG for notarization but the notarization fails and when I attempt to install the PKG user the UI I get a "External component packages (3) trustLevel=0 (trust evaluation failed; treating as invalid due to higher trust level for parent product archive)"
However if I install using "sudo installer -verboseR -pkg ConcealDistribution.pkg -target /" everything works as expected.
The difference between me and the other post is that when I expand my PKG using pkgutil --expand I do not have a Resources folder within my top level distribution. Instead my structure looks like
ConcealDistribution
├── Distribution
├── ConcealConnect.pkg
├── ConcealBrowse.pkg
└── ConcealUpdate.pkg
The specific notary service errors I receive are as follows
{
"logFormatVersion": 1,
"jobId": "7e30e3fd-1739-497c-a02e-64fbe357221d",
"status": "Invalid",
"statusSummary": "Archive contains critical validation errors",
"statusCode": 4000,
"archiveFilename": "ConcealDistribution.pkg",
"uploadDate": "2025-10-08T19:41:33.491Z",
"sha256": "40aacfacf25c6da0be8fe31ae9c145a25ddf9ed1f38be714687c74d95b26619d",
"ticketContents": null,
"issues": [
{
"severity": "error",
"code": null,
"path": "ConcealDistribution.pkg",
"message": "Package ConcealDistribution.pkg has no signed executables or bundles. No tickets can be generated.",
"docUrl": null,
"architecture": null
},
{
"severity": "warning",
"code": null,
"path": "ConcealDistribution.pkg",
"message": "The contents of the package at ConcealDistribution.pkg could not be extracted.",
"docUrl": null,
"architecture": null
}
]
}
For what its worth all the inner PKGs have their executables signed, the PKGs are signed themselves and they are all notarized and stapled without issue. Then I am attempting to sign and notarize the outer PKG and that is where the problems pop up.
Additionally I'm not sure when this stopped working as I expected but just a few months ago I was able to do this exact same process and install with the UI and have it work.
Topic:
Code Signing
SubTopic:
Notarization
My notary service has been stuck for more than 5 hours. Is it taking long time because the notary service is down or because i am a new user
Hello Apple Support,
While attempting to staple a notarization ticket for our signed installer package, the stapler command fails with Error 65. Upon investigation, we found that connections to oscdn.apple.com present an SSL certificate issued to a248.e.akamai.net, which does not include oscdn.apple.com in its Subject Alternative Name (SAN).
This mismatch prevents our macOS environment from validating tickets and completing the stapling process.
Steps tried:
Verified notarization status (Accepted).
DNS flushed, tried different DNS (8.8.8.8, 1.1.1.1).
curl to oscdn.apple.com consistently fails with SSL error 60.
Please advise on resolving this certificate mismatch.
also when I try to run the stapler command with my pkg
"xcrun stapler staple/Users/mactest/Desktop/IPMPlus_Macos_Installer.signed.pkg"
getting the output like :-
Processing: /Users/mactest/Desktop/IPMPlus_Macos_Installer.signed.pkg
Could not validate ticket for /Users/mac-test/Desktop/IPMPlus_Macos_Installer.signed.pkg
The staple and validate action failed! Error 65.
please help
Thank you.
My notary service has been stuck for more than 5 hours. Is it because i am a new user or there is an notary service outage.
Hi Apple team,
I have a recently created dev account and submitted two different 20-30 mb .apps for notary through the notary tool. I have read that this should only take minutes at this size of an app but both have been stuck in progress for almost 24+ hours.
Below are the UUIDs of the notary submissions. Also I tried re-submitting but these are also stuck in progress.
Successfully received submission history.
history
--------------------------------------------------
createdDate: 2025-09-26T11:46:32.643Z
id: 9714758e-e216-496d-80f8-422f77011ebe
name: <>.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-09-25T21:48:46.161Z
id: c2a81300-c903-4277-8ef3-70205a690c76
name: <>.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-09-25T18:24:36.205Z
id: 42742be1-c7e5-4483-a2c5-95e89086d070
name: <>.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-09-25T16:35:09.059Z
id: a404256e-40c2-4dca-97fc-983e70ea4b7b
name: <>.zip
status: In Progress
I started a notarization run a few hours ago. (and used --wait)
Conducting pre-submission checks for Metrix Installer.dmg and initiating connection to the Apple notary service...
Submission ID received
id: dd77be4c-0cb6-4913-a846-d4025ede37fd
Successfully uploaded file
id: dd77be4c-0cb6-4913-a846-d4025ede37fd
path: /Users/johnluss/Work/Metrix Installer.dmg
Waiting for processing to complete.
Current status: In Progress.................................................................................................................................
I finally ctrl-c out of it (PAGES of ....) and tried getting the log
Submission log is not yet available or submissionId does not exist
id: dd77be4c-0cb6-4913-a846-d4025ede37fd
The Apple System Status page shows all servers up and running.
Any suggestions on what might be going wrong?
I have an application that I have been signing, notarizing and distributing to beta testers for a year with no issues, note: I have never got stapling to work I always get a error 65 in the process. But up until yesterday that hasn't been an issue and online verification has always worked. Yesterday morning around 9am online gatekeeper verification has been failing with:
APP not opened,
apple cannot verify app is free of malware. etc
this keeps happening, with every build I try. redownloading previously successful builds show the same behavior
I know I can allow in privacy and security, but heading towards launch I dont want to have to tell users to do that.
has there been a change in how gatekeeper works or issues with the service?
any help with this or getting stapling working would be very appreciated!
我是一名开发人员。除了App Store,我们公司的官方网站也是软件下载的一种方式。DMG签名提交后,通过网站下载安装软件时,仍然有提示说来自身份不明的开发者。您能告诉我如何解决这个问题吗?如果你能用中文回复就最好了。
Topic:
Code Signing
SubTopic:
Notarization
Whilst waiting for the company developer account I successfully notarised an app/pkg
On switching to the company account the app/pkg has been stuck in progress for over 2 days (see below)
The initial submission was via Xcode and later via command line.
The last one was when I updated bundle ids etc and built with Github Actions.
The initial submission did coincide with a service outage, however that is marked as resolved.
I would like to cancel all of them now that I have switched the signing account and the bundle ID but there seems no way to do this?
Thoughts and comments welcome.
Thanks
Paul
--------------------------------------------------
createdDate: 2025-08-14T11:03:24.837Z
id: edf215d0-4d15-4075-aa6f-4755a35b3d45
name: ZenityEndpointAgent.pkg
status: In Progress
--------------------------------------------------
createdDate: 2025-08-12T21:36:36.345Z
id: 9c98de09-d3aa-449b-ad47-7e721b0342c5
name: AIEdgeDeviceAgent.pkg
status: In Progress
--------------------------------------------------
createdDate: 2025-08-12T16:58:50.891Z
id: 9206f9be-0fc4-4c6c-aa66-8fcbe3332155
name: AIEdgeDeviceAgent.pkg
status: In Progress
--------------------------------------------------
createdDate: 2025-08-12T10:37:35.624Z
id: b20d1dd0-084e-441c-87a6-641fb088819e
name: AIEdge Device Agent.zip
status: In Progress
Hey, when I try to launch my app it prompts me with a "Apple could not verify" popup. The thing is the app has been signed and stapled.
xcrun stapler validate .app for my app returns "The validate action worked!"
If I also run syspolicy_check distribution .app it returns: "App passed all pre-distribution checks and is ready for distribution"
Any idea?
I am building an electron app bundled with python. My code signing was fast, but when it came to notarization, it has already taken over 6+ hours. How can I speed things up?
Hello,
I'm currently trying to upload a new version of an existing application. But each time I try to validate the archive of the application, I got the following error in Xcode (v16.2) :
Invalid code signing entitlements. Your application bundle’s signature contains code signing entitlements that aren’t supported on macOS. Specifically, the “37CG5MY799.com.example.app” value for the com.apple.application-identifier key in “com.example.app.pkg/Payload/app.app/Contents/MacOS/app” isn’t supported. This value should be a string that starts with your Team ID, followed by a dot (“.”), followed by the bundle ID.
I suspect that there is a problem with the App ID Prefix (that is 37CG5MY799 for the app) when our team ID is E4R7RJ7LA3 but I cannot find a solution.
I asked the Apple Developer Support for help and I have read the documentation they sent but it couldn't solve this problem so they redirected me to the forums.
https://developer.apple.com/library/archive/qa/qa1879/_index.html
https://developer.apple.com/library/archive/technotes/tn2318/_index.html#//apple_ref/doc/uid/DTS40013777-CH1-OVERVIEW
https://developer.apple.com/library/archive/technotes/tn2318/_index.html#//apple_ref/doc/uid/DTS40013777-CH1-TNTAG33
There isn't any obvious App ID Prefix mismatch in the entitlement between the Application's signature entitlement and the Embedded provisioning profile entitlement .
Application's signature entitlement :
<dict>
<key>com.apple.application-identifier</key>
<string>37CG5MY799.com.example.app</string>
<key>com.apple.developer.team-identifier</key>
<string>E4R7RJ7LA3</string>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.example.app</string>
</array>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
</dict>
Embedded provisioning profile entitlement :
<dict>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.example.app</string>
<string>E4R7RJ7LA3.*</string>
</array>
<key>com.apple.application-identifier</key>
<string>37CG5MY799.com.example.app</string>
<key>keychain-access-groups</key>
<array>
<string>37CG5MY799.*</string>
</array>
<key>com.apple.developer.team-identifier</key>
<string>E4R7RJ7LA3</string>
</dict>
The app also have a browser extension that correctly use the Team ID.
How to solve this problem ?
Thanks for your time,
Qeg
Tried notarizing my app yesterday afternoon via Mac terminal, and when I came back to work this morning it was still "In Process...". I closed terminal, and checked appleid.apple.com, and it was asking me to reset my password- maybe because the notarization timed out?
Either way, I reset my password, generated a new app-specific password and tried notarizing the app again, but it's now been 3 hours and it's still "In Process..." again.
When I check the status via terminal, nothing seems off- and the status is In Progress.
How can I determine if there's a bigger issue I need to fix before notarizing?
UUID: e7ae29c8-2478-41a3-93b4-3f274de643d0
Topic:
Code Signing
SubTopic:
Notarization
Its just stuck in progress.
$ xcrun notarytool history --keychain-profile X
Successfully received submission history.
history
--------------------------------------------------
createdDate: 2025-07-21T16:46:13.233Z
id: X
name: X.dmg
status: In Progress
--------------------------------------------------
createdDate: 2025-07-20T18:44:35.683Z
id: X
name: X.dmg
status: In Progress
--------------------------------------------------
createdDate: 2025-07-20T11:24:20.319Z
id: X
name: X.dmg
status: In Progress
Its a go app; not simple but not very complicated. It is my first time notarising but even then should it take this long?? 3 days is ridiculous!
see:
xcrun notarytool history --apple-id "devxxfishpond.sh" --team-id "XMXG6C4xxx" --password "hedi-xzkt-xxxxxxxx"
Successfully received submission history.
history
--------------------------------------------------
createdDate: 2025-07-22T05:32:06.213Z
id: ac32c72d-c799-4936-a090-aca4f8d3c3c3
name: Fishpond.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-07-20T10:20:22.228Z
id: 38bb9dfb-a8e2-4174-b330-f79c985f3a93
name: Fishpond.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-07-20T09:05:26.709Z
id: bba156d0-7ecd-4c24-863f-834da08a8916
name: Fishpond.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-07-20T08:56:47.509Z
id: 3d5c97ac-fd76-4cc3-85ee-bac8a92ea412
name: Fishpond.zip
status: Invalid
Topic:
Code Signing
SubTopic:
Notarization
I'm building a custom macOS installer for my software, primarily using the builtin tools of codesign, pkgbuild, productbuild and xcrun.
My product consist of a list of plugins and a CEP extension for the Adobe After Effect app.
All of my bundles and binaries are properly signed using a trusted Apple Developer certificate I've generated, of type Developer ID Application.
My installer is a "distribution" pkg, and has this structure(expanding it using pkgutil --expand):
SceneTools-3.4.4-osx-installer
├── Distribution
├── miscellaneous.pkg
├── plugins.aftereffects2022.pkg
├── plugins.aftereffects2023.pkg
├── plugins.aftereffects2024.pkg
├── plugins.aftereffects2025.pkg
├── preinstall.pkg
├── Resources
├── scenebuilder.pkg
└── uninstaller.pkg
Each "child" pkg would install parts of my product in different locations in the target macOS disk(this is why I'm using that kind of style of building the custom installer).
Signing each and every bundle or binary of my product, signing the "child" pkg's, then notarizing them works well with no issues, in addition signing the "final" "distribution" using productbuild --sign option also works well, but when trying to notarize the "final" pkg, the notary service fails with this error:
{
"logFormatVersion": 1,
"jobId": "5fb38df9-ef97-4bd3-955e-7783c37ac4a8",
"status": "Invalid",
"statusSummary": "Archive contains critical validation errors",
"statusCode": 4000,
"archiveFilename": "SceneTools-3.4.4-osx-installer.pkg",
"uploadDate": "2025-06-26T14:14:41.507Z",
"sha256": "621de5d887b06ad11214255c6e91ebd9eeffb18ad8f940365f4539bd1902fe9a",
"ticketContents": null,
"issues": [
{
"severity": "error",
"code": null,
"path": "SceneTools-3.4.4-osx-installer.pkg",
"message": "Package SceneTools-3.4.4-osx-installer.pkg has no signed executables or bundles. No tickets can be generated.",
"docUrl": null,
"architecture": null
},
{
"severity": "warning",
"code": null,
"path": "SceneTools-3.4.4-osx-installer.pkg",
"message": "The contents of the package at SceneTools-3.4.4-osx-installer.pkg could not be extracted.",
"docUrl": null,
"architecture": null
}
]
}
My final pkg indeed doesn't contain any bundles or binaries directly, but that's how it should be - a container of "child" pkg.
I tried various ways of working-around this issue, like:
Notarizing the dmg that contains this final pkg - worked, but when opening the pkg, GateKeeper blocks the users from opening it.
Wrapping the pkg inside an .app and notarizing the .app - same as above.
What am I doing wrong?
Does those kind of pkg like my "final" pkg aren't meant to be notarized? if so - how can I solve this GateKeeper blocks?
Should I build my final pkg in a different way?
Topic:
Code Signing
SubTopic:
Notarization