Conversation
There was a problem hiding this comment.
Pull Request Overview
This PR replaces a legacy CA Gateway template with a complete ACME (Automated Certificate Management Environment) AnyCA Gateway REST plugin implementation. The plugin enables automated certificate enrollment from various ACME providers like Let's Encrypt, Google CAS, ZeroSSL, and Buypass using DNS-01 challenges.
Key changes include:
- Complete removal of template CA gateway code and replacement with production ACME plugin
- Implementation of modular DNS provider system supporting Google Cloud DNS, AWS Route 53, Azure DNS, Cloudflare, and NS1
- ACME protocol client with External Account Binding (EAB) support and robust error handling
Reviewed Changes
Copilot reviewed 42 out of 43 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| integration-manifest.json | Updated plugin metadata with ACME-specific configuration parameters |
| docsource/configuration.md | Added comprehensive configuration documentation for ACME providers and DNS services |
| TestProgram/ | Added test program for plugin validation with configuration management |
| AcmeCaPlugin/ | Core plugin implementation with ACME client, DNS providers, and account management |
| README.md | Replaced template readme with detailed ACME plugin documentation |
Comments suppressed due to low confidence (1)
AcmeCaPlugin/Clients/DNS/AzureDnsProvider.cs:54
- There's a spelling error - 'Itentity' should be 'Identity'.
var zone = await GetDnsZoneAsync(recordName);
|
|
||
| --- | ||
|
|
||
| ### 🔁 Enrollment Flow Summary |
There was a problem hiding this comment.
There's a typo in 'Inital Push' in the PR title - it should be 'Initial Push'.
| "description": "Azure DNS: ClientId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | ||
| }, | ||
| { | ||
| "name": "Azure_ClientSecret", | ||
| "description": "Azure DNS: ClientSecret only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | ||
| }, | ||
| { | ||
| "name": "Azure_SubscriptionId", | ||
| "description": "Azure DNS: SubscriptionId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | ||
| }, | ||
| { | ||
| "name": "Azure_TenantId", | ||
| "description": "Azure DNS: TenantId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" |
There was a problem hiding this comment.
There's a spelling error in the description - 'Itentity' should be 'Identity'.
| "description": "Azure DNS: ClientId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_ClientSecret", | |
| "description": "Azure DNS: ClientSecret only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_SubscriptionId", | |
| "description": "Azure DNS: SubscriptionId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_TenantId", | |
| "description": "Azure DNS: TenantId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| "description": "Azure DNS: ClientId only if using Azure DNS and Not Managed Identity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_ClientSecret", | |
| "description": "Azure DNS: ClientSecret only if using Azure DNS and Not Managed Identity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_SubscriptionId", | |
| "description": "Azure DNS: SubscriptionId only if using Azure DNS and Not Managed Identity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_TenantId", | |
| "description": "Azure DNS: TenantId only if using Azure DNS and Not Managed Identity in Azure (Optional)" |
| "description": "Azure DNS: ClientId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | ||
| }, | ||
| { | ||
| "name": "Azure_ClientSecret", | ||
| "description": "Azure DNS: ClientSecret only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | ||
| }, | ||
| { | ||
| "name": "Azure_SubscriptionId", | ||
| "description": "Azure DNS: SubscriptionId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | ||
| }, | ||
| { | ||
| "name": "Azure_TenantId", | ||
| "description": "Azure DNS: TenantId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" |
There was a problem hiding this comment.
There's a spelling error in the description - 'Itentity' should be 'Identity'.
| "description": "Azure DNS: ClientId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_ClientSecret", | |
| "description": "Azure DNS: ClientSecret only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_SubscriptionId", | |
| "description": "Azure DNS: SubscriptionId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_TenantId", | |
| "description": "Azure DNS: TenantId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| "description": "Azure DNS: ClientId only if using Azure DNS and Not Managed Identity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_ClientSecret", | |
| "description": "Azure DNS: ClientSecret only if using Azure DNS and Not Managed Identity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_SubscriptionId", | |
| "description": "Azure DNS: SubscriptionId only if using Azure DNS and Not Managed Identity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_TenantId", | |
| "description": "Azure DNS: TenantId only if using Azure DNS and Not Managed Identity in Azure (Optional)" |
| "description": "Azure DNS: ClientId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | ||
| }, | ||
| { | ||
| "name": "Azure_ClientSecret", | ||
| "description": "Azure DNS: ClientSecret only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | ||
| }, | ||
| { | ||
| "name": "Azure_SubscriptionId", | ||
| "description": "Azure DNS: SubscriptionId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | ||
| }, | ||
| { | ||
| "name": "Azure_TenantId", | ||
| "description": "Azure DNS: TenantId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" |
There was a problem hiding this comment.
There's a spelling error in the description - 'Itentity' should be 'Identity'.
| "description": "Azure DNS: ClientId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_ClientSecret", | |
| "description": "Azure DNS: ClientSecret only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_SubscriptionId", | |
| "description": "Azure DNS: SubscriptionId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_TenantId", | |
| "description": "Azure DNS: TenantId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| "description": "Azure DNS: ClientId only if using Azure DNS and Not Managed Identity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_ClientSecret", | |
| "description": "Azure DNS: ClientSecret only if using Azure DNS and Not Managed Identity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_SubscriptionId", | |
| "description": "Azure DNS: SubscriptionId only if using Azure DNS and Not Managed Identity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_TenantId", | |
| "description": "Azure DNS: TenantId only if using Azure DNS and Not Managed Identity in Azure (Optional)" |
| "description": "Azure DNS: ClientId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | ||
| }, | ||
| { | ||
| "name": "Azure_ClientSecret", | ||
| "description": "Azure DNS: ClientSecret only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | ||
| }, | ||
| { | ||
| "name": "Azure_SubscriptionId", | ||
| "description": "Azure DNS: SubscriptionId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | ||
| }, | ||
| { | ||
| "name": "Azure_TenantId", | ||
| "description": "Azure DNS: TenantId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" |
There was a problem hiding this comment.
There's a spelling error in the description - 'Itentity' should be 'Identity'.
| "description": "Azure DNS: ClientId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_ClientSecret", | |
| "description": "Azure DNS: ClientSecret only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_SubscriptionId", | |
| "description": "Azure DNS: SubscriptionId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_TenantId", | |
| "description": "Azure DNS: TenantId only if using Azure DNS and Not Managed Itentity in Azure (Optional)" | |
| "description": "Azure DNS: ClientId only if using Azure DNS and Not Managed Identity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_ClientSecret", | |
| "description": "Azure DNS: ClientSecret only if using Azure DNS and Not Managed Identity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_SubscriptionId", | |
| "description": "Azure DNS: SubscriptionId only if using Azure DNS and Not Managed Identity in Azure (Optional)" | |
| }, | |
| { | |
| "name": "Azure_TenantId", | |
| "description": "Azure DNS: TenantId only if using Azure DNS and Not Managed Identity in Azure (Optional)" |
| // Create signing input and compute signature | ||
| var signingInput = $"{protectedB64}.{payloadB64}"; | ||
| var signature = signFunc(Encoding.UTF8.GetBytes(signingInput)); | ||
| var signatureB64 = CryptoHelper.Base64.UrlEncode(signature); |
There was a problem hiding this comment.
There's a typo in the license file - 'Bryan Livingston' appears to be incorrect for this Keyfactor plugin.
No description provided.