http > https Dienste: Nginx

Started by pumuckl, November 17, 2019, 06:00:23 PM

Previous topic - Next topic
Quote from: fabian on November 28, 2019, 11:18:12 PM
Ja, geht noch über trust aber LE wäre besser. Für LE muss dein Server auf Port 80 hören oder du musst DNS konfigurieren.

Für LE gibt es eine Checkbox (könnte advanced sein) im Server um die Challenge umzuleiten (acme plugin).

Das kann bei richtiger Konfiguration Zertifikate ausstellen und die können dann in den nginx eingespielt werden.

Opnsense Port 80 und 443 sind durch das GUI blockiert
Nginx läuft auf der sense und hört auf 8080

Let's Encryptist auch auf der sense installiert und unter den erweiterten Einstellungen kann man einen Port einstellen zb 40350 muss der in der Firewall geöffnet oder weitergeleitet werden?

Ich habe eine Selfhost Domain und einen duck dns beides wird via dyndns auf meine IP  weitergeleitet.

Ich denke mit Le sollte beides gehen.

Also der common name bei LE wäre zb irgendwas-Selfhost.de der wird dann auf meine IP geleitet.
Versucht LE dann auf meier Sense zu schreiben?

Oder wird über Nginx da schon auf meinen Server auf port 80 zugegriffen? Was müsste da dann lauschen?


November 30, 2019, 10:09:13 AM #16 Last Edit: November 30, 2019, 10:13:51 AM by fabian
Du kannst den Port vom Web interface ändern. Dann kann nginx die Ports 80 und 443 verwenden und LE funktioniert.

LE gibt nun mal vor, dass es Port 80 für die Challenge HTTP 01 sein muss.

Der Port Om LE wird verwendet, weil intern vom LE plugin ein kleiner Webserver zur Verarbeitung der Challenge gestartet wird der diese bearbeitet. HAProxy und nginx leiten ACME Anfragen an diesen weiter. Dieser muss von außen nicht direkt erreichbar sein. Nur Port 80 mit nginx oder HAProxy plugin.

Ich habs irgendwie geschafft

In das LE plugin hab ich meine Domain eingetragen.


Den Opnsese GUI https Port habe ich geändert

Aber es gibt noch die Antiaussperr NAT  die http 80 auf den neuen https  Port der Opnsese weiterleitet.

nginx läuft jetzt auf 8080,

Wie kann ich die anti aussperr NAT ändern?

Beim Aufrufen meines Servers habe ich folgende Meldung:

NET::ERR_CERT_COMMON_NAME_INVALID

Dieser Server konnte nicht beweisen, dass er 10.10.10.1 ist. Sein Sicherheitszertifikat stammt von XXXXXserver.duckdns.org. Mögliche Gründe sind eine fehlerhafte Konfiguration oder ein Angreifer, der Ihre Verbindung abfängt.


Wo muss ich die IP beim zertifikat hinzufügen?

schönen Advent beginn

Die IP-Adresse kannst du in ein LE-Zertifikat eintragen - da musst du den Hostnamen verwenden.

Die Umleitung wird dort konfiguriert, wo du auch den Port änderst. Da gibt's ne Checkbox für die Port 80 Weiterleitung.

Das mit Port 80 Hab ich hinbekommen.

Beim Zertifikat und bei den URL Pattern hab ich noch Probleme:

Das ist die Einstellung von meinem Zertifikat:

Suche

Aktiviert
Common Name           Multi-Domain (SAN)     Beschreibung        Ausstellungs-/Erneuerungsdatum  Letzter Acme-Status Letzter Acme-Durchlauf Befehle
xxxxserver.duckdns.org                 Let's Encrypt: Zertifikat 2.12.2019, 14:08:38 Überprüfung Ok 2.12.2019, 22:36:44


Ich kann bei Common Name nicht den Hostnamen  angeben, weil mindestens ein Punkt vorhanden sein muss
Eine IP kann man auch nicht angeben.

wenn ich den Hostname , oder die IP bei Multi-Domain eingebe wird das Zertifikat Fehler haft.

oder muss ich sense.localdomain oder so ähnlich im Zertifikat angeben?

Hostname  sense

Domain   localdomain



Wenn ich bei URL Pattern was anderes als / eingebe wir mein server nicht gefunden
ich hab folgendes probiert:


/server
/server/

Match Type alle ausprobiert
und so im Browser eingegeben

meineip/server
meineip/server


ode rmuss ich da mit den Präfix machen ?

Du brauchst dann mehrere HTTP Server (nginx) für unterschiedliche Hostnamen.

Zum Beispiel:

firewall.example.net
app.example.net

Von außen kannst du dann für beide jeweils ein Zertifikat ausstellen lassen. Dann kannst du über firewall.example.net auf die FW über HTTPS zugreifen.

Das App-Zertifikat wird dann nur für deine Applikation verwendet.

zwischen durch ein  Danke schön

Ich hab mittlerweile 2 sub  Domains bei selfhost erstellt, so wie zwei http server und locations.


Bei mir hakt es noch mit den Locations

wie funktioniert das matchen vom URL Pattern?

was muss ich bei  URL Pattern und Match Type eingeben

in den Anleitungen zu nginx und opnsese steht dazu nichts Ausseer das / als matched

das funktioniert nicht:
URL Pattern
server1.xxxxxx.selfhost.co
/server1.xxxxxx.selfhost.co



kann ich dann auch noch eine Location erstellen die alle andere anfragen blockt?
oder ist das nicht notwendig

mfg

December 10, 2019, 07:50:48 PM #22 Last Edit: December 10, 2019, 07:53:35 PM by fabian
/ heist eigentlich alles. Die Hostnamen werden über verschiedene HTTP Server voneinander getrennt. Da können gerne mehrere auf Port 80  oder 443 antworten, solange es das gleiche Protokoll ist.
alles was im location block gemacht wird, bezieht sich auf dem Pfad. Zum Beispiel für das OPNsense blog allein würdest du den folgenden teil als location match angeben:https://opnsense.org/blog/

Ich rufe die URL exakt wie im URL Pattern angegeben auf, bzw hat die url kopiert und eingefügt.

Bei beiden Varianten bekomme ich den Fehler "Not Found"


Beschreibung       URL Pattern                                 Match Type          WAF Enabled    Force HTTPS       Befehle
server1    https://server1.xxxxxx.selfhost.co/server1/         Exakte Übereinstimmung ("=") 0      1




Beschreibung       URL Pattern                                 Match Type          WAF Enabled    Force HTTPS       Befehle
server1    server1.xxxxxx.selfhost.co/server1/         Exakte Übereinstimmung ("=") 0      1



was ist hier noch Falsch?

Dass du immer noch die volle URL rein schreibst. Du bist mit der location im http Server relativ zu diesem.

Nochmal: nur den resourcenpfad in dieses Feld eingeben. Kein Protokoll, keinen Port und keinen Hostnamen.

so hatte ich es schon zu beginn versucht
URL Pattern:
/server1/

url richtiger aufruf:
https://xxxxxx.selfhost.co/server1/
dann bekomme ich nur den Fehler angezeigt:
{"error": "not found"}


wenn ich die url falsch eingebe sieht es aber so aus:
url:
https://xxxxxx.selfhost.co/serverxxxxx/
Not Found
The resource you want to access is not available.

Please contact the webmaster if you think this is an error.

Web Application Protection by OPNsenseOPNsense Logo



die weiterleitung auf meinem Server funktioniert nur wenn ich / als Pattern eingebe, was auch klar ist.

muss ich bei der Location noch was angeben? 
URL Rewriting, Pfadpräfix, File System Root ,  Index File oder Automatic Index

Die upstreams aber die wirst du schon haben.

so funktionierts ja
/
danach werde ich auf meinen upstream server weitergeleitet


so nicht:
/server1/

also denke ich das das Problem bei der Location liegt

mit der location gibts du an, auf welchen pfad du matchen willst - das wird  dann trotzdem so an den server weitergeleitet.

/server1/ als match bedeutet, dass du alles was gleich /server1/ ist oder darunter liegt, so an den server um upstream weiterleiten willst.

also www.example.com/server1/test geht an testip:80/server1/test. Alles wofür es keine spezielle Location gibt, landet im http server und damit vermutlich im nirgendwo.

Was du haben willst.

Willst du VHosts trennen, geht das anders:

HTTP Server 1 (server1.example.com) -> Location H1 (Match /) -> Upstream (1)
HTTP Server 2 (server2.example.com) -> Location H2 (Match /) -> Upstream (1)

(1) die können theoretisch ident sein, wenn beide webseiten am selben server liegen.

Das War eine Zangengeburt, jetzt funktionierte es und das Zertifikat passt auch.


Location: URL Pattern:  "/"

Beim HTTP Server habe ich bei Servername, die Domain meiner Anwendung anstatt von  "localhost" eingetragen.

vielen Dank Fabian

Ich hätte jetzt noch Fragen zur Sicherheit:

Meine 2 Webanwendungen werden von nginx mit Benutzer und Passwort(35 Zeichen) abgefragt .

Fasche Anfragen führen zu einem error not found.


Ich hab eine Limit Zone angelegt mit 10MB und 10 Zugriffen/Sekunde.

Schützt mich das von ddos und brut force?


Auf meine Webanwendungen greife <5 Personen / Geräte zu

Ist das sicher genug oder sollte ich noch etwas machen?

grüsse