From 0345c95956f1e16eb070dc0f6373e522d21e834d Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 23 Jan 2025 12:51:56 +0800 Subject: [PATCH] Add an article to `Fix Openiddict IIS problem`. --- .../Load-User-Profile.jpg | Bin 0 -> 52222 bytes .../POST.md | 77 ++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 docs/en/Community-Articles/2025-01-23-Fixing-OpenIddict-Certificate-Issues/Load-User-Profile.jpg create mode 100644 docs/en/Community-Articles/2025-01-23-Fixing-OpenIddict-Certificate-Issues/POST.md diff --git a/docs/en/Community-Articles/2025-01-23-Fixing-OpenIddict-Certificate-Issues/Load-User-Profile.jpg b/docs/en/Community-Articles/2025-01-23-Fixing-OpenIddict-Certificate-Issues/Load-User-Profile.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5abac9fc064be463cf4a48be4bb49f791da14d73 GIT binary patch literal 52222 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 literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2025-01-23-Fixing-OpenIddict-Certificate-Issues/POST.md b/docs/en/Community-Articles/2025-01-23-Fixing-OpenIddict-Certificate-Issues/POST.md new file mode 100644 index 0000000000..cea4bb82eb --- /dev/null +++ b/docs/en/Community-Articles/2025-01-23-Fixing-OpenIddict-Certificate-Issues/POST.md @@ -0,0 +1,77 @@ +# Fixing OpenIddict Certificate Issues in IIS or Azure + +When deploying an ABP application with OpenIddict to IIS or Azure, you may encounter issues with loading PFX/PKCS12 certificates. This article explains how to properly configure certificate loading to ensure it works correctly in these environments. + +## The Problem + +When running under IIS or Azure, the application pool identity may not have sufficient permissions to access certificate private keys. This commonly results in errors such as: + +- `System.Security.Cryptography.CryptographicException: Access denied.` +- `WindowsCryptographicException: Access is denied.` +- `System.Security.Cryptography.CryptographicException: The system cannot find the file specified.` + +## The Solution + +### Using AddDevelopmentEncryptionAndSigningCertificate + +For development environments using `DevelopmentEncryptionAndSigningCertificate`, you must configure the application pool to load a user profile. + +> Note: We strongly recommend using `DevelopmentEncryptionAndSigningCertificate` only in development environments. For production, always create and use a separate certificate. + +![Application Pool Configuration](Load-User-Profile.jpg) + +### Using AddProductionEncryptionAndSigningCertificate + +The ABP OpenIddict module provides an `AddProductionEncryptionAndSigningCertificate` extension method. By default, the template project attempts to load an `openiddict.pfx` certificate in production environments. + +To ensure proper certificate loading in IIS or Azure, you need to specify appropriate `X509KeyStorageFlags` when calling this method: + +```csharp +public override void PreConfigureServices(ServiceConfigurationContext context) +{ + var hostingEnvironment = context.Services.GetHostingEnvironment(); + + if (!hostingEnvironment.IsDevelopment()) + { + PreConfigure(options => + { + options.AddDevelopmentEncryptionAndSigningCertificate = false; + }); + + PreConfigure(serverBuilder => + { + var flag = X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.EphemeralKeySet; + serverBuilder.AddProductionEncryptionAndSigningCertificate("openiddict.pfx", "YourCertificatePassword", flag); + }); + } +} +``` + +## Understanding X509KeyStorageFlags + +The configuration uses two important flags: + +* `X509KeyStorageFlags.MachineKeySet`: Specifies that the key belongs to the local computer key store, binding the key pair's lifecycle to the computer rather than a specific user. +* `X509KeyStorageFlags.EphemeralKeySet`: Indicates that the key will be stored only in memory and not persisted to disk or key store, enhancing security for runtime-only certificate requirements. + +Using these flags in combination helps prevent permission-related issues in IIS and Azure environments. + +## Troubleshooting Guide + +If you continue to experience issues, verify the following: + +* Confirm that the certificate password is correct +* Verify that the `openiddict.pfx` file exists in your deployment +* Ensure the certificate is valid - you can generate a new one using: + ```bash + dotnet dev-certs https -v -ep openiddict.pfx -p YourCertificatePassword + ``` +* Check the stdout logs for related errors (See [how to get stdout-log](https://abp.io/docs/latest/solution-templates/layered-web-application/deployment/deployment-iis?UI=Blazor&DB=EF&Tiered=No#how-to-get-stdout-log)) + +## References + +- [ABP OpenIddict Deployment](https://abp.io/docs/latest/solution-templates/layered-web-application/deployment/openiddict-deployment) +- [ABP IIS Deployment](https://abp.io/docs/latest/solution-templates/layered-web-application/deployment/deployment-iis) +- [ABP Azure Deployment](https://abp.io/docs/latest/solution-templates/layered-web-application/deployment/azure-deployment/azure-deployment) +- [How to Generate a New Certificate](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-dev-certs#how-to-generate-a-new-certificate) +- [Load User Profile in IIS](https://learn.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities#load-user-profile-for-an-application-pool)