UiPath Documentation
studio
2025.10
false
Studio user guide

Signing Packages

Sign NuGet packages published from Studio using author or repository signing, and sign the assemblies Studio generates, to ensure the security and integrity of processes and libraries.

Package signing is available with the purpose of ensuring the security and integrity of processes and libraries published from Studio.

NuGet offers two ways in which packages can be signed, either by an author or by a repository.

Enforcing the Use of Signed Packages​

To enforce the use of signed packages, the signatureValidationMode parameter in the Nuget.config file must be set to require. The file is located at %ProgramFiles%\UiPath\Studio. You can do this in one of two ways:

  • During installation, by installing from the command line with the option ENFORCE_SIGNED_EXECUTION=1. For example, the following command installs Studio, a Robot as a Windows service, and enforces the usage of signed packaged in your UiPath environment: UiPathStudio.msi ADDLOCAL=DesktopFeature,Studio,Robot,RegisterService ENFORCE_SIGNED_EXECUTION=1.
  • After installation, by manually editing the Nuget.config file. If you set the parameter after installation, the changes take effect after you:
    1. Restart the Robot Service.
    2. Remove all existing .NuGet packages from %ProgramFiles%\UiPath\Studio\Packages and %userprofile%\.nuget\packages.
    3. Restart Studio/Assistant.

By default, UiPath packages are repository and author-signed. This means that such packages can be downloaded and installed using Manage Packages without having to perform any additional actions. For information on how to add additional trusted authors, repositories, and/or owners, see following sections on this page.

Important:

When multiple feeds are used, NuGet chooses the feed that responds the fastest. If one of the feeds does not include signed packages and dependencies, the Robot might receive a package or dependency that is not signed, causing the automation to fail. In order to avoid this, make sure that all configured feeds have packages and dependencies signed.

Adding Trusted Sources​

To download, install, and run packages signed with a certain certificate, add the certificate as a trusted source. To do so, modify the nuget.config file in the installation folder, mainly the section <trustedSigners>.

Adding a Trusted Author​

To add a trusted author, you need to open the NuGet.config file located at %ProgramFiles%\UiPath\Studio\NuGet.config. Then, provide the certificatefingerprint and hashAlgorithm. Check this page to get more information about the certificate fingerprint.

Set the allowUntrustedRoot to true or false:

  • allowUntrustedRoot = "true" - trusted signer should be allowed to chain to an untrusted root.
  • allowUntrustedRoot = "false" - trusted signer should not be allowed to chain to an untrusted root.

The entry should be similar to the example below:

<trustedSigners>
<author name="UiPath">
<certificate fingerprint="1234512345123451234512345123123123123123123123123123112312312E5" hashAlgorithm="SHA256" allowUntrustedRoot="true"/>
</author>
</trustedSigners>
<trustedSigners>
<author name="UiPath">
<certificate fingerprint="1234512345123451234512345123123123123123123123123123112312312E5" hashAlgorithm="SHA256" allowUntrustedRoot="true"/>
</author>
</trustedSigners>

For more information on adding UiPath as a trusted signer, see Package Signature Verification in the Robot guide.

Adding a Trusted Repository​

Adding a trusted repository is done roughly the same as adding an author, with the difference that the serviceIndex must also be added.

Below is an example of a trusted repository added to the NuGet.config file:

<trustedSigners>    
<repository name="UiPath Repository" serviceIndex="https://uipath.repository">
<certificate fingerprint="1234512345123451234512345123123123123123123123123123112312312E5" hashAlgorithm="SHA256" allowUntrustedRoot="true" />
</repository>
</trustedSigners>
<trustedSigners>    
<repository name="UiPath Repository" serviceIndex="https://uipath.repository">
<certificate fingerprint="1234512345123451234512345123123123123123123123123123112312312E5" hashAlgorithm="SHA256" allowUntrustedRoot="true" />
</repository>
</trustedSigners>

Adding Trusted Owners​

A repository may have multiple author-signed packages. In this case, the <owners> tag can be used for allowing only packages signed by trusted authors to be installed.

Add the trusted authors between the <owners> tags, as in the example below:

<trustedSigners>
<repository name="UiPath Repository" serviceIndex="https://uipath.repository">
<certificate fingerprint="1234512345123451234512345123123123123123123123123123112312312E5" hashAlgorithm="SHA256" allowUntrustedRoot="true" />
<owners>Author1;Author2</owners> 
</repository>
</trustedSigners>
<trustedSigners>
<repository name="UiPath Repository" serviceIndex="https://uipath.repository">
<certificate fingerprint="1234512345123451234512345123123123123123123123123123112312312E5" hashAlgorithm="SHA256" allowUntrustedRoot="true" />
<owners>Author1;Author2</owners> 
</repository>
</trustedSigners>

Signing a Package​

  1. In Studio, package signing can be done from the Publish window, the Certificate signing tab, for both processes and libraries.

  2. In the Certificate signing tab, add the certificate path on your local machine. Use the button to navigate to the path if needed button to navigate to the path if needed. Only .pfx and .p12 certificate file formats are accepted.

  3. Next, type in the Certificate Password and add an optional certificate Timestamper if needed. Select Publish. The resulting .nupkg file is signed with a certificate and a timestamper, if indicated.

Result​

The package is published as a signed .nupkg file.

Timestamps are a secure way of keeping track of the date and time when a package was signed. To learn more about timestamping in the context of NuGet package signing, check out this link.

If the certificate timestamper is invalid, an error message containing the project name is thrown in Studio after clicking the Publish button. A similar error message is also logged in the Output panel.

Note:

If signature verification is NOT enforced, processes created with Studio prior to v2019.4 are still executed, regardless if they are signed or not.

Use the Mass Update Command Line tool to sign multiple packages and then publish them to a location.

Note:

Having an unsigned dependency in the project may prevent other dependencies from being resolved when using the Repair Dependency feature. Remove the unsigned package from the project to resolve signed dependencies.

Signing Assemblies​

Studio can sign the assemblies it generates for a project with your own code signing certificate, both in published packages and when you run or debug the project. Environments with application control policies that allow only signed code can then load these assemblies.

Assembly signing requires one of the following signing tools:

  • signtool.exe - Set its path in Sign Tool Path in Settings > Locations, or in the SIGNTOOL_PATH environment variable. Sign Tool Path takes precedence over the environment variable.
  • osslsigncode - Set its path in the OSSLSIGNCODE_PATH environment variable. It is used when signtool is not configured.

Signing the assemblies of a published package​

  1. In Settings > Locations, set Sign Tool Path to the path of signtool.exe.
  2. In the Publish window, open the Certificate signing tab and enter the certificate details, as described in Signing a Package.
  3. Select Sign assemblies, and then select Publish.

The assemblies in the package are signed with the certificate, password, and timestamper from the Certificate signing tab before the package is created. The Sign assemblies option is available only when Sign Tool Path points to an existing file. To pre-fill the certificate path in the Publish window, set Default Publish Certificate in Settings > Locations.

When you publish from the command line, use the --sign-assemblies option together with --cer-path. For more information, refer to About Publishing Automation Projects.

Signing assemblies when running and debugging​

  1. In Settings > Locations, set Dynamic DLLs Certificate to the path of a .pfx or .p12 certificate.
  2. Run or debug the project.
  3. In the Certificate Password dialog, enter the password of the certificate.

Studio copies the assemblies compiled for the project to the .local_signed folder, signs them, and runs the project from the signed copies. Only the assemblies that changed since the previous run are signed again. The certificate password is stored in Windows Credential Manager. If you cancel the Certificate Password dialog, the execution does not start. The .local_signed folder is not included in published packages.

Signing assemblies when running and debugging is available for projects with the Windows and cross-platform compatibility.

Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated