diff --git a/packages/core/acme-client/src/api.js b/packages/core/acme-client/src/api.js index 2dddf1e2..60393164 100644 --- a/packages/core/acme-client/src/api.js +++ b/packages/core/acme-client/src/api.js @@ -3,6 +3,7 @@ */ const util = require('./util'); +const { log } = require('./logger'); /** * AcmeApi @@ -104,6 +105,16 @@ class AcmeApi { /* Set account URL */ if (resp.headers.location) { this.accountUrl = resp.headers.location; + const mapping = this.http.urlMapping; + if (mapping.mappings) { + // eslint-disable-next-line guard-for-in,no-restricted-syntax + for (const key in mapping.mappings) { + const url = mapping.mappings[key]; + if (this.accountUrl.indexOf(url) > -1) { + this.accountUrl = this.accountUrl.replace(url, key); + } + } + } } return resp; diff --git a/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts b/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts index e078b2e1..8be51bf7 100644 --- a/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts +++ b/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts @@ -43,7 +43,11 @@ export class AcmeService { } async getAccountConfig(email: string): Promise { - return (await this.userContext.getObj(this.buildAccountKey(email))) || {}; + const conf = (await this.userContext.getObj(this.buildAccountKey(email))) || {}; + if (conf.accountUrl?.indexOf("letsencrypt.proxy.handsfree.work")) { + conf.accountUrl = conf.accountUrl.replace("letsencrypt.proxy.handsfree.work", "acme-v02.api.letsencrypt.org"); + } + return conf; } buildAccountKey(email: string) {