My domain is: (for example) www.kuechen-knauseder.de, lessjsservice.ieq-systems.de, www.worminghausen-elektro.de
I ran this command: MyTask = GetHttpAnswer(_lastOrder.Authorizations[AuthzCounter].Details);
(Please see the function below)
It produced this output: (GetHttpAnswer): Error on GetHttpAnswer: Rate limit for '/directory' reached
My web server is (include version): IIS 10
The operating system my web server runs on is (include version): Windows Server 2019 / 2022
My hosting provider, if applicable, is: not relevant
I can login to a root shell on my machine (yes or no, or I don't know): yes
I'm using a control panel to manage my site (no, or provide the name and version of the control panel): no
The version of my client is (e.g. output of certbot --version
or certbot-auto --version
if you're using Certbot): PKISharp/ACMESharpCore (.NET Standard) v2.2.0.148
We retrieve SSL certificates for some thousand websites.
Since some weeks many / most of our certificate requests (new certificates and certificate renewals) are denied because âRate limit for '/directory' reachedâ.
This error hat decreased drastically since 3 weeks.
In the meantime, there are only few certificate renewals and almost no new certificate requests successful.
We donât understand, why we get almost always this rate limit for â/directoryâ
The error message âRate limit for '/directory'â should only appear if there are more than 40 requests per second.
We donât reach this limit at any time!
But due to this error we actually canât get only few certificate renewals and almost no new certificates.
Please help us urgent!
Function âGetHttpAnswerâ
private async System.Threading.Tasks.Task<string> GetHttpAnswer(ACMESharp.Protocol.Resources.Authorization actAuth)
{
string Result = string.Empty;
try
{
PkiJwsTool AcmeSigner = new PkiJwsTool(256);
AcmeSigner.Import(_account.JwsSigner);
using (AcmeProtocolClient AcmeClient = new AcmeProtocolClient(AcmeUri, signer: AcmeSigner, acct: _account.Details, usePostAsGet: true))
{
ServiceDirectory AcmeDir = await AcmeClient.GetDirectoryAsync();
AcmeClient.Directory = AcmeDir;
await AcmeClient.GetNonceAsync();
Challenge HttpChallenge = actAuth.Challenges.First(x => x.Type == ACMESharp.Authorizations.Http01ChallengeValidationDetails.Http01ChallengeType);
Challenge UpdatedHttpChallenge = await AcmeClient.AnswerChallengeAsync(HttpChallenge.Url);
OrderDetails AcmeOrderDetails = await AcmeClient.GetOrderDetailsAsync(_lastOrder.Details.OrderUrl, _lastOrder.Details);
_lastOrder.Details = AcmeOrderDetails;
Repo.Saveorder(_lastOrder);
await RefreshOrderAuthorizations(AcmeClient);
Repo.Saveorder(_lastOrder);
await DecodeOrderAuthorizationChallenges(AcmeSigner);
Repo.Saveorder(_lastOrder);
};
Result = "true";
}
catch (Exception ex)
{
Result = "Fehler bei GetHttpAnswer: " + ex.Message + " " + ex.InnerException;
}
return Result;
}