Clarify forwarded protocol precedence in Gitea registry diagnostics
This commit is contained in:
parent
7be231409f
commit
6fd5e21008
10
REGISTRY.md
10
REGISTRY.md
@ -43,6 +43,16 @@ Bei einer geänderten Compose-Umgebungsvariable reicht `docker restart` nicht: d
|
||||
|
||||
Neue Release-Workflows prüfen den HTTPS-Realm bereits vor Login und Image-Build mit `node scripts/check-registry.mjs`. Ein erneuter Lauf des alten Tags `v1.0.0` verwendet weiterhin den Workflow dieses Tags; die Serverkorrektur ist auch dafür erforderlich.
|
||||
|
||||
**Gitea 1.22.3: Proxy-Header haben Vorrang.** Der Registry-Code verwendet `GuessCurrentHostURL`; ein vom Proxy angeliefertes `X-Forwarded-Proto: http` übersteuert eine korrekt gesetzte HTTPS-`ROOT_URL`. Danach berücksichtigt Gitea auch `X-Forwarded-Protocol`, `X-Url-Scheme`, `Front-End-Https` und `X-Forwarded-Ssl`. Siehe [Registry-Code](https://github.com/go-gitea/gitea/blob/v1.22.3/routers/api/packages/container/container.go) und [URL-Ermittlung](https://github.com/go-gitea/gitea/blob/v1.22.3/modules/httplib/url.go).
|
||||
|
||||
Wenn Umgebungsvariable und `app.ini` bereits HTTPS enthalten, nicht wiederholt ROOT_URL ändern. Im Gitea-Container ohne Proxy prüfen:
|
||||
|
||||
```sh
|
||||
wget -S -O /dev/null http://127.0.0.1:3000/v2/ 2>&1
|
||||
```
|
||||
|
||||
HTTP 401 ist dabei erwartbar. Liefert der direkte Aufruf einen HTTPS-Realm, der öffentliche Aufruf aber HTTP, liegt der Unterschied in der Proxy-Kette. Der vertrauenswürdige Proxy muss für externe HTTPS-Aufrufe das ursprüngliche Protokoll korrekt an Gitea weiterreichen. Bei Cloudflare auch SSL/TLS-Modus und die Verbindung zum Origin prüfen; `Full (strict)` benötigt ein gültiges Origin-Zertifikat. Keine ungeprüften Client-Header pauschal vertrauen. Die konkrete Korrektur hängt von Nginx, Traefik, Caddy bzw. Cloudflare Tunnel ab.
|
||||
|
||||
```bash
|
||||
curl -sS -D - -o /dev/null https://git.jfritzsche.de/v2/
|
||||
```
|
||||
|
||||
@ -13,7 +13,9 @@ if (realm !== "https://git.jfritzsche.de/v2/token") {
|
||||
`Registry advertises an unexpected authentication realm: ${realm ?? "missing"}. ` +
|
||||
"Set Gitea [server] ROOT_URL=https://git.jfritzsche.de/ " +
|
||||
"(Docker: GITEA__server__ROOT_URL), recreate the Gitea container when changing its environment, " +
|
||||
"and verify the live /v2/ challenge. No credentials were sent by this check.",
|
||||
"and check the proxy: in Gitea 1.22.3 forwarded scheme headers override ROOT_URL. " +
|
||||
"The trusted proxy must pass X-Forwarded-Proto=https for the public HTTPS request. " +
|
||||
"Verify the live /v2/ challenge. No credentials were sent by this check.",
|
||||
);
|
||||
}
|
||||
console.log("Registry HTTPS authentication endpoint verified.");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user