Developer ID

RSS for tag

Developer ID certificates are unique identifiers from Apple that assure users that you are a trusted developer.

Posts under Developer ID tag

201 Posts

Post

Replies

Boosts

Views

Activity

how do I notarize python module
Hello, I have a electron app. I want to notarize this app. But there is a problem about python module.In my case, some user will use it offline, so I need prepare common python modules for them.When I try to notarize app, Apple will return failed, and logs tell to me that python module (.so files) does not cotains a valid signature or a secure timestamp signature. What can I do to make app notarized with python module?Can I let apple ignore these python module in app or Is there a way to signature these python modules ?
8
0
2.5k
Mar ’22
how to delete a 'ghost' signing certificate (Xcode 13.2.1)
In my keychain, I have one Developer ID Application certificate, with a private key, for my Team. In Xcode's Accounts/Manage Certificates dialog, there are three Developer ID Application certificates, two of which have a red 'x' badge and the status 'missing private key'. I can right click on any of those three entries and my only enabled choice is "Export". Email creator or Delete are disabled. Why? In my Team's account, there are indeed three Developer ID Application certificates, with different expiration dates, but I only have the private key for one of them. By choosing Manual signing, I can choose a specific certificate from my keychain, but Xcode 13.2.1 tells me that this certificate is missing its private key - but I can see that private key in my keychain!
1
0
1.7k
Mar ’22
"maximum App ID limit" problem
Hello. I was trying to build a project on my Macbook via XCode and came across the message: "Communication with Apple failed. Your maximum App ID limit has been reached. You may create up to 10 App IDs every 7 days". Is there a solution to this? I don't know how much the prices are but I don't think I can afford it. What can you suggest to continue building projects with a free account?
1
0
7.8k
Mar ’22
Can I update a resouce in a signed app and then just resign the updated resource?
Hi,I have an automated build process that produces custom apps for different customers. The only thing that is customized is a resource in the app.I would like to be able to just code sign the entire app once and then for each customer just update and code sign the resource.After doing the initial code signing of the app "codesign -vvv --deep --strict myapp.app" shows that everything is OK.I then replace myapp.app//Contents/Resources/CustomFile with a new one and code sign it:codesign -f -s "Developer ID Application: MY Company" --options runtime --keychain "Buildsystem" "myapp.app/Contents/Resources/CustomFile"But then "codesign -vvv --deep --strict myapp.app" shows there is a problem:myapp.app: a sealed resource is missing or invalidfile modified: myapp.app/Contents/Resources/CustomFileCan anybody explain why this doesn't work?My work around is to always update the resource in an unsigned app and then code sign the entire thing.
7
0
5.0k
Mar ’22
Monteray can’t be opened because Apple cannot check it for malicious software?
Hi, I'm responsible for generating the macOS installer for Apache NetBeans. Up until today I've not had any issues, the DMG created has never had any issues being used on others machines. The process we have signs and notarizes the app, as expected. However when downloading this from the internet at attempting to install the app, users are reporting that it cannot be opened because it cannot be checked by Apple for malicious software. Heres a link to the app: https://dist.apache.org/repos/dist/dev/netbeans/netbeans-installers/13/Apache-NetBeans-13-bin-macosx.dmg If I try to open this myself(after downloading), I can see 2 messages in Console: 1: assessment denied for Apache-NetBeans-13-bin-macosx.dmg com.apple.message.domain: com.apple.security.assessment.outcome2 com.apple.message.signature2: bundle:UNBUNDLED com.apple.message.signature: denied:no usable signature com.apple.message.signature3: Apache-NetBeans-13-bin-macosx.dmg com.apple.message.signature5: UNKNOWN com.apple.message.signature4: 3 SenderMachUUID: 8702454A-423C-33A4-BDAA-656186E59614 2: assessment denied for Apache NetBeans 13.pkg com.apple.message.domain: com.apple.security.assessment.outcome2 com.apple.message.signature2: bundle:UNBUNDLED com.apple.message.signature3: Apache NetBeans 13.pkg com.apple.message.signature5: UNKNOWN com.apple.message.signature4: 2 com.apple.message.signature: denied:Unnotarized Developer ID SenderMachUUID: 8702454A-423C-33A4-BDAA-656186E59614 I'm struggling to work out how to further diagnose this, to allow us to release this application? The notarization of this app comes back as "Package Approved", so I don't get that reference in those messages. Any help or advice on how to continue with this?
11
0
3.1k
Mar ’22
Signing a Mac Product For Distribution
IMPORTANT This post has been replaced by two shiny new posts: Creating Distribution-Signed Code for Mac Packaging Mac Software for Distribution See the preamble in Creating Distribution-Signed Code for Mac for more context. I’ve left the original post here just for the record. Share and Enjoy — Quinn “The Eskimo!” Apple Developer Relations, Developer Technical Support, Core OS/Hardware let myEmail = "eskimo" + "1" + "@" + "apple.com" I spend a lot of time helping Mac developers with notarisation and Gatekeeper problems, and many of these problems are caused by incorrect code signing. The instructions for how to sign and package a Mac product for distribution are rather scattered, so I’ve written them all down in one place. And rather than keep that to myself, I’m posting it here for everyone’s benefit. If you have any corrections, feel free to get in touch with me directly (my email address is in my signature). And if have any questions about this, it’s probably best to ask them here on DevForums. I’ve locked this thread, so just start a new thread tagging it with Code Signing, Notarization, or Gatekeeper. Or, if you want one-on-one help, open a DTS tech support incident and we can pick things up in that context. IMPORTANT None of the following has been formally reviewed, so it’s not official Apple documentation. Signing a Mac Product For Distribution The best way to sign and package an app is via Xcode: Build a version of your app to distribute using Xcode’s Product > Archive command, and then package that archive for your distribution channel via the Organizer. See Xcode Help > Distribute your app for the details. However, not all Mac products can be distributed this way. For example: An app that’s distributed outside of the Mac App Store on a disk image A product that has to be installed via an installer package An app that uses a third-party development environment In these cases you must manually sign and package your product. Note If you find this post a little abstract, and would prefer to follow a concrete example, see Manual Code Signing Example. Consult Resources for Third-Party Development Environments Many third-party development environments have their own strategies for signing and packaging the products they build. If you’re using a third-party development environment, consult its support resources for advice before continuing. Decide on a Container Format To get started, decide on your container format. Mac products support two distribution channels: An app can be distributed via the Mac App Store Apps and non-apps can be distributed outside of the Mac App Store using Developer ID signing A Mac App Store app must be submitted as an installer package. In contrast, products distributed outside of the Mac App Store can use a variety of different container formats, the most common being: Zip archive (.zip) Disk image (.dmg) Installer package (.pkg) It’s also possible to nest these. For example, you might have an app inside an installer package on a disk image. Each container format has its own pros and cons, so pick an approach based on the requirements of your product. However, this choice affects how you package your product, something discussed in more detail below. Structure Your Code Correctly All code that you distribute must be signed. There’s two parts to this: Structuring your code to support signing Actually signing it You must structure your code correctly. If you don’t, it may be hard (or in some cases impossible) to sign it. First things first, identify all the code in your product. There are many types of code, including apps, app extensions, frameworks, other bundled code (like XPC Services), shared libraries, and command-line tools. Each type of code has two key attributes Is it bundled code? (apps, app extensions, frameworks, other bundled code) Is it a main executable? (apps, app extensions, command-line tools) Both of these attributes affect how you sign the code. In addition, whether the code is bundled is critical to how you structure it. Specifically, bundled code supports the notion of nested code. For example, you might have an app extension nested within your app’s bundle. When dealing with nested code, follow these rules: Place any nested code in the appropriate nested code location. For more on that, see Placing Content in a Bundle. Do not place non-code items in a nested code location. Rather, place these in the bundle’s resources directory (typically Contents/Resources). IMPORTANT Scripts are not considered code. If you have scripts — shell, Python, AppleScript, or whatever — place them in the resources directory. These will still be signed, but as a resource rather than as code. Provisioning Profile If you have a main executable that uses a restricted entitlement, one that must be allowlisted by a provisioning profile, place the profile in your bundle at the path Contents/embedded.provisionprofile. The profile is sealed by the code signature, so do this before signing the code. If your product contains multiple executables that need a profile — for example, you have an app with an embedded Network Extension app extension, both of which need the Network Extensions entitlement — repeat this process for each of these code executables. If your product includes a non-bundled executable that uses a restricted entitlement, you must package that executable in an app-like structure. For the details, see Signing a Daemon with a Restricted Entitlement. Handling Alien Code Structures If you’re using a complex third-party library, you may find that the structure required by the library does not match up with the structure required by macOS. For an in-depth discussion of the techniques you can use to resolve this, see Embedding Nonstandard Code Structures in a Bundle. Sign Your Code Sign code using the codesign tool. Read the following sections to learn about the specific arguments to use, but also keep these general rules in mind: Do not use the --deep argument. This feature is helpful in some specific circumstances but it will cause problems when signing a complex program. For a detailed explanation as to why, see --deep Considered Harmful. Rather, sign each code item separately. For a complex app, you should create a script to do this. Sign from the inside out. That is, if A depends on B, sign B before you sign A. When you sign A, the code signature encodes information about B, and changing B after the fact can break the seal on that code signature. Basic Signing No matter what sort of code you’re signing, the basic codesign command looks like this: % codesign -s III /path/to/your/code` where III is the name of the code signing identity to use. The specific identity varies depending on your target platform. See the following sections for details. When signing bundled code (as defined in Structure Your Code Correctly) pass in the path to the bundle, not the path to the code. If you’re re-signing code — that is, the code you’re signing is already signed — pass the -f option. If you’re signing a main executable (as defined in Structure Your Code Correctly) that needs entitlements, add --entitlements EEE.entitlements, where EEE.entitlements is a path to a property list file that contains your entitlements. IMPORTANT The entitlements property list file must be in the standard XML format with LF line endings, no comments, and no BOM. If you’re not sure of the file’s provenance, use plutil to convert it to the standard format. See Ensure Properly Formatted Entitlements in Resolving Common Notarization Issues. If you’re signing non-bundled code, set the code signing identifier by adding -i BBB, where BBB is the bundle ID the code would have if it had a bundle ID. For example, if you have an app whose bundle ID is com.example.flying-animals that has a nested command-line tool called pig-jato, the bundle ID for that tool would logically be com.example.flying-animals.pig-jato, and that’s a perfectly fine value to use for BBB. Note For bundled code, you don’t need to supply a code signing identifier because codesign defaults to using the bundle ID. Mac App Store Signing If you’re distributing via the Mac App Store, use your Mac App Distribution signing identity in place of III in the example above. This will typically be named 3rd Party Mac Developer Application: TTT, where TTT identifies your team. You can also use an Apple Distribution signing identity, with the name Apple Distribution: TTT. Developer ID Signing If you’re distributing outside of the Mac App Store, use your Developer ID Application signing identity in place of III in the example above. This will typically be named Developer ID Application: TTT, where TTT identifies your team. All Developer ID signed code needs a secure timestamp; enable this by adding the --timestamp option. If you’re signing a main executable (as defined in Structure Your Code Correctly), enable the hardened runtime by adding -o runtime option. The hardened runtime enables additional security checks within your process. You may need to make minor code changes to be compatible with those additional security checks. For some specific examples, watch WWDC 2019 Session 703 All About Notarization. Failing that, you can opt out of these additional security checks using entitlements. See Hardened Runtime Entitlements Build Your Container Once you’ve signed the code in your product, it’s time to wrap it in a container for distribution. Follow the advice appropriate for your chosen container format in the following sections. If you’re using a nested container format — for example, an app inside an installer package on a disk image — work from the inside out, following the advice for each level of nesting. Build a Zip Archive Use the ditto tool to create a zip archive for your product: Create a directory that holds everything you want to distribute. Run the ditto as shown below, where DDD is the path to the directory from step 1 and ZZZ is the path where ditto creates the zip archive. % ditto -c -k --keepParent DDD ZZZ Zip archives cannot be signed (although their contents can be). Build an Installer Package Use the productbuild tool to create a simple installer package for a single app: % productbuild --sign III --component AAA /Applications PPP In this example: III is either your Mac Installer Distribution or Developer ID Installer signing identity, depending on your distribution channel. This will typically be named 3rd Party Mac Developer Installer: TTT or Developer ID Installer: TTT, where TTT identifies your team. AAA is the path to your app. PPP is the path where productbuild creates the installer package. IMPORTANT The above is the simplest possible example. There are many different ways to create installer packages. See the man pages for productbuild, productsign, pkgbuild, and pkgutil for more details. Build a Disk Image Use the hdiutil tool to create a disk image for distribution: Create a directory to act as the source for the root directory of your disk image’s volume. Populate that directory with the items you want to distribute. Use hdiutil command shown below to create the disk image, where SSS is the directory from step 1 and DDD is the path where hdiutil creates the disk image. Use codesign command shown below to sign the disk image, where III is your Developer ID Application signing identity (typically named Developer ID Application: TTT, where TTT identifies your team), BBB is a pseudo bundle ID as discussed in Basic Signing, and DDD is the path to the disk image from step 3. % hdiutil create -srcFolder SSS -o DDD % codesign -s III --timestamp -i BBB DDD IMPORTANT There are various third-party tools that can help you create a disk image in exactly the right way. For example, the tool might arrange the icons nicely, set a background image, and add a symlink to /Applications. If you use such a tool, or create your own tool for this, make sure that the resulting disk image: Is signed with your Developer ID Application signing identity Is a UDIF-format read-only zip-compressed disk image (type UDZO) Notarisation If you’re distributing outside of the Mac App Store, you must notarise the file you intend to distribute to your users. For instructions on doing this, see Customizing the Notarization Workflow. Skip the Export a Package for Notarization section because you already have the file that you want to submit. If you’re using a nested container format, only notarise the outermost container. For example, if you have an app inside an installer package on a disk image, sign the app, sign the installer package, and sign the disk image, but only notarise the disk image. The exception to this rule is if you have a custom third-party installer. In that case, see the discussion in Customizing the Notarization Workflow. Stapler Once you have notarised your product, you should staple the resulting ticket to the file you intend to distribute. Customizing the Notarization Workflow discusses how to do this for a zip archive. The other common container formats (installer package and disk image) support stapling directly. For example: % xcrun stapler staple FlyingAnimals.dmg Note Stapling is recommended but not mandatory. If you don’t staple, a user may have problems if they try to install or run your app for the first time when the Mac is offline. Change history: 20 Jan 2020 — First version. 27 Jan 2020 — Minor editorial changes. 9 Mar 2020 — Moved the details of --deep into a separate post, --deep Considered Harmful. 10 Mar 2020 — Fixed a typo. 30 Mar 2020 — Added a link to Manual Code Signing Example. 26 Feb 2021 — Fixed the formatting. Add a discussion of the entitlements file format. Minor editorial changes. 1 Mar 2021 — Added the Provisioning Profile section. 21 Oct 2021 — Updated the Structure Your Code Correctly section to reference Placing Content in a Bundle. 22 Dec 2021 — Replaced links to two DevForums posts with links to the official documentation, namely those for Signing a Daemon with a Restricted Entitlement and Embedding Nonstandard Code Structures in a Bundle. Made some other editorial changes.
0
0
31k
Mar ’22
Library validation and CoreMedia I/O plug-ins
Hi!The problem I want to discuss is not new, but it is becoming more and more critical for the project I'm working on. So I have to rise it again.Our project is a virtual webcam for macOS implemented as a CoreMedia I/O DAL plug-in. Plug-in is installed at /Library/CoreMediaIO/Plug-Ins/DAL and can be loaded into any client application that wants to use the webcam.The problem appeared when Apple introduced 'Hardened Runtime' in macOS Mojave which by default turns on 'Library Validation' feature. Library validation disables loading for frameworks/plugins/libraries which are either: 1) not signed; 2) signed but 'Team Identifier' in signing certificate is different than certificate of a client application signature. As a result, even though our plugin is properly signed and notarized, it can't be loaded into client application with hardened runtime because of that 2nd case.First alarming incident was last year when Google Chrome on macOS enabled hardened runtime, and stopped showing our webcam in the list. I requested a technical support (case ID for TSI: 718328224), then made a feedback to Apple (FB7071665) about any possible solutions for our case, at least in the future versions of macOS. But I see there's still no reaction there.Now things are getting worse. Skype and Zoom stopped support our webcam for the same reason. Some others announced they will do this too. There's a possibility to add 'com.apple.security.cs.disable-library-validation' entitlement to the client application - that would help with our issue. But Zoom and Skype refuse to add this because of security reasons - after some security exploits were uncovered.The situation is quite critical for our product as many users use our webcam only for Zoom, Skype and similar applications.So, the question is: are there any possible workarounds for our case? I know that for audio plugins (VST, etc.) there's a special entitlement: 'com.apple.security.temporary-exception.audio-unit-host' that allows loading even unsigned plugins into hosting application. Why there's no such entitlement for DAL plugins? Or will it appear in macOS 10.16? I think it would be reasonable to add an entitlement that would only reject loading of unsigned plugins, but would allow loading of plugins with different 'Team ID' in signing certificate.
19
0
9.3k
Feb ’22
How to app distribution for Mac
I'm developing an app for mac, and I'm a complete novice I've never done in my life. There are a total of 2 targets via extension, one of which contains endpoint-security. Anyway, I succeeded in setting up the provisioning file on the developing PC, building it, and running it. I also wanted to bundle all those apps via dmg and run them on different Macos. But here's the problem: When I run it on another PC, I get a notification being blocked by the gatekeeper. When I ran the following command through Google, rejected was confirmed, and I found out that this is the difference between notarization. command : spctl --assess --verbose=4 --type exec /Applications/My.app result : /Applications/My.app : rejected Afterwards I created Certificates -> Add -> Developer ID Applications certificate from Apple Developer site and registered it to my keychain. After doing Xcode's Product -> Archives -> Distribute App -> Developer ID -> Upload for notarization, I selected as follows. Distribution Certificate => Developer ID Applications App1: [Error] Profile doesn't include the selected signing certificate. [Error] Profile is not a "Developer ID" profile. App2: [Error] Profile doesn't include the selected signing certificate. [Error] Profile is not a "Developer ID" profile. An error occurred in the provisioning profile, and when you use the provisioning used for build, I confirmed that the error occurred because the Type was Development. [Where you need help] So I chose Developer ID from Create Profile on Apple developer site to create a new provisioning profile for Developer ID Applications. But it says no certificate here. Also, Distribution has the following items, and no matter which one I select, I could not create a provisioning file using the Developer ID Applications certificate created above. [Distribution List] ad hoc Create a distribution provisioning profile to install your app on a limited number of registered devices. tvOS Ad Hoc Create a distribution provisioning profile to install your app on a limited number of registered tvOS devices. Developer ID Create a Developer ID provisioning profile to use Apple services with your Developer ID signed applications. In House To sign iOS apps for In House Distribution, you need a Certificate. tvOS In House To sign tvOS apps for In House Distribution, you need a Certificate. I would like to create a provisioning file for notarization, can you tell me in detail where to create it?
8
0
3.4k
Feb ’22
How do I re-sign a .pkg installer file?
My Developer ID Installer is expiring soon, according to this page I must re-sign all my existing installers or else no one can use them anymore. How do I do this? Can I strip away or replace the signature somehow? What I've tried so far: I have removed the old certificate from my keychain and added a new one. It has the same ID and everything as the old certificate, but a new expiry date. I've tried running productsign which looks like it's replacing the signature alright but when I inspect the new installer it still has the old certificate expiry date. Command used: productsign --sign MYSIGNID oldSignedInstaller.pkg newSignedInstaller.pkg
2
0
3.3k
Feb ’22
Question about creating certificates
Hello, I read on the Apple Support page that for iOS Distribution certificates, when they expire, "Users will no longer be able to run apps that have been signed with this certificate. You must distribute a new version of your app that is signed with a new certificate." We have 2 certificates that will be expiring soon, a Distribution certificate and an iOS Distribution certificate. I think this app is on the App store. I understand that some certificates can expire without having an affect on the apps; they just need to be updated in order to put a new version out there. I am trying to figure out if ours apply to that scenario or the one above where it will immediately affect installed apps. Any feedback on that? The Apple support person I talked to said I would have to create the certificates before the expiration date, and I have to coordinate that with the release of an updated version of the app. So I believe I need to coordinate with the developer and create the certificate when he uploads a new version of the app. Also, he told me that the iOS Distribution certificates and the Distribution certificates are created in different ways. I found this about creating iOS Distribution certificates: https://support.staffbase.com/hc/en-us/articles/115003458931-Creating-the-iOS-Distribution-Certificate Can all these steps be done ahead of time and I could send the certificate file to the developer? Is there a URL that shows the different way to create Distribution certificates? Thank you. Any answers to these questions would be very helpful.
4
0
2.4k
Jan ’22
What is the purpose of Apple Development and Apple Distribution certificates for macOS?
What is the purpose of Apple Development and Apple Distribution certificates for macOS application?It is quite new types of certificates in addition to existing iOS/Mac Development/Distribution.According to the documentation https://help.apple.com/xcode/mac/current/#/dev154b28f09?sub=dev23755c6c6Apple Development — For macOS apps, use app services during development and testing.Apple Distribution — For macOS apps, sign an app before distributing it through the Mac App Store.What does it mean sign an app before distributing because for distributing it through the Mac App Store I have to use Mac App Distribution (the name is `3rd Party Mac Developer Application`) and Mac Installer Distribution (the name is `3rd Party Mac Developer Installer`).
3
0
9.4k
Jan ’22
Unable to create package installer for notarized app
I developed an app using python and pyinstaller. I was able to sign it and have it notarized. I verified the app worked when I transferred the zip file to another computer. Now I'm struggling to create a package installer as outlined in the directions at https://developer.apple.com/forums/thread/128166 At the command prompt I entered the following: productbuild --sign 'My Name (######7RBW)' --component '/Users/myname/Desktop/dist/my_app.app' /Applications '/Users/myname/Desktop/dist/my_app.pkg' where ###### is the first six entries of my developer ID. The error message stated (Could not find appropriate signing identity for “My Name (######7RBW)”.) I'm sure this is a common error, but I'm not sure what I did incorrectly above. FWIW, I was able to follow the directions for creating a disk image of my app.
1
0
772
Jan ’22
Xcode: could not launch app (Mac app)
Hi, Getting this error when trying to run Developer ID signed Mac app: The OS has denied permission to launch. Please ensure that the app is signed appropriately. When trying to open .app file manually popup says: You do not have permission to open the application My app contains Tunnel Extension. Added -systemextension to entitlements to work with Developer ID. The app is running fine with Apple Dev cert signing. codesign -v -vvv --deep shows no errors; tried setting permissions and signing manually with codesign, same errors Any clues? Thanks in advance
6
0
2.6k
Jan ’22
Clarification about Different type of certificates.
I have few queries related to certificates. Platform supported by (iOS App Development and iOS App Distribution) Certificate. Can we use "iOS Distribution" certificates for macOS, tvOS, and watchOS apps(to make these app live) or it's just for the iphone/ipad apps. Which certificate we need if we just want to make iphone/ipad app live.(iOS Distribution or Apple Development) and Why? Can we make watchOs App live without using "Apple Distribution" certificate. When to use "Apple Development" and "iOS App Development" certificate. When to use "Apple Distribution" and "iOS Distribution (App Store and Ad Hoc)" certificate. Waiting for your understandable and good explained responses.
3
0
14k
Dec ’21
How to turn off notarization emails?
Hi,I recently started to add notarization to our build script. By this, apps are built, signed, packaged and notarized every hour, given that some developer has changed something.Now, the notarization emails annoying me. For every build I get such "Your Mac software was successfully notarized." email. If something fails, my build script will send me an email anyway. I really do not need this notarization emails.Is there a way to turn this off?
6
0
2.6k
Dec ’21
Signature not accepted?
I have an app I developed for internal company use outside of xcode (python/pyinstaller based application). The app is a normal double-clickable application with the usual internal structure, as far as I can tell. In order to ease deployment, I figured I'd go ahead and code sign it using my Developer ID, which I did with the following command:codesign --deep -f -s "Developer ID Application" SO2\ Explorer.appWhich ran without complaint. I can then check that it was applied using the command:codesign -dv --strict --verbose=4 SO2\ Explorer.appwhich gives the following output:Executable=/Users/israel/Desktop/SO2 Explorer.app/Contents/MacOS/SO2 Explorer Identifier=edu.alaska.avo.so2explorer Format=app bundle with Mach-O thin (x86_64) CodeDirectory v=20200 size=26842 flags=0x0(none) hashes=833+3 location=embedded VersionPlatform=1 VersionMin=657152 VersionSDK=658176 Hash type=sha256 size=32 CandidateCDHash sha1=d0fd8ca348696e3e8ed218658a4a19de0f0fa346 CandidateCDHash sha256=c45d6c5c00a7dd457a55c37828f3b3953049f8dd Hash choices=sha1,sha256 Page size=4096 CDHash=c45d6c5c00a7dd457a55c37828f3b3953049f8dd Signature size=9012 Authority=Developer ID Application: Israel Brewster (59ED27HUEF) Authority=Developer ID Certification Authority Authority=Apple Root CA Timestamp=Mar 21, 2019 at 2:19:59 PM Info.plist entries=10 TeamIdentifier=59ED27HUEF Sealed Resources version=2 rules=13 files=1222 Internal requirements count=1 size=188which all looks good to me. However, if I check it using the spctl tool:spctl --assess -v --raw SO2\ Explorer.appthe application is rejected:SO2 Explorer.app: rejected (the main executable or Info.plist must be a regular file (no symlinks, etc.)) <?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>assessment:authority</key> <dict> <key>assessment:authority:flags</key> <integer>0</integer> <key>assessment:authority:source</key> <string>obsolete resource envelope</string> <key>assessment:authority:weak</key> <true/> </dict> <key>assessment:cserror</key> <integer>-67015</integer> <key>assessment:remote</key> <true/> <key>assessment:verdict</key> <false/> </dict> </plist>And, in fact, if I try to run the app on a machine with gatekeeper enabled, you do get the "can not open this app due to unidentified developer" warning.What's the problem here, and how do I fix it? The first line of output would seem to indicate that it thinks that either the main executable or Info.plist file is not a regular file, but that is not the case - both are regular files:israel$ ls -l SO2\ Explorer.app/Contents/Info.plist -rw------- 1 israel staff 436 Mar 21 14:07 SO2 Explorer.app/Contents/Info.plist israel$ file SO2\ Explorer.app/Contents/Info.plist SO2 Explorer.app/Contents/Info.plist: Apple binary property list israel$ ls -l SO2\ Explorer.app/Contents/MacOS/SO2\ Explorer -rwxr-xr-x 1 israel staff 3471792 Mar 21 14:19 SO2 Explorer.app/Contents/MacOS/SO2 Explorer israel$ file SO2\ Explorer.app/Contents/MacOS/SO2\ Explorer SO2 Explorer.app/Contents/MacOS/SO2 Explorer: Mach-O 64-bit executable x86_64I'm also noting the entry about "obsolete resource envelope", though I don't know if that means anything.Any thoughts? Thanks!
2
0
4.3k
Dec ’21
Lost Developer Certificate - How to Proceed?
In addition to my primary Intel computer used to code sign and notarized all apps released to the public, I have a second mini-Mac M1 for testing. This machine is set up for dual-boot into either Big Sur (latest release) or Monterey 12.1 beta 3. I strongly suspect that Monterey corrupted my Big Sur partition making it impossible to boot from it. Regardless of the reason, I ended up with little choice except to do a fresh install of Big Sur and Monterey. However, I did not back up the public and private keys for my Developer ID Certificate before I reinstalled both operating systems. I've been developing on macOS for 30 years, but I really don't get some of the ins and outs of certificates. So I'm a bit embarrassed to ask these newbie-esque questions: When I open Xcode 12.5.1 I and go to Preferences > Accounts > Manage Certificates, see the certificate for the old Big Sur partition prior to the fresh install. It's listed there in grey with the old name of the computer. But I don't see any way to get it. Is there a way? (I changed the computer name to match the old name, btw.) I did actually export my Developer ID Certificate from the old Big Sur partition to a .p12 file so that I could add it to the keychain on the Monterey partition. (Is this the public key, the private key, or both?) Should I try to import that into the Keychain on the freshly installed Big Sur and Monterey partitions? Or should I just generate and import a new certificate for the Big Sur partition from my developer account? (I would also then export it to a .p12 and import it into the Monterey partition as I did before.) Finally, what actually is the best practice here? I thought that the certificates generated from my developer account were related to the hardware (computer) on for which I generated them, and they couldn't be used on a different piece of hardware Is that true? If not, could I export the public and private keys for the Developer ID Application certificate from my main development machine (Intel Mac), and install those on every development system I use (e.g., the miniMac M1)? Thanks for any expertise and wisdom you can share. Best Wishes, Mark
2
0
2.5k
Dec ’21
WebKit - WKWebView: How can I control maximumProcessCount of the processPool property?
Apple docs for WKWebView state: "The process pool associated with a web view is specified by its web view configuration. Each web view is given its own Web Content process until an implementation-defined process limit is reached; after that, web views with the same process pool end up sharing Web Content processes."I can see something called maximumProcessCount for the processPool property when I NSLog the description for WKWebView, but I can't find any way to control the process limit, as described by Apple above.I need to do this, because my (MacOS/Objective-C) app can have a large number of WKWebViews at times, and the huge number of processes spawned by all of them brings the system to its knees.Thanks in advance for any help!
3
0
3.1k
Dec ’21
how do I notarize python module
Hello, I have a electron app. I want to notarize this app. But there is a problem about python module.In my case, some user will use it offline, so I need prepare common python modules for them.When I try to notarize app, Apple will return failed, and logs tell to me that python module (.so files) does not cotains a valid signature or a secure timestamp signature. What can I do to make app notarized with python module?Can I let apple ignore these python module in app or Is there a way to signature these python modules ?
Replies
8
Boosts
0
Views
2.5k
Activity
Mar ’22
how to delete a 'ghost' signing certificate (Xcode 13.2.1)
In my keychain, I have one Developer ID Application certificate, with a private key, for my Team. In Xcode's Accounts/Manage Certificates dialog, there are three Developer ID Application certificates, two of which have a red 'x' badge and the status 'missing private key'. I can right click on any of those three entries and my only enabled choice is "Export". Email creator or Delete are disabled. Why? In my Team's account, there are indeed three Developer ID Application certificates, with different expiration dates, but I only have the private key for one of them. By choosing Manual signing, I can choose a specific certificate from my keychain, but Xcode 13.2.1 tells me that this certificate is missing its private key - but I can see that private key in my keychain!
Replies
1
Boosts
0
Views
1.7k
Activity
Mar ’22
"maximum App ID limit" problem
Hello. I was trying to build a project on my Macbook via XCode and came across the message: "Communication with Apple failed. Your maximum App ID limit has been reached. You may create up to 10 App IDs every 7 days". Is there a solution to this? I don't know how much the prices are but I don't think I can afford it. What can you suggest to continue building projects with a free account?
Replies
1
Boosts
0
Views
7.8k
Activity
Mar ’22
Can I update a resouce in a signed app and then just resign the updated resource?
Hi,I have an automated build process that produces custom apps for different customers. The only thing that is customized is a resource in the app.I would like to be able to just code sign the entire app once and then for each customer just update and code sign the resource.After doing the initial code signing of the app "codesign -vvv --deep --strict myapp.app" shows that everything is OK.I then replace myapp.app//Contents/Resources/CustomFile with a new one and code sign it:codesign -f -s "Developer ID Application: MY Company" --options runtime --keychain "Buildsystem" "myapp.app/Contents/Resources/CustomFile"But then "codesign -vvv --deep --strict myapp.app" shows there is a problem:myapp.app: a sealed resource is missing or invalidfile modified: myapp.app/Contents/Resources/CustomFileCan anybody explain why this doesn't work?My work around is to always update the resource in an unsigned app and then code sign the entire thing.
Replies
7
Boosts
0
Views
5.0k
Activity
Mar ’22
Monteray can’t be opened because Apple cannot check it for malicious software?
Hi, I'm responsible for generating the macOS installer for Apache NetBeans. Up until today I've not had any issues, the DMG created has never had any issues being used on others machines. The process we have signs and notarizes the app, as expected. However when downloading this from the internet at attempting to install the app, users are reporting that it cannot be opened because it cannot be checked by Apple for malicious software. Heres a link to the app: https://dist.apache.org/repos/dist/dev/netbeans/netbeans-installers/13/Apache-NetBeans-13-bin-macosx.dmg If I try to open this myself(after downloading), I can see 2 messages in Console: 1: assessment denied for Apache-NetBeans-13-bin-macosx.dmg com.apple.message.domain: com.apple.security.assessment.outcome2 com.apple.message.signature2: bundle:UNBUNDLED com.apple.message.signature: denied:no usable signature com.apple.message.signature3: Apache-NetBeans-13-bin-macosx.dmg com.apple.message.signature5: UNKNOWN com.apple.message.signature4: 3 SenderMachUUID: 8702454A-423C-33A4-BDAA-656186E59614 2: assessment denied for Apache NetBeans 13.pkg com.apple.message.domain: com.apple.security.assessment.outcome2 com.apple.message.signature2: bundle:UNBUNDLED com.apple.message.signature3: Apache NetBeans 13.pkg com.apple.message.signature5: UNKNOWN com.apple.message.signature4: 2 com.apple.message.signature: denied:Unnotarized Developer ID SenderMachUUID: 8702454A-423C-33A4-BDAA-656186E59614 I'm struggling to work out how to further diagnose this, to allow us to release this application? The notarization of this app comes back as "Package Approved", so I don't get that reference in those messages. Any help or advice on how to continue with this?
Replies
11
Boosts
0
Views
3.1k
Activity
Mar ’22
Signing a Mac Product For Distribution
IMPORTANT This post has been replaced by two shiny new posts: Creating Distribution-Signed Code for Mac Packaging Mac Software for Distribution See the preamble in Creating Distribution-Signed Code for Mac for more context. I’ve left the original post here just for the record. Share and Enjoy — Quinn “The Eskimo!” Apple Developer Relations, Developer Technical Support, Core OS/Hardware let myEmail = "eskimo" + "1" + "@" + "apple.com" I spend a lot of time helping Mac developers with notarisation and Gatekeeper problems, and many of these problems are caused by incorrect code signing. The instructions for how to sign and package a Mac product for distribution are rather scattered, so I’ve written them all down in one place. And rather than keep that to myself, I’m posting it here for everyone’s benefit. If you have any corrections, feel free to get in touch with me directly (my email address is in my signature). And if have any questions about this, it’s probably best to ask them here on DevForums. I’ve locked this thread, so just start a new thread tagging it with Code Signing, Notarization, or Gatekeeper. Or, if you want one-on-one help, open a DTS tech support incident and we can pick things up in that context. IMPORTANT None of the following has been formally reviewed, so it’s not official Apple documentation. Signing a Mac Product For Distribution The best way to sign and package an app is via Xcode: Build a version of your app to distribute using Xcode’s Product > Archive command, and then package that archive for your distribution channel via the Organizer. See Xcode Help > Distribute your app for the details. However, not all Mac products can be distributed this way. For example: An app that’s distributed outside of the Mac App Store on a disk image A product that has to be installed via an installer package An app that uses a third-party development environment In these cases you must manually sign and package your product. Note If you find this post a little abstract, and would prefer to follow a concrete example, see Manual Code Signing Example. Consult Resources for Third-Party Development Environments Many third-party development environments have their own strategies for signing and packaging the products they build. If you’re using a third-party development environment, consult its support resources for advice before continuing. Decide on a Container Format To get started, decide on your container format. Mac products support two distribution channels: An app can be distributed via the Mac App Store Apps and non-apps can be distributed outside of the Mac App Store using Developer ID signing A Mac App Store app must be submitted as an installer package. In contrast, products distributed outside of the Mac App Store can use a variety of different container formats, the most common being: Zip archive (.zip) Disk image (.dmg) Installer package (.pkg) It’s also possible to nest these. For example, you might have an app inside an installer package on a disk image. Each container format has its own pros and cons, so pick an approach based on the requirements of your product. However, this choice affects how you package your product, something discussed in more detail below. Structure Your Code Correctly All code that you distribute must be signed. There’s two parts to this: Structuring your code to support signing Actually signing it You must structure your code correctly. If you don’t, it may be hard (or in some cases impossible) to sign it. First things first, identify all the code in your product. There are many types of code, including apps, app extensions, frameworks, other bundled code (like XPC Services), shared libraries, and command-line tools. Each type of code has two key attributes Is it bundled code? (apps, app extensions, frameworks, other bundled code) Is it a main executable? (apps, app extensions, command-line tools) Both of these attributes affect how you sign the code. In addition, whether the code is bundled is critical to how you structure it. Specifically, bundled code supports the notion of nested code. For example, you might have an app extension nested within your app’s bundle. When dealing with nested code, follow these rules: Place any nested code in the appropriate nested code location. For more on that, see Placing Content in a Bundle. Do not place non-code items in a nested code location. Rather, place these in the bundle’s resources directory (typically Contents/Resources). IMPORTANT Scripts are not considered code. If you have scripts — shell, Python, AppleScript, or whatever — place them in the resources directory. These will still be signed, but as a resource rather than as code. Provisioning Profile If you have a main executable that uses a restricted entitlement, one that must be allowlisted by a provisioning profile, place the profile in your bundle at the path Contents/embedded.provisionprofile. The profile is sealed by the code signature, so do this before signing the code. If your product contains multiple executables that need a profile — for example, you have an app with an embedded Network Extension app extension, both of which need the Network Extensions entitlement — repeat this process for each of these code executables. If your product includes a non-bundled executable that uses a restricted entitlement, you must package that executable in an app-like structure. For the details, see Signing a Daemon with a Restricted Entitlement. Handling Alien Code Structures If you’re using a complex third-party library, you may find that the structure required by the library does not match up with the structure required by macOS. For an in-depth discussion of the techniques you can use to resolve this, see Embedding Nonstandard Code Structures in a Bundle. Sign Your Code Sign code using the codesign tool. Read the following sections to learn about the specific arguments to use, but also keep these general rules in mind: Do not use the --deep argument. This feature is helpful in some specific circumstances but it will cause problems when signing a complex program. For a detailed explanation as to why, see --deep Considered Harmful. Rather, sign each code item separately. For a complex app, you should create a script to do this. Sign from the inside out. That is, if A depends on B, sign B before you sign A. When you sign A, the code signature encodes information about B, and changing B after the fact can break the seal on that code signature. Basic Signing No matter what sort of code you’re signing, the basic codesign command looks like this: % codesign -s III /path/to/your/code` where III is the name of the code signing identity to use. The specific identity varies depending on your target platform. See the following sections for details. When signing bundled code (as defined in Structure Your Code Correctly) pass in the path to the bundle, not the path to the code. If you’re re-signing code — that is, the code you’re signing is already signed — pass the -f option. If you’re signing a main executable (as defined in Structure Your Code Correctly) that needs entitlements, add --entitlements EEE.entitlements, where EEE.entitlements is a path to a property list file that contains your entitlements. IMPORTANT The entitlements property list file must be in the standard XML format with LF line endings, no comments, and no BOM. If you’re not sure of the file’s provenance, use plutil to convert it to the standard format. See Ensure Properly Formatted Entitlements in Resolving Common Notarization Issues. If you’re signing non-bundled code, set the code signing identifier by adding -i BBB, where BBB is the bundle ID the code would have if it had a bundle ID. For example, if you have an app whose bundle ID is com.example.flying-animals that has a nested command-line tool called pig-jato, the bundle ID for that tool would logically be com.example.flying-animals.pig-jato, and that’s a perfectly fine value to use for BBB. Note For bundled code, you don’t need to supply a code signing identifier because codesign defaults to using the bundle ID. Mac App Store Signing If you’re distributing via the Mac App Store, use your Mac App Distribution signing identity in place of III in the example above. This will typically be named 3rd Party Mac Developer Application: TTT, where TTT identifies your team. You can also use an Apple Distribution signing identity, with the name Apple Distribution: TTT. Developer ID Signing If you’re distributing outside of the Mac App Store, use your Developer ID Application signing identity in place of III in the example above. This will typically be named Developer ID Application: TTT, where TTT identifies your team. All Developer ID signed code needs a secure timestamp; enable this by adding the --timestamp option. If you’re signing a main executable (as defined in Structure Your Code Correctly), enable the hardened runtime by adding -o runtime option. The hardened runtime enables additional security checks within your process. You may need to make minor code changes to be compatible with those additional security checks. For some specific examples, watch WWDC 2019 Session 703 All About Notarization. Failing that, you can opt out of these additional security checks using entitlements. See Hardened Runtime Entitlements Build Your Container Once you’ve signed the code in your product, it’s time to wrap it in a container for distribution. Follow the advice appropriate for your chosen container format in the following sections. If you’re using a nested container format — for example, an app inside an installer package on a disk image — work from the inside out, following the advice for each level of nesting. Build a Zip Archive Use the ditto tool to create a zip archive for your product: Create a directory that holds everything you want to distribute. Run the ditto as shown below, where DDD is the path to the directory from step 1 and ZZZ is the path where ditto creates the zip archive. % ditto -c -k --keepParent DDD ZZZ Zip archives cannot be signed (although their contents can be). Build an Installer Package Use the productbuild tool to create a simple installer package for a single app: % productbuild --sign III --component AAA /Applications PPP In this example: III is either your Mac Installer Distribution or Developer ID Installer signing identity, depending on your distribution channel. This will typically be named 3rd Party Mac Developer Installer: TTT or Developer ID Installer: TTT, where TTT identifies your team. AAA is the path to your app. PPP is the path where productbuild creates the installer package. IMPORTANT The above is the simplest possible example. There are many different ways to create installer packages. See the man pages for productbuild, productsign, pkgbuild, and pkgutil for more details. Build a Disk Image Use the hdiutil tool to create a disk image for distribution: Create a directory to act as the source for the root directory of your disk image’s volume. Populate that directory with the items you want to distribute. Use hdiutil command shown below to create the disk image, where SSS is the directory from step 1 and DDD is the path where hdiutil creates the disk image. Use codesign command shown below to sign the disk image, where III is your Developer ID Application signing identity (typically named Developer ID Application: TTT, where TTT identifies your team), BBB is a pseudo bundle ID as discussed in Basic Signing, and DDD is the path to the disk image from step 3. % hdiutil create -srcFolder SSS -o DDD % codesign -s III --timestamp -i BBB DDD IMPORTANT There are various third-party tools that can help you create a disk image in exactly the right way. For example, the tool might arrange the icons nicely, set a background image, and add a symlink to /Applications. If you use such a tool, or create your own tool for this, make sure that the resulting disk image: Is signed with your Developer ID Application signing identity Is a UDIF-format read-only zip-compressed disk image (type UDZO) Notarisation If you’re distributing outside of the Mac App Store, you must notarise the file you intend to distribute to your users. For instructions on doing this, see Customizing the Notarization Workflow. Skip the Export a Package for Notarization section because you already have the file that you want to submit. If you’re using a nested container format, only notarise the outermost container. For example, if you have an app inside an installer package on a disk image, sign the app, sign the installer package, and sign the disk image, but only notarise the disk image. The exception to this rule is if you have a custom third-party installer. In that case, see the discussion in Customizing the Notarization Workflow. Stapler Once you have notarised your product, you should staple the resulting ticket to the file you intend to distribute. Customizing the Notarization Workflow discusses how to do this for a zip archive. The other common container formats (installer package and disk image) support stapling directly. For example: % xcrun stapler staple FlyingAnimals.dmg Note Stapling is recommended but not mandatory. If you don’t staple, a user may have problems if they try to install or run your app for the first time when the Mac is offline. Change history: 20 Jan 2020 — First version. 27 Jan 2020 — Minor editorial changes. 9 Mar 2020 — Moved the details of --deep into a separate post, --deep Considered Harmful. 10 Mar 2020 — Fixed a typo. 30 Mar 2020 — Added a link to Manual Code Signing Example. 26 Feb 2021 — Fixed the formatting. Add a discussion of the entitlements file format. Minor editorial changes. 1 Mar 2021 — Added the Provisioning Profile section. 21 Oct 2021 — Updated the Structure Your Code Correctly section to reference Placing Content in a Bundle. 22 Dec 2021 — Replaced links to two DevForums posts with links to the official documentation, namely those for Signing a Daemon with a Restricted Entitlement and Embedding Nonstandard Code Structures in a Bundle. Made some other editorial changes.
Replies
0
Boosts
0
Views
31k
Activity
Mar ’22
Library validation and CoreMedia I/O plug-ins
Hi!The problem I want to discuss is not new, but it is becoming more and more critical for the project I'm working on. So I have to rise it again.Our project is a virtual webcam for macOS implemented as a CoreMedia I/O DAL plug-in. Plug-in is installed at /Library/CoreMediaIO/Plug-Ins/DAL and can be loaded into any client application that wants to use the webcam.The problem appeared when Apple introduced 'Hardened Runtime' in macOS Mojave which by default turns on 'Library Validation' feature. Library validation disables loading for frameworks/plugins/libraries which are either: 1) not signed; 2) signed but 'Team Identifier' in signing certificate is different than certificate of a client application signature. As a result, even though our plugin is properly signed and notarized, it can't be loaded into client application with hardened runtime because of that 2nd case.First alarming incident was last year when Google Chrome on macOS enabled hardened runtime, and stopped showing our webcam in the list. I requested a technical support (case ID for TSI: 718328224), then made a feedback to Apple (FB7071665) about any possible solutions for our case, at least in the future versions of macOS. But I see there's still no reaction there.Now things are getting worse. Skype and Zoom stopped support our webcam for the same reason. Some others announced they will do this too. There's a possibility to add 'com.apple.security.cs.disable-library-validation' entitlement to the client application - that would help with our issue. But Zoom and Skype refuse to add this because of security reasons - after some security exploits were uncovered.The situation is quite critical for our product as many users use our webcam only for Zoom, Skype and similar applications.So, the question is: are there any possible workarounds for our case? I know that for audio plugins (VST, etc.) there's a special entitlement: 'com.apple.security.temporary-exception.audio-unit-host' that allows loading even unsigned plugins into hosting application. Why there's no such entitlement for DAL plugins? Or will it appear in macOS 10.16? I think it would be reasonable to add an entitlement that would only reject loading of unsigned plugins, but would allow loading of plugins with different 'Team ID' in signing certificate.
Replies
19
Boosts
0
Views
9.3k
Activity
Feb ’22
How to app distribution for Mac
I'm developing an app for mac, and I'm a complete novice I've never done in my life. There are a total of 2 targets via extension, one of which contains endpoint-security. Anyway, I succeeded in setting up the provisioning file on the developing PC, building it, and running it. I also wanted to bundle all those apps via dmg and run them on different Macos. But here's the problem: When I run it on another PC, I get a notification being blocked by the gatekeeper. When I ran the following command through Google, rejected was confirmed, and I found out that this is the difference between notarization. command : spctl --assess --verbose=4 --type exec /Applications/My.app result : /Applications/My.app : rejected Afterwards I created Certificates -> Add -> Developer ID Applications certificate from Apple Developer site and registered it to my keychain. After doing Xcode's Product -> Archives -> Distribute App -> Developer ID -> Upload for notarization, I selected as follows. Distribution Certificate => Developer ID Applications App1: [Error] Profile doesn't include the selected signing certificate. [Error] Profile is not a "Developer ID" profile. App2: [Error] Profile doesn't include the selected signing certificate. [Error] Profile is not a "Developer ID" profile. An error occurred in the provisioning profile, and when you use the provisioning used for build, I confirmed that the error occurred because the Type was Development. [Where you need help] So I chose Developer ID from Create Profile on Apple developer site to create a new provisioning profile for Developer ID Applications. But it says no certificate here. Also, Distribution has the following items, and no matter which one I select, I could not create a provisioning file using the Developer ID Applications certificate created above. [Distribution List] ad hoc Create a distribution provisioning profile to install your app on a limited number of registered devices. tvOS Ad Hoc Create a distribution provisioning profile to install your app on a limited number of registered tvOS devices. Developer ID Create a Developer ID provisioning profile to use Apple services with your Developer ID signed applications. In House To sign iOS apps for In House Distribution, you need a Certificate. tvOS In House To sign tvOS apps for In House Distribution, you need a Certificate. I would like to create a provisioning file for notarization, can you tell me in detail where to create it?
Replies
8
Boosts
0
Views
3.4k
Activity
Feb ’22
How do I re-sign a .pkg installer file?
My Developer ID Installer is expiring soon, according to this page I must re-sign all my existing installers or else no one can use them anymore. How do I do this? Can I strip away or replace the signature somehow? What I've tried so far: I have removed the old certificate from my keychain and added a new one. It has the same ID and everything as the old certificate, but a new expiry date. I've tried running productsign which looks like it's replacing the signature alright but when I inspect the new installer it still has the old certificate expiry date. Command used: productsign --sign MYSIGNID oldSignedInstaller.pkg newSignedInstaller.pkg
Replies
2
Boosts
0
Views
3.3k
Activity
Feb ’22
Question about creating certificates
Hello, I read on the Apple Support page that for iOS Distribution certificates, when they expire, "Users will no longer be able to run apps that have been signed with this certificate. You must distribute a new version of your app that is signed with a new certificate." We have 2 certificates that will be expiring soon, a Distribution certificate and an iOS Distribution certificate. I think this app is on the App store. I understand that some certificates can expire without having an affect on the apps; they just need to be updated in order to put a new version out there. I am trying to figure out if ours apply to that scenario or the one above where it will immediately affect installed apps. Any feedback on that? The Apple support person I talked to said I would have to create the certificates before the expiration date, and I have to coordinate that with the release of an updated version of the app. So I believe I need to coordinate with the developer and create the certificate when he uploads a new version of the app. Also, he told me that the iOS Distribution certificates and the Distribution certificates are created in different ways. I found this about creating iOS Distribution certificates: https://support.staffbase.com/hc/en-us/articles/115003458931-Creating-the-iOS-Distribution-Certificate Can all these steps be done ahead of time and I could send the certificate file to the developer? Is there a URL that shows the different way to create Distribution certificates? Thank you. Any answers to these questions would be very helpful.
Replies
4
Boosts
0
Views
2.4k
Activity
Jan ’22
What is the purpose of Apple Development and Apple Distribution certificates for macOS?
What is the purpose of Apple Development and Apple Distribution certificates for macOS application?It is quite new types of certificates in addition to existing iOS/Mac Development/Distribution.According to the documentation https://help.apple.com/xcode/mac/current/#/dev154b28f09?sub=dev23755c6c6Apple Development — For macOS apps, use app services during development and testing.Apple Distribution — For macOS apps, sign an app before distributing it through the Mac App Store.What does it mean sign an app before distributing because for distributing it through the Mac App Store I have to use Mac App Distribution (the name is `3rd Party Mac Developer Application`) and Mac Installer Distribution (the name is `3rd Party Mac Developer Installer`).
Replies
3
Boosts
0
Views
9.4k
Activity
Jan ’22
Unable to create package installer for notarized app
I developed an app using python and pyinstaller. I was able to sign it and have it notarized. I verified the app worked when I transferred the zip file to another computer. Now I'm struggling to create a package installer as outlined in the directions at https://developer.apple.com/forums/thread/128166 At the command prompt I entered the following: productbuild --sign 'My Name (######7RBW)' --component '/Users/myname/Desktop/dist/my_app.app' /Applications '/Users/myname/Desktop/dist/my_app.pkg' where ###### is the first six entries of my developer ID. The error message stated (Could not find appropriate signing identity for “My Name (######7RBW)”.) I'm sure this is a common error, but I'm not sure what I did incorrectly above. FWIW, I was able to follow the directions for creating a disk image of my app.
Replies
1
Boosts
0
Views
772
Activity
Jan ’22
Xcode: could not launch app (Mac app)
Hi, Getting this error when trying to run Developer ID signed Mac app: The OS has denied permission to launch. Please ensure that the app is signed appropriately. When trying to open .app file manually popup says: You do not have permission to open the application My app contains Tunnel Extension. Added -systemextension to entitlements to work with Developer ID. The app is running fine with Apple Dev cert signing. codesign -v -vvv --deep shows no errors; tried setting permissions and signing manually with codesign, same errors Any clues? Thanks in advance
Replies
6
Boosts
0
Views
2.6k
Activity
Jan ’22
Clarification about Different type of certificates.
I have few queries related to certificates. Platform supported by (iOS App Development and iOS App Distribution) Certificate. Can we use "iOS Distribution" certificates for macOS, tvOS, and watchOS apps(to make these app live) or it's just for the iphone/ipad apps. Which certificate we need if we just want to make iphone/ipad app live.(iOS Distribution or Apple Development) and Why? Can we make watchOs App live without using "Apple Distribution" certificate. When to use "Apple Development" and "iOS App Development" certificate. When to use "Apple Distribution" and "iOS Distribution (App Store and Ad Hoc)" certificate. Waiting for your understandable and good explained responses.
Replies
3
Boosts
0
Views
14k
Activity
Dec ’21
How to turn off notarization emails?
Hi,I recently started to add notarization to our build script. By this, apps are built, signed, packaged and notarized every hour, given that some developer has changed something.Now, the notarization emails annoying me. For every build I get such "Your Mac software was successfully notarized." email. If something fails, my build script will send me an email anyway. I really do not need this notarization emails.Is there a way to turn this off?
Replies
6
Boosts
0
Views
2.6k
Activity
Dec ’21
Signature not accepted?
I have an app I developed for internal company use outside of xcode (python/pyinstaller based application). The app is a normal double-clickable application with the usual internal structure, as far as I can tell. In order to ease deployment, I figured I'd go ahead and code sign it using my Developer ID, which I did with the following command:codesign --deep -f -s "Developer ID Application" SO2\ Explorer.appWhich ran without complaint. I can then check that it was applied using the command:codesign -dv --strict --verbose=4 SO2\ Explorer.appwhich gives the following output:Executable=/Users/israel/Desktop/SO2 Explorer.app/Contents/MacOS/SO2 Explorer Identifier=edu.alaska.avo.so2explorer Format=app bundle with Mach-O thin (x86_64) CodeDirectory v=20200 size=26842 flags=0x0(none) hashes=833+3 location=embedded VersionPlatform=1 VersionMin=657152 VersionSDK=658176 Hash type=sha256 size=32 CandidateCDHash sha1=d0fd8ca348696e3e8ed218658a4a19de0f0fa346 CandidateCDHash sha256=c45d6c5c00a7dd457a55c37828f3b3953049f8dd Hash choices=sha1,sha256 Page size=4096 CDHash=c45d6c5c00a7dd457a55c37828f3b3953049f8dd Signature size=9012 Authority=Developer ID Application: Israel Brewster (59ED27HUEF) Authority=Developer ID Certification Authority Authority=Apple Root CA Timestamp=Mar 21, 2019 at 2:19:59 PM Info.plist entries=10 TeamIdentifier=59ED27HUEF Sealed Resources version=2 rules=13 files=1222 Internal requirements count=1 size=188which all looks good to me. However, if I check it using the spctl tool:spctl --assess -v --raw SO2\ Explorer.appthe application is rejected:SO2 Explorer.app: rejected (the main executable or Info.plist must be a regular file (no symlinks, etc.)) <?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>assessment:authority</key> <dict> <key>assessment:authority:flags</key> <integer>0</integer> <key>assessment:authority:source</key> <string>obsolete resource envelope</string> <key>assessment:authority:weak</key> <true/> </dict> <key>assessment:cserror</key> <integer>-67015</integer> <key>assessment:remote</key> <true/> <key>assessment:verdict</key> <false/> </dict> </plist>And, in fact, if I try to run the app on a machine with gatekeeper enabled, you do get the "can not open this app due to unidentified developer" warning.What's the problem here, and how do I fix it? The first line of output would seem to indicate that it thinks that either the main executable or Info.plist file is not a regular file, but that is not the case - both are regular files:israel$ ls -l SO2\ Explorer.app/Contents/Info.plist -rw------- 1 israel staff 436 Mar 21 14:07 SO2 Explorer.app/Contents/Info.plist israel$ file SO2\ Explorer.app/Contents/Info.plist SO2 Explorer.app/Contents/Info.plist: Apple binary property list israel$ ls -l SO2\ Explorer.app/Contents/MacOS/SO2\ Explorer -rwxr-xr-x 1 israel staff 3471792 Mar 21 14:19 SO2 Explorer.app/Contents/MacOS/SO2 Explorer israel$ file SO2\ Explorer.app/Contents/MacOS/SO2\ Explorer SO2 Explorer.app/Contents/MacOS/SO2 Explorer: Mach-O 64-bit executable x86_64I'm also noting the entry about "obsolete resource envelope", though I don't know if that means anything.Any thoughts? Thanks!
Replies
2
Boosts
0
Views
4.3k
Activity
Dec ’21
I just want to upload the game to the app store.
Why does the developer account appear and gives an error even though I match the profile I added with the distributor account? I just want to upload the game to the app store.
Replies
1
Boosts
0
Views
679
Activity
Dec ’21
Lost Developer Certificate - How to Proceed?
In addition to my primary Intel computer used to code sign and notarized all apps released to the public, I have a second mini-Mac M1 for testing. This machine is set up for dual-boot into either Big Sur (latest release) or Monterey 12.1 beta 3. I strongly suspect that Monterey corrupted my Big Sur partition making it impossible to boot from it. Regardless of the reason, I ended up with little choice except to do a fresh install of Big Sur and Monterey. However, I did not back up the public and private keys for my Developer ID Certificate before I reinstalled both operating systems. I've been developing on macOS for 30 years, but I really don't get some of the ins and outs of certificates. So I'm a bit embarrassed to ask these newbie-esque questions: When I open Xcode 12.5.1 I and go to Preferences > Accounts > Manage Certificates, see the certificate for the old Big Sur partition prior to the fresh install. It's listed there in grey with the old name of the computer. But I don't see any way to get it. Is there a way? (I changed the computer name to match the old name, btw.) I did actually export my Developer ID Certificate from the old Big Sur partition to a .p12 file so that I could add it to the keychain on the Monterey partition. (Is this the public key, the private key, or both?) Should I try to import that into the Keychain on the freshly installed Big Sur and Monterey partitions? Or should I just generate and import a new certificate for the Big Sur partition from my developer account? (I would also then export it to a .p12 and import it into the Monterey partition as I did before.) Finally, what actually is the best practice here? I thought that the certificates generated from my developer account were related to the hardware (computer) on for which I generated them, and they couldn't be used on a different piece of hardware Is that true? If not, could I export the public and private keys for the Developer ID Application certificate from my main development machine (Intel Mac), and install those on every development system I use (e.g., the miniMac M1)? Thanks for any expertise and wisdom you can share. Best Wishes, Mark
Replies
2
Boosts
0
Views
2.5k
Activity
Dec ’21
WebKit - WKWebView: How can I control maximumProcessCount of the processPool property?
Apple docs for WKWebView state: "The process pool associated with a web view is specified by its web view configuration. Each web view is given its own Web Content process until an implementation-defined process limit is reached; after that, web views with the same process pool end up sharing Web Content processes."I can see something called maximumProcessCount for the processPool property when I NSLog the description for WKWebView, but I can't find any way to control the process limit, as described by Apple above.I need to do this, because my (MacOS/Objective-C) app can have a large number of WKWebViews at times, and the huge number of processes spawned by all of them brings the system to its knees.Thanks in advance for any help!
Replies
3
Boosts
0
Views
3.1k
Activity
Dec ’21
Certificates
How to access to the password associated to a certificate? I lost it. Thanks, Steeve
Replies
3
Boosts
0
Views
789
Activity
Dec ’21