Page 1 of 1

Bitte um Hilfe zu Reverse Proxy + Letsencrypt

Posted: Tue 23. Jan 2024, 11:31
by bernhard
Ich betreibe ein Uptime Kuma hinter einem Reverse Proxy. Funktioniert wunderbar, nur leider kann LetsEncrypt keine Zertifikate mehr ausstellen:

Code: Select all

[23-Jan-2024 10:19:05] INFO | check domain "example.com'
[23-Jan-2024 10:19:05] INFO | certificate is valid until 2024-02-03 16:45:10 (11 days left)
[23-Jan-2024 10:19:05] INFO | certificate is in renewal period
[23-Jan-2024 10:19:05] INFO | renew cert
[23-Jan-2024 10:19:05] INFO | Using certificate authority: "https://acme-v02.api.letsencrypt.org/" (PRODUCTION).
[23-Jan-2024 10:19:05] INFO | Getting endpoint URLs.
[23-Jan-2024 10:19:05] INFO | Account "foo" already registered. Continue.
[23-Jan-2024 10:19:05] INFO | Requesting Key ID.
[23-Jan-2024 10:19:05] INFO | Sending signed request to "https://acme-v02.api.letsencrypt.org/acme/new-acct".
[23-Jan-2024 10:19:06] INFO | Start certificate generation.
[23-Jan-2024 10:19:06] INFO | Token stored at: /home/keyhelp/www/.well-known/acme-challenge/local-check-123.456
[23-Jan-2024 10:19:06] INFO | URL: http://example.com/.well-known/acme-challenge/local-check-123.456 | HTTP code: 200 | HTTP body (first 100 chars): <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8" />    <meta name="viewport" conte
[23-Jan-2024 10:19:06] ERROR | a Let's Encrypt error occurred: Local resolving checks failed for domain "example.com". Please ensure that your domain is locally resolvable!
Mein Setup sieht so aus: Regeln für HTTP sind leer, Regeln für HTTPS folgen, HTTP-->HTTPS Weiterleitung aktiv.

Für HTTPS habe ich folgende zwei Varianten versucht:

Code: Select all

ProxyPassMatch ^/.well-known/.* !

Code: Select all

ProxyPass /.well-known !
Danach dann immer die Regeln für den Proxy von Uptime Kuma.

Hat jemand ne Idee, was da nicht passt und wie es passend gemacht werden kann? Danke!

Re: Bitte um Hilfe zu Reverse Proxy + Letsencrypt

Posted: Tue 23. Jan 2024, 11:57
by Jolinar
bernhard wrote: Tue 23. Jan 2024, 11:31 Für HTTPS habe ich folgende zwei Varianten versucht:
Gib uns bitte den kompletten Block an Apache Anweisungen, die du eingetragen hast.

Re: Bitte um Hilfe zu Reverse Proxy + Letsencrypt

Posted: Tue 23. Jan 2024, 12:18
by bernhard

Code: Select all

# dont proxy letsencrypt requests
ProxyPass /.well-known !

# uptime kuma directives
ProxyPass / http://localhost:3001/
RewriteEngine on
RewriteCond %{HTTP:Upgrade} =websocket
RewriteRule /(.*) ws://localhost:3001/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket
RewriteRule /(.*) http://localhost:3001/$1 [P,L]

Re: Bitte um Hilfe zu Reverse Proxy + Letsencrypt

Posted: Tue 23. Jan 2024, 12:20
by Jolinar
Ändere mal die erste Zeile (nach dem Comment) in:

Code: Select all

<IfModule mod_proxy.c>
        ProxyPass /.well-known/acme-challenge !
</IfModule>

Alias /.well-known/acme-challenge /home/keyhelp/www/.well-known/acme-challenge

Re: Bitte um Hilfe zu Reverse Proxy + Letsencrypt

Posted: Tue 23. Jan 2024, 13:18
by bernhard
Leider nein, gleicher Fehler :(

Re: Bitte um Hilfe zu Reverse Proxy + Letsencrypt

Posted: Tue 23. Jan 2024, 13:23
by bernhard
Ich hab auch schon versucht das "local domain name resolving" auszuschalten... Dann bekomm ich diesen Fehler:

Code: Select all

[23-Jan-2024 12:19:55] INFO | Sending signed request to "https://acme-v02.api.letsencrypt.org/acme/chall-v3/307269758956/6njTuw".
[23-Jan-2024 12:19:55] ERROR | a Let's Encrypt error occurred: Verification ended with an error.
Details: x.x.x.x: Invalid response from https://example.com/.well-known/acme-challenge/xxx: "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, init"
Type: urn:ietf:params:acme:error:unauthorized
Full response: {"type":"http-01","status":"invalid","error":{"type":"urn:ietf:params:acme:error:unauthorized","detail":"x.x.x.x: Invalid response from https:\/\/example.com\/.well-known\/acme-challenge\/xxx: \"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n<head>\\n    <meta charset=\\\"UTF-8\\\" \/>\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width, init\"","status":403},"url":"https:\/\/acme-v02.api.letsencrypt.org\/acme\/chall-v3\/307269758956\/6njTuw","token":"xxx","validationRecord":[{"url":"http:\/\/example.com\/.well-known\/acme-challenge\/xxx","hostname":"example.com","port":"80","addressesResolved":["x.x.x.x"],"addressUsed":"x.x.x.x"},{"url":"https:\/\/example.com\/.well-known\/acme-challenge\/xxx","hostname":"example.com","port":"443","addressesResolved":["x.x.x.x"],"addressUsed":"x.x.x.x"}],"validated":"2024-01-23T12:19:52Z"}

Re: Bitte um Hilfe zu Reverse Proxy + Letsencrypt

Posted: Tue 23. Jan 2024, 13:48
by Jolinar
Ich hatte im Startpost die letzte Zeile deiner geposteten Meldung übersehen:

Code: Select all

[23-Jan-2024 10:19:06] ERROR | a Let's Encrypt error occurred: Local resolving checks failed for domain "example.com". Please ensure that your domain is locally resolvable!
Das würde aber nicht mit deiner Aussage in Einklang stehen:
bernhard wrote: Tue 23. Jan 2024, 11:31 nur leider kann LetsEncrypt keine Zertifikate mehr ausstellen
Denn bei Problemen mit der lokalen Auflösung dürftest du auch bisher kein Zertifikat bekommen haben...

Teste mal, ob du am CLI auf die Domain per wget oder curl zugreifen kannst.

Re: Bitte um Hilfe zu Reverse Proxy + Letsencrypt

Posted: Tue 23. Jan 2024, 13:53
by bernhard
Danke für deine Hilfe.

Ja, das hab ich schon versucht und das scheint zu passen. Bei http://example.com bekomm ich ein 301 auf https. Bei https://example.com bekomm ich "Found. Redirecting to /dashboard".

Re: Bitte um Hilfe zu Reverse Proxy + Letsencrypt

Posted: Thu 25. Jan 2024, 12:07
by bernhard
Hat jemand eine Idee? Ich habe nur noch ein paar Tage Zeit.

Ich habe auf zwei Servern genau das gleiche Problem. Auf dem anderen Server hab ich dann den alle Apache Rules gelöscht, das Zertifikat erstellt, Rules wieder eingetragen. Das will ich aber nicht alle 90 Tage manuell machen müssen, also wäre ich für eine saubere Lösung sehr dankbar.

Re: Bitte um Hilfe zu Reverse Proxy + Letsencrypt

Posted: Thu 25. Jan 2024, 14:48
by pandinusimperator
Probiere mal

Code: Select all

# uptime kuma directives
RewriteEngine on
RewriteCond %{HTTP:Upgrade} =websocket
RewriteRule /(.*) ws://localhost:3001/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket
RewriteRule /(.*) http://localhost:3001/$1 [P,L]

<location />
ProxyPass / http://localhost:3001/
</location>
<location /.well-known/acme-challenge>
ProxyPass "!"
</location>
Also speziell den location-Teil. Hat bei mir bei einem ähnlichen Fall geholfen.

Re: Bitte um Hilfe zu Reverse Proxy + Letsencrypt

Posted: Thu 25. Jan 2024, 15:44
by bernhard
Danke. Du hast leider nen Syntaxfehler in deinem Code.

Ich hab's jetzt aber selbst geschafft:

Code: Select all

RewriteEngine on

# don't proxy requests to the .well-known folder
RewriteCond %{REQUEST_URI} ^/\.well-known/.*
RewriteRule ^ - [L]

# send other requests to uptime kuma
RewriteCond %{HTTP:Upgrade} =websocket
RewriteRule /(.*) ws://localhost:3001/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket
RewriteRule /(.*) http://localhost:3001/$1 [P,L]