Skip to content

Commit f991807

Browse files
authored
Try to fix ACME path when renew (go-gitea#33668)
Try to fix go-gitea#32191
1 parent 9e75c54 commit f991807

File tree

2 files changed

+26
-15
lines changed

2 files changed

+26
-15
lines changed

cmd/web_acme.go

+10-6
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,6 @@ func runACME(listenAddr string, m http.Handler) error {
5454
altTLSALPNPort = p
5555
}
5656

57-
// FIXME: this path is not right, it uses "AppWorkPath" incorrectly, and writes the data into "AppWorkPath/https"
58-
// Ideally it should migrate to AppDataPath write to "AppDataPath/https"
59-
certmagic.Default.Storage = &certmagic.FileStorage{Path: setting.AcmeLiveDirectory}
60-
magic := certmagic.NewDefault()
6157
// Try to use private CA root if provided, otherwise defaults to system's trust
6258
var certPool *x509.CertPool
6359
if setting.AcmeCARoot != "" {
@@ -67,7 +63,13 @@ func runACME(listenAddr string, m http.Handler) error {
6763
log.Warn("Failed to parse CA Root certificate, using default CA trust: %v", err)
6864
}
6965
}
70-
myACME := certmagic.NewACMEIssuer(magic, certmagic.ACMEIssuer{
66+
// FIXME: this path is not right, it uses "AppWorkPath" incorrectly, and writes the data into "AppWorkPath/https"
67+
// Ideally it should migrate to AppDataPath write to "AppDataPath/https"
68+
// And one more thing, no idea why we should set the global default variables here
69+
// But it seems that the current ACME code needs these global variables to make renew work.
70+
// Otherwise, "renew" will use incorrect storage path
71+
certmagic.Default.Storage = &certmagic.FileStorage{Path: setting.AcmeLiveDirectory}
72+
certmagic.DefaultACME = certmagic.ACMEIssuer{
7173
CA: setting.AcmeURL,
7274
TrustedRoots: certPool,
7375
Email: setting.AcmeEmail,
@@ -77,8 +79,10 @@ func runACME(listenAddr string, m http.Handler) error {
7779
ListenHost: setting.HTTPAddr,
7880
AltTLSALPNPort: altTLSALPNPort,
7981
AltHTTPPort: altHTTPPort,
80-
})
82+
}
8183

84+
magic := certmagic.NewDefault()
85+
myACME := certmagic.NewACMEIssuer(magic, certmagic.DefaultACME)
8286
magic.Issuers = []certmagic.Issuer{myACME}
8387

8488
// this obtains certificates or renews them if necessary

modules/setting/server.go

+16-9
Original file line numberDiff line numberDiff line change
@@ -169,20 +169,24 @@ func loadServerFrom(rootCfg ConfigProvider) {
169169
HTTPAddr = sec.Key("HTTP_ADDR").MustString("0.0.0.0")
170170
HTTPPort = sec.Key("HTTP_PORT").MustString("3000")
171171

172+
// DEPRECATED should not be removed because users maybe upgrade from lower version to the latest version
173+
// if these are removed, the warning will not be shown
174+
if sec.HasKey("ENABLE_ACME") {
175+
EnableAcme = sec.Key("ENABLE_ACME").MustBool(false)
176+
} else {
177+
deprecatedSetting(rootCfg, "server", "ENABLE_LETSENCRYPT", "server", "ENABLE_ACME", "v1.19.0")
178+
EnableAcme = sec.Key("ENABLE_LETSENCRYPT").MustBool(false)
179+
}
180+
172181
Protocol = HTTP
173182
protocolCfg := sec.Key("PROTOCOL").String()
183+
if protocolCfg != "https" && EnableAcme {
184+
log.Fatal("ACME could only be used with HTTPS protocol")
185+
}
186+
174187
switch protocolCfg {
175188
case "https":
176189
Protocol = HTTPS
177-
178-
// DEPRECATED should not be removed because users maybe upgrade from lower version to the latest version
179-
// if these are removed, the warning will not be shown
180-
if sec.HasKey("ENABLE_ACME") {
181-
EnableAcme = sec.Key("ENABLE_ACME").MustBool(false)
182-
} else {
183-
deprecatedSetting(rootCfg, "server", "ENABLE_LETSENCRYPT", "server", "ENABLE_ACME", "v1.19.0")
184-
EnableAcme = sec.Key("ENABLE_LETSENCRYPT").MustBool(false)
185-
}
186190
if EnableAcme {
187191
AcmeURL = sec.Key("ACME_URL").MustString("")
188192
AcmeCARoot = sec.Key("ACME_CA_ROOT").MustString("")
@@ -210,6 +214,9 @@ func loadServerFrom(rootCfg ConfigProvider) {
210214
deprecatedSetting(rootCfg, "server", "LETSENCRYPT_EMAIL", "server", "ACME_EMAIL", "v1.19.0")
211215
AcmeEmail = sec.Key("LETSENCRYPT_EMAIL").MustString("")
212216
}
217+
if AcmeEmail == "" {
218+
log.Fatal("ACME Email is not set (ACME_EMAIL).")
219+
}
213220
} else {
214221
CertFile = sec.Key("CERT_FILE").String()
215222
KeyFile = sec.Key("KEY_FILE").String()

0 commit comments

Comments
 (0)