Configuring UPM app signature check
In 2025, Data Center products are rolling out a useful feature that lets you verify the integrity and origin of apps and app files using a digital signature.
This enhancement not only aims to securely re-enable the app upload feature but also improves security overall, as Marketplace apps will now need to come with a signature too.
To learn more about this feature, explore the latest CDAC post.
This document explains how to configure the app signing feature and how its enablement can change UPM's behavior.
On this page:
UPM version differences in configuration
When app signing was introduced in UPM 7.1, it was disabled by default, allowing Data Center products to run as usual without any configuration changes.
Starting with UPM 8.0, the feature is enabled by default for all new app installations. This means that to keep installing new apps, you must either configure the location of the trust store folder or disable the app signing feature.
The table below lists the UPM version bundled with major Data Center product versions (some of them are not released yet).
Product | UPM 7.1.x | UPM 8.0.0 and later |
---|---|---|
Bamboo | 11 and earlier | 12 and later |
Bitbucket | 9 and earlier | 10 and later |
Confluence | 9 and earlier | 10 and later |
Crowd | 6 and earlier | 7 and later |
Jira | 10 and earlier | 11 and later |
Configuration resources
The app signature check requires the following resources to work:
- Configuration properties. UPM uses properties to enable or disable the feature, and offers the ability to do this for all apps, or depending on the app’s origin.
- The trust store folder that contains trusted certificates.
If the trust store folder is empty while the app signing feature is enabled, new apps won’t be installed due to a signature check failure.
Configuration resources location
Location properties
UPM uses system properties to locate its configuration and resources. These properties depend on the version and have default values listed in the following table.
System property | UPM 7.1 | UPM 8.0 | Default value |
---|---|---|---|
atlassian.upm.configuration.directory | Location of the configuration directory | Location of the configuration directory | upmconfig |
atlassian.upm.configuration.file | ignored | Location of the optional configuration file | upmconfig/upm.properties |
atlassian.upm.truststore.directory | ignored | Location of the trust store folder where the certificates are stored | upmconfig/truststore |
The default values for the file and trust store system properties are set to ensure backward compatibility; if you have a running configuration for UPM 7.1, then UPM 8.0 will pick it up without any change.
The resource locations are displayed on the Manage apps and Trusted Certificates pages in the admin panel. This can be a convenient way to find the default locations when no system property is set.
In UPM 8.0, the configuration file property can be set to target any file, including the main product’s configuration file, allowing centralization of all the configuration in a single place.
If you decide to do that, the file will have to comply with UPM’s safety checks.
Location resolution
The actual location of a configuration resource is resolved from the system property value as follows:
- If this value is an absolute path, then it is used as is.
- If the value is a relative path, then it is resolved relatively from:
- the product’s Shared home directory if it is defined
- the product’s home directory if it is defined
- the current directory (depends on the running process)
UPM 7.1 | UPM 8.0 | |
---|---|---|
Resolution of the configuration file and the trust store folder | Both are resolved relatively to the UPM configuration directory, which you can specify using the | The configuration file and the trust store folder can be resolved independently. |
The configuration file resolution | Assuming that the configuration directory is resolved to | The configuration file is resolved from the value of |
The trust store folder resolution | Assuming that the configuration directory is resolved to /upm/configuration/directory , then the trust store folder is resolved to /upm/configuration/directory/truststore | The trust store folder is resolved from the value of |
If the atlassian.upm.configuration.directory
system property is set to a non-null value, then UPM 8.0 will use it as UPM 7.1 would have.
Configuration properties
Configuration properties are read from different sources depending on UPM’s version:
- In UPM 7.1, properties are read from the UPM configuration file. If they exist, the configuration file and the trust store must be located in the same folder. If the configuration file is missing, the default configuration is applied (that is, the feature is disabled).
- In UPM 8.0 and later, the configuration properties can be read from one of the following:
- configuration file (if present)
- system properties (if the configuration file is missing)
If no properties are found, the default configuration is applied (that is, the feature is enabled, using the default trust store location resolved as explained before). The location of the optional configuration file and the trust store can be set separately.
UPM 8.0 is fully compatible with UPM 7.1 configuration and settings, but it offers more flexible ways of achieving the desired result.
The table below describes the supported configuration properties.
Key | Description |
---|---|
This property is deprecated in UPM 8.0. | Enables the feature
|
| Disables the feature
|
| Disables app signature check for uploaded apps This applies if the feature is globally enabled:
|
| Disables app signature check for apps installed from the Marketplace This applies if the feature is globally enabled:
|
| Disables app signature check for apps installed by the PIP directory scanner This applies if the feature is globally enabled:
|
| Disables app signature check for UPM self-installation. This applies if the feature is globally enabled:
|
This property is available only in UPM 8.0. | An alternate way to set the location of the trust store folder. |
This might look a bit complex, but the intent is to minimize the configuration effort and make it explicit:
In UPM 7.1, the feature is disabled by default, and the admin has to enable it.
In UPM 8.0, the feature is enabled by default, and the admin will have to take action to disable it.
In UPM 8.0, the easiest way to disable the feature is to set the atlassian.upm.signature.check.disabledsystem
property to true
.
Safety check for configuration file and trust store permissions
The configuration file (if it exists) and trust store must meet some permissions and ownership requirements:
The user running the product must NOT own the configuration file, the truststore folder, or any file or folder it contains
The user running the product must NOT have write privileges on the configuration file, the truststore folder, or any file or folder it contains.
If UPM’s safety check detects that these conditions are not met when installing an app, the installation will fail, a warning message will be logged, and an audit log entry will be added.
Configure app signature check
- Create an empty directory called upmconfig in the product’s home directory. For example,
[jira-home]/upmconfig
. - Create an empty directory
upmconfig/truststore
. - Download the certificates provided by Atlassian and copy them to the trust store directory you’ve just created.
- To apply a configuration that differs from the default settings:
- Create an
upm.properties
text file in the upmconfig directory. - Add the desired configuration properties as described in the table above.
- Create an
5. Apply the required file permissions to the configuration folder.
The configuration folder must not belong to the user running the product, and all its content must be read-only for the user running the product.
That’s all! After you restart the service, UPM will detect that its default configuration directory exists and read the properties file, enabling the signature check.
You can add new certificates to the truststore folder at any time, but they must NOT be writable by the user who is running the application. You can customize the location of the configuration folder by setting the atlassian.upm.configuration.directory system property as described previously on this page.
When everything is configured correctly, you’ll see the “Configuration check was successful” message.
If you see an error, refer to App signing troubleshooting.
Update configuration and certificates
Configuration
You can create or edit the configuration file while the product is running.
In UPM 8.0, the system properties are read-only when the product starts, and the configuration read from the configuration file takes precedence over any other configuration. This means that if the feature is disabled using system properties, it can be enabled later by creating the configuration file with the appropriate values.
Certificates
If the feature is enabled, you can add the certificates at any time while the product is running.
Enable the feature with UPM 7.1
In UPM 7.1, the feature is disabled by default.
We assume the instance is running and no system properties were set.
- Create the UPM configuration folder at the default location as explained before.
- Add
atlassian.upm.signature.check.enabled=true
to the upm.propeties file. - Copy Atlassians certificates to the truststore directory.
- Set the correct file permissions, and make sure the user running the product isn't the owner of any file in the configuration folder.
Add certificates with UPM 8.0
In UPM 8.0, the feature is enabled by default, but there are no certificates.
- Create the UPM configuration folder at the default location as explained before.
- Copy Atlassian certificates to the truststore directory.
- Set the correct file permissions, and make sure the user running the product is not the owner of any file in the configuration folder.
Disable the feature with UPM 8.0
In UPM 8.0, the feature is enabled by default.
We assume the product is running and no system properties were set.
- Create the UPM configuration folder at the default location as explained before.
- Add
atlassian.upm.signature.check.disabled=true
to the upm.properties file.
Consequences on other UPM configuration
The app signing feature has been added to re-enable app installation by uploading files to the platform.
By default, the Upload app button was disabled in recent product versions, and administrators could re-enable it by setting the
upm.plugin.upload.enabled
system property to
true
.
The app signature check feature has an impact on this as shown in the following table.
system property value | App signature check feature | App upload feature |
---|---|---|
true | enabled | enabled |
true | disabled | enabled with warnings |
false | disabled | disabled |
false | enabled | disabled |
unspecified | enabled | enabled |
unspecified | disabled | disabled |