Code Signing Certificate Requirements by Platform
There is no single code signing certificate that works identically across every software platform. Windows, PowerShell, Java, macOS, Android, and iOS use different combinations of certificates, signing identities, private keys, trust models, signing tools, and distribution controls.
Last reviewed: September 2026What Each Platform Requires
A “code signing certificate requirement” can mean different things depending on the platform. On Windows, it commonly means a publicly trusted certificate that can be used with Authenticode. In Java, it means a certificate and private key used in the JAR signing model. Apple's platforms use Apple-controlled signing identities, while Android uses an application signing key and certificate tied to app identity and update continuity.
The platform also determines how the credential is consumed. A certificate can be valid in isolation and still be unsuitable for a particular signing format, distribution workflow, or verification environment. The right comparison therefore needs to cover the certificate or identity, private key, trust model, toolchain, artifact, and lifecycle together.
Platform Requirements Compared
Use this table to identify the signing model before looking at certificate details. It is a starting point for the deeper platform sections below.
| Platform | Signing technology | Certificate / identity | Typical tool | Public CA certificate? |
|---|---|---|---|---|
| Windows | Authenticode | Code signing certificate + private key | SignTool | Yes |
| PowerShell | Authenticode | Code signing certificate + private key | Set-AuthenticodeSignature | Yes |
| Java | JAR signing | Certificate + private key | jarsigner | Certificate-based |
| macOS | Apple Code Signing | Apple signing identity | codesign | Apple ecosystem |
| Android | Android App Signing | App signing key + certificate | apksigner / Gradle | No public CA model |
| iOS | Apple Code Signing | Apple signing identity | Xcode / codesign | Apple ecosystem |
What a Signing Requirement Includes
The word certificate hides several different concepts. A public CA-issued certificate is not the same thing as a platform-issued signing credential, and neither is the same as the private key that performs the cryptographic operation.
Windows Code Signing Requirements
Windows software commonly uses Authenticode and a publicly trusted code signing certificate. The certificate needs an appropriate code signing purpose, a usable private key, a valid trust path, compatible algorithms, and a signing workflow that produces a valid Authenticode signature.
Publishers also need to distinguish certificate validation from Windows reputation systems. A CA validates the applicant and issues the certificate under its policy. Windows can make additional decisions about the signed software, its reputation, and the circumstances of execution.
Public CA code signing certificate
The certificate represents the validated publisher identity and contains the public key and certificate-purpose information needed by the signing and verification process.
Authenticode + SignTool
SignTool applies and verifies signatures for supported Windows artifacts. The final artifact, certificate, chain, and timestamp need to be checked together.
Certificate trust is not reputation
A valid signature and trusted certificate chain do not mean that every Windows reputation or security signal will produce the same user experience.
Choose a certificate for your signing workflow
Once you have identified the target platform, compare suitable certificate options and providers for the workflows that use a public CA-issued code signing certificate.
Choose a Code Signing Certificate →Requirements for Windows Executables and Installers
EXE, DLL, and MSI files can be signed within the Windows ecosystem, but the signing operation still has to match the artifact format and the way Windows consumes the signature. The same certificate can generally support multiple compatible Windows signing operations when the certificate and key are appropriate for the workflow.
PowerShell Script Signing Requirements
PowerShell script signing uses the Windows Authenticode model. A script can therefore use a code signing certificate with the associated private key, while PowerShell's execution policy determines how that signature affects script execution in a particular environment.
That creates two separate questions: “Can the script signature be validated?” and “What does the current PowerShell execution policy allow?” They should not be treated as the same control.
Identity and integrity
- Code Signing EKU
- Private key associated with the certificate
- Authenticode signature on the script
- Certificate trust and status
- Signature inspection with
Get-AuthenticodeSignature
Execution policy
- Execution policy is a separate control
- Policy can affect whether signed or unsigned scripts run
- A valid certificate does not override every policy decision
- Use
Set-AuthenticodeSignatureto sign supported scripts
Java JAR Signing Requirements
Java JAR signing uses a certificate-backed key pair, commonly managed through a keystore. The Java signing model is different from Windows Authenticode even though both can use certificates and private keys.
JKS and PKCS#12 are common keystore formats, while keytool and jarsigner form the core command-line tooling. Java verification also depends on certificate chains, timestamps, algorithms, and the security rules of the JDK in use.
Certificate + private key
The key performs signing and the certificate supplies the public identity information.
JKS / PKCS#12
The signing key can be held in a Java keystore rather than a Windows certificate store.
jarsigner
Signs and verifies JARs within Java's signing format and verification model.
JDK security
Algorithm restrictions and runtime changes can affect whether older signatures remain acceptable.
macOS Signing Identity Requirements
macOS uses Apple's signing ecosystem. The credential is an Apple signing identity backed by an Apple-issued certificate and its associated private key. The signing environment can also involve the Keychain, entitlements, provisioning where applicable, Developer ID, and notarization for relevant distribution scenarios.
A commercial CA-issued Windows-style code signing certificate is therefore not a substitute for an Apple signing identity. The platform's identity and distribution controls are part of the signing model.
codesign applies the signatureSigning and Distributing macOS Software
Signing answers whether the code carries the expected Apple signature and identity. Distribution adds additional requirements around how the software is packaged, notarized where applicable, and evaluated by the receiving Mac.
Make the code verifiably yours
- Apple signing identity
- Private key
- Bundle integrity
- Nested code signing
- Entitlements where applicable
CONTROL
Make the release acceptable to users
- Developer ID where applicable
- Notarization for applicable scenarios
- Gatekeeper evaluation
- Quarantine context
- Distribution channel rules
Android App Signing Requirements
Android application signing uses an application signing identity rather than the public CA code signing model commonly used for Windows software. The app signing key and certificate are tied to the application's signing identity and update continuity.
APK and AAB packaging, APK Signature Schemes, Google Play App Signing, upload keys, key management, and key rotation all affect the production workflow. The signing key is therefore a long-term application asset, not simply a certificate purchased for a release.
APK / AAB
The package format determines how signing information is carried and verified.
App signing key
The signing key establishes the application's continuity for signed releases.
Google Play App Signing
Google can manage the production signing key while the publisher uses an upload key for Play submission.
Rotation and recovery
Key-management decisions must preserve the ability to ship legitimate application updates.
App Signing Key and Upload Key Differences
When Google Play App Signing is used, developers can encounter two different key concepts. Mixing them up can create serious operational confusion because they have different jobs.
Signs the distributed application
The app signing key is associated with the signing identity used for the application distributed through the platform. Its continuity is tied to the ability to publish valid updates.
- Application signing identity
- Release signing
- Update continuity
- Long-term key protection
Authenticates submission to Google Play
The upload key is used to authenticate builds uploaded to Google Play when Play App Signing manages the production signing key.
- Upload authentication
- Separate operational role
- Can be managed independently
- Does not replace the production app signing identity
iOS Signing Identity Requirements
iOS signing is part of Apple's controlled developer and distribution ecosystem. The signing certificate, private key, provisioning profile, Bundle ID, Team ID, entitlements, and distribution channel work together to authorize and identify an application.
Development and distribution credentials serve different purposes. App Store and TestFlight workflows also introduce distribution controls that should be considered separately from the basic act of applying a cryptographic signature.
Signing Certificates and Provisioning Profiles
These credentials are related but do not perform the same job. The certificate identifies the signing identity, while the provisioning profile supplies authorization and configuration information for the app's development or distribution context.
| Credential | Main role | What it should not be confused with |
|---|---|---|
| Signing certificate | Identifies the signing identity. | Not the private key and not the provisioning profile. |
| Private key | Performs the cryptographic signing operation. | Not public certificate information. |
| Provisioning profile | Authorizes and configures the app for a development or distribution context. | Not the signing certificate itself. |
| Bundle ID | Identifies the application. | Not a signing credential. |
| Entitlements | Define capabilities associated with the signed app. | Not a replacement for provisioning or signing. |
How Certificate Models Differ by Platform
The clearest way to compare platforms is to ask whether the trust identity comes from a public CA model or from the platform ecosystem itself.
| Platform | Public CA code signing | Platform-controlled identity | Private key |
|---|---|---|---|
| Windows | Yes | No | Required |
| PowerShell | Yes | No | Required |
| Java | Possible | No single platform CA model | Required |
| macOS | No Windows-style model | Apple | Required |
| Android | No | Android / Google ecosystem | Required |
| iOS | No | Apple | Required |
How Platforms Validate Signing Identity
Who does the platform trust? The answer changes by ecosystem. Public CA validation establishes an identity that a trust system can recognize, while platform-controlled systems establish developer or application identity through their own enrollment and credential infrastructure.
Windows / relevant Java use
A CA validates the applicant and issues a certificate. The verifier then evaluates the certificate, chain, status, and signature in the target environment.
Apple platforms
Apple establishes developer identity and issues signing credentials within its controlled signing and distribution ecosystem.
Android
The application signing key establishes the app's signing identity and is central to update continuity.
How Platform Trust Models Differ
The signature is only one verification input. Each platform adds its own trust path, identity rules, package checks, distribution controls, or security policy.
Certificate chain
Windows trust plus platform security and reputation systems.
Java trust
Certificate/signature validation plus Java trust configuration and security rules.
Apple trust
Apple signing, certificate identity, notarization and Gatekeeper where applicable.
App identity
App signing identity, package verification, and distribution ecosystem controls.
Apple distribution
Signing identity plus provisioning and distribution authorization.
Private Key Protection Across Platforms
Certificate compatibility does not tell you whether a signing architecture is operationally safe or workable. The private-key model is a separate design decision and can be constrained by the platform, certificate profile, organization policy, or CI/CD environment.
Local key storage
Simple for development, but production signing needs strict access control and careful protection of the signing machine.
Keychain / hardware-backed
Platform facilities can keep signing credentials inside controlled local security boundaries.
Central cryptographic control
HSM-based workflows can restrict key export and centralize access policies and audit controls.
Cloud signing
Signing can be moved behind an authenticated service boundary, reducing the need to distribute private keys to build agents.
Signing Tools by Platform
The signing tool is the bridge between the credential and the artifact. It knows how to apply the platform's signature format and how to verify the result.
| Platform | Common tooling | What the tool applies |
|---|---|---|
| Windows | SignTool | Authenticode signatures and verification for supported Windows artifacts. |
| PowerShell | Set-AuthenticodeSignature, Get-AuthenticodeSignature | Authenticode signing and signature inspection for PowerShell scripts. |
| Java | keytool, jarsigner | Keystore management and JAR signing/verification. |
| macOS | codesign, Xcode | Apple code signatures, identities, entitlements, and app build workflows. |
| Android | apksigner, Gradle | Android application signing and package build integration. |
| iOS | Xcode, codesign | Apple application signing, provisioning, and distribution workflows. |
Timestamping Across Signing Systems
Timestamping is not implemented identically across these ecosystems. A publisher should therefore confirm what the target signing format and platform actually support instead of applying a Windows timestamping workflow to every release.
Authenticode timestamping
Timestamping can be attached to an Authenticode signature so the signing event has independent time evidence.
JAR timestamping
JAR signatures can include timestamp information, with the timestamp and its trust path evaluated by Java verification.
Apple / Android / iOS
Signing and distribution systems use their own platform controls. Do not assume a public TSA workflow has the same role or requirement in each ecosystem.
Certificate Chains and Platform Trust
A certificate chain is meaningful only within a trust model. Windows and Java can evaluate CA certificate paths, while Apple and Android use platform-specific identity and trust mechanisms that should not be forced into the same chain diagram.
| Platform | Chain / trust model | Publisher focus |
|---|---|---|
| Windows | CA certificate chain + Windows trust | Ensure the certificate and required intermediates form an acceptable path. |
| Java | Certificate chain + Java trust configuration | Ensure the JAR's signing certificate can be validated by the intended Java environment. |
| macOS | Apple signing and trust ecosystem | Use the expected Apple signing identity and satisfy applicable distribution controls. |
| Android | Application signing identity | Maintain the app signing identity and package verification requirements rather than a public CA chain. |
| iOS | Apple trust and distribution ecosystem | Maintain the Apple signing, provisioning, and distribution authorization path. |
Credential Expiration and Lifecycle
Expiration does not have the same meaning across platforms. A public CA certificate has a defined validity interval, while platform-managed signing credentials can have their own renewal and lifecycle rules. Android app signing keys are particularly different because application identity and update continuity are long-term concerns.
Revocation and Credential Recovery
Revocation is not a universal operation with identical consequences. Public CA certificates can be revoked through certificate-status mechanisms, while platform-controlled credentials and application signing keys follow the lifecycle and recovery mechanisms of their ecosystems.
Windows / applicable Java
Certificate revocation can affect the trust status of signatures depending on the verifier, timestamp evidence, status information, and platform behavior.
Signing credential lifecycle
Apple certificates and developer credentials can be revoked or replaced within Apple's controlled ecosystem, with consequences for signing and distribution workflows.
Key continuity and recovery
Android application signing is centered on app identity and update continuity. Key compromise and recovery should be handled through the platform's key-management model rather than a public CA revocation analogy.
Cross-Platform CI/CD Signing Requirements
A cross-platform build pipeline should not attempt to make every platform use the same signing credential. The scalable approach is a common release control plane with platform-specific signing identities and isolated key operations.
Build secrets and keystores
Protect certificate private keys, keystores, signing passwords, and timestamp configuration. Use controlled signing agents or remote signing where appropriate.
Keychain and Apple credentials
Protect signing identities, private keys, provisioning assets, and developer credentials on CI workers. Avoid treating them as ordinary build variables.
App signing continuity
Protect the app signing key and separate it from upload credentials where Google Play App Signing is used. Document recovery and rotation procedures.
Protect signing keys across build environments
For teams signing software through automated pipelines, evaluate key protection and remote signing options before distributing private keys to build agents.
Explore Cloud Code Signing →When Signing Credentials Can Be Reused
The answer depends on whether the certificate, signature format, trust ecosystem, and platform actually accept the credential. “Can I reuse the certificate?” is therefore different from “Can I reuse the signing infrastructure?”
Windows + PowerShell
Both use the Authenticode ecosystem, so a compatible Windows code signing certificate can support both workflows.
Windows + Java
Both can use certificate-backed signing, but Authenticode and JAR signing are different formats and toolchains.
Windows + iOS
A Windows public CA certificate is not a substitute for an Apple signing identity.
Android + iOS
Each platform uses its own signing identity and distribution controls rather than one universal application certificate.
Centralized signing
One controlled signing service can manage multiple platform-specific credentials without forcing those credentials to become identical.
Do not reuse keys casually
Even when a certificate can technically be used in multiple compatible contexts, key reuse can enlarge the impact of compromise.
A Secure Cross-Platform Signing Strategy
A multi-platform publisher should think in terms of multiple signing identities under one security architecture. The organization can centralize inventory, access policy, audit, CI/CD controls, and release verification while keeping each platform's credential separate.
Multiple platform identities
- Windows signing identity
- Java signing identity
- Apple signing identities
- Android app signing identity
CONTROL
Centralized operations
- Key management
- CI/CD access control
- Certificate inventory
- Release verification
Signing Requirements by Publisher Type
Windows code signing
Start with a publicly trusted Windows code signing certificate, protected private key, Authenticode-compatible signing workflow, chain, timestamping, and Windows verification.
JAR signing credentials
Use a certificate-backed key pair, appropriate keystore, jarsigner, certificate chain, timestamping where appropriate, and a tested JDK verification environment.
Apple signing identity
Use the appropriate Apple signing certificate and private key, then account for entitlements, Developer ID, notarization, and distribution requirements where applicable.
App signing credentials
Protect the application signing key, understand APK/AAB signing, and document Play App Signing, upload-key, rotation, and recovery decisions.
Apple signing credentials
Manage development or distribution certificates, private keys, provisioning profiles, Bundle IDs, entitlements, and the chosen distribution channel.
Multiple identities
Keep platform-specific credentials separate while centralizing signing governance, access control, inventory, CI/CD, and release verification.
Choosing the Right Signing Identity
Use this sequence before purchasing a certificate, creating a key, or changing a CI/CD signing workflow. Starting with the platform prevents a certificate-first decision that later turns out to be incompatible with the actual distribution model.
Platform first, credential second
The platform determines the trust ecosystem and signing format. Those decisions narrow the credential choices and the key-management architecture.
- Identify the consumer platform
- Identify the artifact format
- Identify the trust authority
- Identify the key-management boundary
Keeping Signing Requirements Current
Certificate and signing requirements can change in areas such as key protection, algorithms, key sizes, certificate lifetime, identity validation, timestamping, platform signing policies, and distribution controls. A current page should therefore be reviewed regularly rather than treated as a permanently fixed checklist.
When a requirement changes, distinguish the announcement from the effective date and from any transition period. Publishers should then map the change to certificates, keys, build agents, signing services, and release procedures before enforcement reaches production.
Platform Signing Checklist
Certificate / identity
- Correct platform credential
- Correct identity or developer account
- Correct certificate purpose where applicable
- Current credential status
- Required trust relationship
Private key
- Correct key associated with identity
- Required protection model
- Restricted access
- Secure CI/CD handling
- Recovery and replacement plan
Signing
- Correct signing tool
- Correct artifact format
- Supported algorithms
- Timestamping where appropriate
- Final artifact signed after build completion
Verification / distribution
- Signature validates
- Identity and trust validate
- Platform-specific controls pass
- Distribution requirements are satisfied
- Expiration and compromise procedures are documented
| Check | Windows | Java | macOS | Android | iOS |
|---|---|---|---|---|---|
| Signing identity | ✓ | ✓ | ✓ | ✓ | ✓ |
| Private key | ✓ | ✓ | ✓ | ✓ | ✓ |
| Public CA certificate | ✓ | Depends | No Windows-style model | No | No |
| Platform-issued identity | No | No single platform model | ✓ | ✓ | ✓ |
| Certificate chain | ✓ | ✓ | Platform-specific | Different model | Platform-specific |
| Provisioning | No | No | Applicable in some workflows | No equivalent | ✓ |
| Notarization | No | No | Applicable to certain distribution scenarios | No | App Store ecosystem |
Common Misunderstandings About Platform Signing
“There is one universal code signing certificate.”
There is not. Certificate and signing identity requirements are platform-specific.
“A commercial CA certificate can sign iOS apps.”
Apple applications use Apple's controlled signing ecosystem and credentials.
“Android requires a public CA certificate.”
Android app signing uses an application signing key and certificate model, not the normal Windows public CA model.
“A certificate and signing identity are the same thing.”
A certificate can be one component of a signing identity. The private key and platform context also matter.
“The same private key should be reused everywhere.”
Even when technically possible, broad key reuse can increase compromise impact and complicate access control.
“Signing and distribution are the same process.”
Signing establishes cryptographic identity and integrity. Distribution can add notarization, provisioning, store, reputation, or platform authorization controls.
Frequently Asked Questions
What certificate is required for Windows code signing?
What certificate does PowerShell use for script signing?
Does Java require a code signing certificate?
jarsigner.What certificate is required for macOS apps?
Does Android require a code signing certificate?
What certificate is required for iOS apps?
Can one code signing certificate work across platforms?
What is the difference between a certificate and a signing identity?
Which platforms use a public CA code signing model?
Do all platforms require timestamping?
Related Platform and Signing Guides
Choose the signing identity for the platform, not the other way around
Start with the target platform and artifact. Then select the identity, private-key protection model, signing tool, trust path, and distribution controls that the ecosystem actually requires.
Compare Code Signing Certificate Providers →