🗓️ Book Your Mobile CI/CD Assessment Session!
Learn More       Talk to an Expert
Logo
  • Get in Touch
  • Mail İcon
    info@appcircle.io

Follow us on:

  • Github IconX IconYoutube IconLinkedIn IconReddit Icon
ISO 27001SOC2 Type2
LinkedIn IconLinkedIn IconLinkedIn IconLinkedIn IconLinkedIn Icon
  • Product
  • Features
  • Why Appcircle?
  • Meet Our Customers
  • Enterprise
  • Self-Hosted Appcircle
  • Local macOS Services
  • Integrations
  • Appcircle AI
  • Use Cases
  • Guides
  • Pricing
  • System Status
  • CLI
  • Community
  • Partners
  • Blog
  • Events
  • Whitepapers
  • Guides and Docs
  • CI/CD Maturity Report
  • Release Notes
  • How-to Videos
  • Slack Channel
  • Getting Started
  • Compare
  • Mobile CI/CD Tools
  • Appcircle vs App Center
  • Appcircle vs Appflow
  • Appcircle vs Bitrise
  • Appcircle vs Codemagic
  • Appcircle vs Xcode Cloud
  • Appcircle vs Jenkins
  • Company
  • Mission and Vision
  • Contact Us
  • Careers
  • Press Kit
  • Product
  • Features
  • Why Appcircle?
  • Meet Our Customers
  • Enterprise
  • Self-Hosted Appcircle
  • Local macOS Services
  • Integrations
  • Appcircle AI
  • Use Cases
  • Guides
  • Pricing
  • System Status
  • CLI
  • Community
  • Partners
  • Blog
  • Events
  • Whitepapers
  • Guides and Docs
  • CI/CD Maturity Report
  • Release Notes
  • How-to Videos
  • Slack Channel
  • Getting Started
  • Compare
  • Mobile CI/CD Tools
  • Appcircle vs App Center
  • Appcircle vs Appflow
  • Appcircle vs Bitrise
  • Appcircle vs Codemagic
  • Appcircle vs Xcode Cloud
  • Appcircle vs Jenkins
  • Company
  • Mission and Vision
  • Contact Us
  • Careers
  • Press Kit

Copyright © 2024 Appcircle Inc. All rights reserved.

Terms of ServicePrivacy PolicyCookie PolicyInformation Security PolicySecurity in Appcircle
Appcircle LogoAppcircle Logo
Product
featuresFEATURES

Unlock the full potential of Mobile CI/CD with Appcircle's powerful features

enterprise
Build

Effortlessly Automate Your Mobile App Builds

enterprise
Enterprise App Store

Enterprise Mobile App Store

enterprise
Signing Identities

Complete Signing Identity Management

enterprise
Re-sign Binaries

Mastering Binary Re-signing for App Security

enterprise
Testing Distribution

Comprehensive App Distribution for Testing

codepush
CodePush

Seamless OTA Update Process

enterprise
Publish to Stores

Automate App Store Publishing from Days to Minutes

Microsoft Intune App Releases
Publish to Intune

Streamline Microsoft Intune App Releases

featuresPLATFORMS

Explore the mobile platforms comprehensively supported by Appcircle

enterprise
iOS CI/CD

iOS Continuous Integration and Delivery (CI/CD)

enterprise
Android CI/CD

Android Continuous Integration and Delivery (CI/CD)

enterprise
React Native CI/CD

React Native Continuous Integration and Delivery (CI/CD)

enterprise
Flutter CI/CD

Flutter Continuous Integration and Delivery (CI/CD)

featuresINTEGRATIONS

Streamlined Integration with Hundreds of Ready Workflow Steps!

Sonarqube

Sonarqube

Danger

Danger

Fastlane

Fastlane

Tuist

Tuist

BrowserStack

BrowserStack

Resources
RESOURCESRESOURCES

Comprehensive documentation to support you at every stage of your Appcircle journey.

Learn

enterprise

Docs

enterprise

Blogs

enterprise

Events

whitepapers

Whitepapers

enterprise

Videos

Get Started

enterprise

Objective-C/Swift

enterprise

Java/Kotlin

enterprise

React Native

enterprise

Flutter

Guides

enterprise

Continuous Testing

enterprise

Advanced Caching

enterprise

Marketplaces

enterprise

API & CLI

CONNECT

enterprise

LinkedIn

enterprise

X

enterprise

Slack Community

Enterprise
RESOURCESENTERPRISE

Experience Appcircle's robust, enterprise-grade capabilities tailored for advanced needs

enterprise
Mobile CI/CD at Scale
enterprise
OpenShift
self-hosted
Self-Hosted
enterprise
Kubernetes
enterprise
Meet Our Customers
enterprise
Docker
enterprise
Why Appcircle?
enterprise
Podman
BlogPricingContact Us
BlogPricingContact Us
Log in ➔Start for Free
  1. Home
  2. use-cases
  3. ios-certificates-provisioning
iOS Code Signing

iOS Code Signing

Learn iOS code signing basics: Apple certificates, provisioning profiles, and how Appcircle simplifies automatic and manual signing.

What is iOS code signing?

Apple requires that all executable code be signed using an Apple-issued certificate. Signing your apps with Apple-issued certificates is required to help ensure that the code has not been tampered with in any way and that it comes from a known and approved source.

Here is how the process works: to develop and install apps on Apple products, developers must first register with the Apple Developer Program. Once registered, Apple verifies the developer's identity, which can be either an individual or a business, and only then issues a certificate that will be used for developing, testing, distributing, and submitting apps to the App Store. This system ensures that all apps come from a known source.

Automatic and Manual iOS Code Signing

There are two ways that can be used iOS code signing: manual and automatic.

• Manual iOS code signing works by providing a provisioning profile that is already created and specifying a Bundle Identifier. The provisioning profile should be compatible with the application and it should be created with appropriate certificate and devices if applicable.

• Automatic iOS code signing means Xcode the signing process for you. Once the 'Automatically manage signing' is enabled in your project's configurations, Xcode will create or update profiles and app IDs automatically.

Appcircle supports both automatic and manual signing methods, providing flexibility in your app signing process.

Automatic Signing: Appcircle handles provisioning profile management and app signing automatically during the build process.

Example: A development team enables automatic signing in their build configuration. Appcircle automatically manages certificates and provisioning profiles, streamlining the build process without manual intervention.

Manual Signing: For precise control over the signing process, you can manually select certificates and provisioning profiles.

Example: For an app with multiple targets and specific signing requirements, a developer opts for manual signing. They manually select the appropriate provisioning profiles and certificates for each target in Appcircle's build configuration, ensuring the app is signed correctly for enterprise distribution.

What is Apple Certificates and Provisioning Profiles?

Apple Certificates are certificates issued by Apple that are used for signing your applications. Developers need to sign all applications using Apple Certificates to verify ownership, ensure that the code has not been tampered with, and confirm that it comes from a verified source.

Provisioning Profiles are files that contain a set of entities and entitlements allowing apps to be installed and tested on devices. They include information about the App ID, Certificate, and registered device details, and authorize your app to use specified app services.

There are multiple types of Provisioning Profiles (Development, Ad Hoc, etc.), and each profile should be paired with an Apple Certificate depending on its purpose. Common use cases include:

Provisioning Profile TypeCertificate TypeDevice Registration RequiredUse Case
Development ProfileDevelopment Certificate Yes (up to 100 devices per year)Run iOS, macOS, tvOS, or watchOS apps on registered devices directly from Xcode for testing and debugging.
Ad Hoc ProfileDistribution Certificate Yes (up to 100 devices per year)Distribute apps to a limited set of registered devices outside the App Store or TestFlight.
App Store ProfileDistribution Certificate NoSign and submit apps to App Store Connect for public release.
In-House ProfileEnterprise Certificate NoDeploy internal apps securely to employees under the Apple Developer Enterprise Program.
Provisioning Profile Type
Development Profile
Certificate Type
Development Certificate
Device Registration Required
Yes (up to 100 devices per year)
Use Case
Run iOS, macOS, tvOS, or watchOS apps on registered devices directly from Xcode for testing and debugging.
Provisioning Profile Type
Ad Hoc Profile
Certificate Type
Distribution Certificate
Device Registration Required
Yes (up to 100 devices per year)
Use Case
Distribute apps to a limited set of registered devices outside the App Store or TestFlight.
Provisioning Profile Type
App Store Profile
Certificate Type
Distribution Certificate
Device Registration Required
No
Use Case
Sign and submit apps to App Store Connect for public release.
Provisioning Profile Type
In-House Profile
Certificate Type
Enterprise Certificate
Device Registration Required
No
Use Case
Deploy internal apps securely to employees under the Apple Developer Enterprise Program.

What is Apple Development Certificate and When to Use It?

An Apple Development Certificate is used to sign apps so they can run on registered iOS, macOS, tvOS, or watchOS devices during development. You use it when building and running apps from Xcode on your own devices, enabling testing and debugging.

Example: A developer creates a new iOS app in Xcode and wants to run it on their iPhone for debugging. They create, fetch, or upload an Apple Development Certificate in Appcircle, store it securely in the centralized Signing Identities hub, and pair it with a development provisioning profile. This setup allows them to build, sign, and deploy the app directly to their iPhone from Xcode to test performance, fix bugs, and validate functionality in a real-world environment.

What is Apple Distribution Certificate and When to Use It?

An Apple Distribution Certificate is used to sign apps for distribution outside of Xcode. You need it when submitting applications to the App Store, distributing through TestFlight, or creating Ad Hoc and Enterprise builds. Unlike development certificates, it’s intended for releasing apps to testers or end users.

Example: A developer finalizes their iOS app and prepares it for release. They create, fetch, or upload an Apple Distribution Certificate in Appcircle, then store it securely in the centralized Signing Identities hub and pair it with a distribution provisioning profile. This setup allows them to sign the app and either submit it to the App Store via Xcode or distribute it to testers through TestFlight.

Apple Development Certificate vs. iOS App Development Certificate

An iOS App Development Certificate is used to sign development versions of iOS, tvOS, and watchOS apps so they can run on registered devices and access certain app services during development. The newer Apple Development Certificate includes everything the iOS certificate covers, with the addition of macOS, providing a single certificate type for all Apple platforms.

Example: A developer working only on an iOS app can use an iOS App Development Certificate to test it on their iPhone. For a project that also includes a macOS version, they can use an Apple Development Certificate to cover both platforms with a single certificate.

Apple Distribution Certificate vs. iOS App Distribution Certificate

An iOS Distribution Certificate is used to sign iOS, iPadOS, tvOS, watchOS, and visionOS apps for submission to App Store Connect, TestFlight, or Ad Hoc distribution. It ensures that apps can be installed on designated devices for testing or submitted to the App Store. The newer Apple Distribution Certificate covers all of the same platforms plus macOS, unifying distribution under a single certificate type.

Example: A team preparing to release an iPhone app to the App Store uses an iOS Distribution Certificate to sign and submit it through App Store Connect. For a project that includes both iOS and macOS versions, they use an Apple Distribution Certificate to manage signing and distribution for all platforms with a single certificate.

What is a Development Provisioning Profile and When to Use It

A Development Provisioning Profile is required to run your app on real devices during development. It works together with an Apple Development Certificate (or an iOS App Development Certificate) to sign your app so it can be installed on registered devices directly from Xcode. This profile also enables the use of certain app services, such as Push Notifications or App Groups, while testing.

Example: A developer wants to test a new iOS app on their iPhone. In Appcircle, they fetch a Development Provisioning Profile from the Apple Developer Portal and pair it with their Apple Development Certificate. This allows them to build, sign, and deploy the app from Xcode to their device for debugging and real-world testing.

What is an Ad Hoc Provisioning Profile and When to Use It

An Ad Hoc Provisioning Profile is used to distribute apps outside the App Store or TestFlight, directly to specific devices for testing. It must be paired with an Apple Distribution Certificate (or an iOS Distribution Certificate) to sign the app. With this profile, you can share the app with testers, but only on devices whose UDIDs are registered in the Apple Developer Portal. The limitation is that the devices must be predefined, which can be restrictive for larger teams or external testers.

Example: A QA team wants to test an iOS app on a group of devices before submitting it to the App Store. The developer creates an Ad Hoc Provisioning Profile in Appcircle, pairs it with an Apple Distribution Certificate, and registers the testers' device UDIDs through Appcircle's device registration feature. This setup allows the signed app to be installed directly on those devices for real-world testing without using TestFlight.

What is an App Store Provisioning Profile and When to Use It

An App Store Provisioning Profile is used when distributing apps through the App Store. It must be paired with an Apple Distribution Certificate (or the older iOS Distribution Certificate) to sign the app. Unlike Ad Hoc profiles, you do not need to specify device UDIDs. Once approved, the app can be downloaded and installed by any user from the App Store.

Example: A developer is ready to release their iOS app publicly. In Appcircle, they create or fetch an App Store Provisioning Profile and pair it with an Apple Distribution Certificate. This setup allows them to sign the app and submit it to App Store Connect for review and distribution.

What is an In-House (Enterprise) Provisioning Profile and When to Use It

An In-House Provisioning Profile is used to distribute apps internally within an organization without going through the App Store or TestFlight. It must be paired with a Distribution (Enterprise) Certificate, which Apple issues only to organizations enrolled in the Apple Developer Enterprise Program, typically those with more than 100 employees. With this profile, there is no need to register device UDIDs, but apps can only be used for work purposes by employees of the enterprise. Apple may revoke the certificate at any time if the program agreement is violated.

Example: A large company wants to distribute a custom iOS app to its employees for internal use. The team creates an In-House Provisioning Profile in Appcircle and pairs it with a Distribution (Enterprise) Certificate. Using Appcircle’s Testing Distribution or Enterprise App Store module, they deploy the signed app securely across employee devices without submitting it to the App Store.

Certificate and Provisioning Profile Expirations and Renewals

When a certificate or provisioning profile is created, Apple automatically issues an expiration date, typically one or two years depending on the type. Once expired, they can no longer be used to sign apps, which can disrupt both development and distribution. To avoid interruptions, expirations should be tracked carefully and renewals performed in advance.

Appcircle simplifies this process by helping you manage expirations and handle renewals directly on the platform. Certificates and provisioning profiles can be renewed seamlessly, ensuring that apps continue to build, sign, and deploy without disruption.

Example: A team is preparing their iOS app for App Store submission when they receive a notification from Appcircle that their App Store provisioning profile is about to expire. Using Appcircle, they renew it in advance, which updates the Apple Developer Portal automatically. As a result, the renewed credentials are applied to future builds, and the team continues their development and release process without interruption.

Re-signing Binaries with Updated Profiles

After updating provisioning profiles, applications must be re-signed to reflect the changes. Appcircle automates the re-signing process, ensuring your app can be installed on devices registered after the initial build.

Example: A new test device is added to the provisioning profile. The developer uses Appcircle's Re-sign Binary feature to automatically re-sign the app binary with the updated profile. The app is then distributed to all registered testers, including those with newly added devices.

FAQs

+

Why is iOS code signing complicated?

  • Unlike Android code signing, where you only need a simple Keystore to sign your app, iOS code signing involves managing multiple identities depending on your app's lifecycle. During development, you need to use a Developer Certificate, assign a Bundle Identifier to uniquely identify your app, register the devices where you want to install the app, and create a provisioning profile that links the App ID with the certificate and device information. For distribution, a similar but separate process is required. Since there are multiple components to manage, it is recommended to use platforms like Appcircle, which allow you to handle iOS code signing from a single hub and make the process easier.

+

How can I generate an Apple Certificate without a Mac?

  • Generating an Apple Certificate requires a .csr file, which can only be created on a Mac. This makes it difficult for non-Mac users to generate and manage certificates. Appcircle solves this problem by allowing you to manage Apple Certificates and provisioning profiles directly on the platform. You can generate a certificate or create a .csr file directly on Appcircle without the need for a Mac.

+

Can I send apps to TestFlight that are signed with a Development Certificate?

  • No, the Development Certificate is only for testing during development. To send an app to TestFlight, it must be signed with a Distribution Certificate.

+

Is authentication required for distributing apps signed with an In-House provisioning profile?

  • Yes, there are certain limitations mandated by the Apple Developer Enterprise Program agreement. One of these is that apps signed with an In-House profile must be distributed in a way that requires some form of authentication. Apple reserves the right to revoke your certificate at any time in case of a violation.

+

Why can't I open an iOS app on my device?

  • If you cannot open an iOS app on your device and you are installing the app from outside the App Store, the issue is usually related to code signing. The problem may occur because your device is not registered in the provisioning profile used during signing, the wrong certificate type was used, or your device is not in developer mode.

+

Why can't I add new devices to my Apple Developer Account?

  • Apple restricts registering more than 100 devices per year in order to prevent distributing apps to many users without App Store review and submission. Even if you delete a registered device, it still counts toward the 100-device limit. This means you might not see 100 devices listed on your account, but deleted ones are still included in the count. To make the most of the limit, it is recommended to review and disable devices before the next renewal date. If you want to distribute in-house applications without this limitation, you can consider the Apple Developer Enterprise Program.

+

How to replace old devices with new ones on Apple Developer Portal?

  • Apple restricts registering more than 100 devices per year. At the start of your new membership year, you will be presented with the option to remove listed devices and restore the available device count to 100 when first signing in to Certificates, Identifiers & Profiles. You can remove specific devices, remove all devices to restore your available device count to 100, or continue without removing any devices. Once you complete this process, new devices can be added.

+

Can I modify the devices registered in a provisioning profile?

  • Yes, the devices registered in a provisioning profile can be edited later, for example, when a device is no longer available or when a new device needs to be added. Appcircle allows you to easily manage devices that are registered to a provisioning profile.

REQUEST FOR MORE SPECIFICS

Get Started with Appcircle

Save time, reduce costs, and increase developer productivity

Join Our Newsletter

Get informed about news, new releases, and mobile DevOps.