SSL Verbindung zu Fhem mit Letsencrypt

Begonnen von golli, 07 Januar 2017, 18:50:58

Vorheriges Thema - Nächstes Thema

Familienpapi

Habe meinen hausinternen Exchange 2010 (Small Business Server 2011 Standard) per Subdomain von selfhost laufen und LetsEncrypt funktioniert wunderbar. Warum sollen also Subdomains mit LetsEncrypt nicht funktionieren? Weder Android noch angebissener Apfel meckern beim Zugriff auf diesen Exchange via selfhost Subdomain. Sicherlich funktioniert das dann auch mit einem Apache Proxy. Ist wahrscheinlich sogar noch ein wenig sicherer als wie LetsEncrypt direkt mit FHEM verheiraten.
FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework

Master_Nick

 :o Habe ich hier nun etwas falsch verstanden?

Ich habe gerade mein FHEM von dem selbst gebastelten Zertifikat erlöst und es einfach mit 2 der Dateien vom Certbot von Letsencrypt ersetzt. Funktioniert Prima (NoIp Domain).

Hatte damals diese Anleitung genutzt: https://wiki.fhem.de/wiki/Raspberry_Pi_%26_HTTPS

Und habe nun NUR die beiden Dateien im Verzeichnis /opt/fhem/certs ausgetauscht. Die privkey.pem wird zu server-key.pem und cert.pem wird zu server-cert.pem.

Dann FHEM neu gestartet und alles war toll.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Wernieman

Dir ist aber klar, das letsencrypt "nur" 3 Monats-Zertifikate erstellt? Du solltest also den Tausch dieser automatisieren ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Master_Nick

#33
 ;) Exakt! Das ist zu bedenken. Aber da man eh minimum einen Server für FHEM hat einfach direkt so bauen.

Da ich es direkt so gebaut habe, dass es über einen cron in FHEM und FritzBox aktualisiert wird, muss ich nix mehr tun. Wenn man was schief läuft sagt mir mein System Bescheid per E-Mail.

Diese Automatisierung ist wirklich so einfach, dass die Verwendung eines 90 Tage gültigen Certs einen nicht abschrecken sollte.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Master_Nick

Zitat von: drhirn am 31 Januar 2017, 13:15:57
Der Verkehr von Client zu Server ist verschlüsselt. Unabhängig davon, ob da dyndns läuft, oder nicht. Ob die Methode Sicherheitlücken aufweist, hängt eher davon ab, wie du Apache konfiguriert hast.


Du kannst ja auch selbst-signierte Zertifikate verwenden. Gibt zwar eine Browser-Warnung, ändert aber nichts an der Verschlüsselung des Traffics.

Es gibt mobile Endgeräte die die arbeit mit self-signed Certs komplett verweigern - das gebe ich zu bedenken. :-) Vor allem die mittels Openssl ohne domain sind davon betroffen.


Oh sorry die Aussage war von Seite 1 - hatte hier gerade nach dem schreiben die Seite wohl angezeigt bekommen und dachte es kam nach meinem Post...
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Wernieman

Zitat... in FHEM und FritzBox aktualisiert ...

Wie änderst Du das Zertifikat automatisch in der FritzBox?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Master_Nick

Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

ing.robby

Hallo zusammen,

ich habe auch, nach dem im Eröffnungspost erwähnten Video, den Zugriff aus dem Internet mit letsencrypt versucht.

Ich habe ein Problem an der Stelle
./letsencrypt-auto certonly --rsa-key-size 4096 -d *.com

Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 2 Plugins selected: Authenticator standalone, Installer None Obtaining a new certificate Performing the following challenges: tls-sni-01 challenge for *.com Cleaning up challenges Problem binding to port 443: Could not bind to IPv4 or IPv6. root@robby-RasPi:/opt/letsencrypt#
Ich habe alles exakt nach dem Tutorial gemacht, eine Subdomain eingerichtet, diese ist auch per ping erreichbar. IPv4 Status ebenfals i.O. auf meiner Fritzbox. Was könnte das Problem sein?

MfG Robby
RasPi 3B+ | Ubuntu Mate 18.04, fhem 5.9
nanoCUL433 | IT1500
nanoCUL868 | CCU2, HM-ES-PMSw1-DR, HM-WS550STH, HmIP-BWTH, HmIP-STHO, HmIP-SMI
JeeLink868 | PCA301
hue Bridge | Single bulb, Lightstrip Plus, LivingColors Iris, ZigBee Smart+

Wernieman

Zitat*.com

Sorry, aber DAS steht so bestimmt nicht da .. es gehört DEINE Domain da rein"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ing.robby

Ja dort steht auch meine Domain, ist hier "ausgesternt"  :D
RasPi 3B+ | Ubuntu Mate 18.04, fhem 5.9
nanoCUL433 | IT1500
nanoCUL868 | CCU2, HM-ES-PMSw1-DR, HM-WS550STH, HmIP-BWTH, HmIP-STHO, HmIP-SMI
JeeLink868 | PCA301
hue Bridge | Single bulb, Lightstrip Plus, LivingColors Iris, ZigBee Smart+

Wernieman

Habe jetzt ekien Lust, mir as Video anzusehen. Erstmal deshalb kurz mal einige Fragen:
1. hast Du einen Webserverr laufen?
2. Wenn ja, ist er extern auf Port 80 erreichbar?

Wenn bei 2. Ja, ist es besser, den letsencrypt über den Webserver laufen zu lassen, sonst müsstest Du für die automatisierung diesen immer abschalten (Ich gehe sogar momentangenau davon aus, das dieses Dein Fehler ist. Wie  in der Fehlermeldung steht "could not bind to port" o.Ä.)

3. Mit dem Browser Testen, ob Du auf Deine Domain ins richtige Verzeichnis kommst:

Erstmal manuell einen Ordner im Web-Root anlegen:
cd <webroot>
mkdir /.well-known
date >.well-known/test.txt


Jetzt müstest Du im Browser aufrufen: http://<DeineDomain>/.well-known/test.txt
Und dort sollte das Datum/die Zeit stehen. Eventuell meckert der Browser auch wegen "Binary-Datei", das ist hier aber irrelevant. Wenn DAS läuft, könntest Du weiter mit letsencrypt testen (Schreibe ich, wenn es hier O.K. ist)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ing.robby

Hallo Wernieman,

Zitat1. hast Du einen Webserverr laufen?
Ja ich habe auf dem RasPi einen Apache2 laufen, intern 192.168.178.24, ist auch intern erreichbar unter dieser ip und auch auf dem Port 80.
Fhem läuft über dieselbe interne IP über Port 8083.

Portweiterleitung auf der Fritzbox an Port 8083 funktioniert, sprich fhem ist extern über meine Subdomain mit Port 8083 erreichbar. (Das ist natürlich so nicht gewollt, weil ich den Apache davor schalten möchte, war nur zum Testen.)

Zitat2. Wenn ja, ist er extern auf Port 80 erreichbar?
Apache2 ist extern nicht über meine Subdomain auf Port 80 erreichbar, wenn ich die Portfreigabe in der Fritzbox auf Port 80 umstelle, intern auf Port 80 schon. Dort kommt die "Startseite" (index.html).

Ich habe auch noch ein Verständnisproblem.
Sollte ich nicht von extern auf den Port 443 weiterleiten, weil dieser der https Port ist und nicht an den Port 80?

Gruß Robby
RasPi 3B+ | Ubuntu Mate 18.04, fhem 5.9
nanoCUL433 | IT1500
nanoCUL868 | CCU2, HM-ES-PMSw1-DR, HM-WS550STH, HmIP-BWTH, HmIP-STHO, HmIP-SMI
JeeLink868 | PCA301
hue Bridge | Single bulb, Lightstrip Plus, LivingColors Iris, ZigBee Smart+

Wernieman

Jetzt verstehe ich Dein Problem und s wird so nicht funktionieren.

Der letsencrypt-Client versucht sich auf Port 80 zu verbinden, was er nicht kann, da dort der apache läuft. Er wird es auch nicht auf Port 8083 Probieren, warum sollte er auch?

Würde Dir deshalb eigentlich empfehlen:
1. Mache einen Unabhängigen Webserver auf Port 80 extern erreichbar.
2. Merke Dir, wohin sein web-root zeigt (darf leer sein)
3. Starte letsencrypt mit
letsnecrypt certonly -webroot -w <Webroot>"
Hinweis: Bitte nachprüfen, kann aktuell nicht nachschauen, recherchieren. Ist aus dem Kopf geschrieben und ich glaube, dort ist noch ein "Tippfehler"!
4. Jetzt hast Du ein Zertifikat

5. Zusätzlich:
Wenn Du schon einen Webserver hast, würde ich FHEM nicht direkt erreichbar machen, sondern:
- Verwende extern port 443!!
- verwende den Apache als proxy, d.h. alles geht darüber zum FHEM, gibt hier im Forum schon diverse Anleitungen dafür!
- verwende den apache-auth für die Passwortabfrage! Mach Deinen Fhem nicht ungeschützt, ohne Passwort, aus dem Web erreichbar!!
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ing.robby

Vielen Dank für die ausführliche Antwort. Ich komme auch erst morgen wieder zum Testen. Bis dahin noch frohe Weihnachten  :)

Gruß Robby
RasPi 3B+ | Ubuntu Mate 18.04, fhem 5.9
nanoCUL433 | IT1500
nanoCUL868 | CCU2, HM-ES-PMSw1-DR, HM-WS550STH, HmIP-BWTH, HmIP-STHO, HmIP-SMI
JeeLink868 | PCA301
hue Bridge | Single bulb, Lightstrip Plus, LivingColors Iris, ZigBee Smart+

ing.robby

Hallo Wernieman,

ich habe mich dem alten Problem jetzt nochmal angenommen...

Apache2 läuft, Subdomain erreichbar, letsencrypt läuft, Portweiterleitung auf Fritzbox an Port 443. ABER:
Irgendwas scheint in den Apache Einstellungen nicht richtig zu sein.

Intern erreichbar auf interner IP 192.168.178.25:443
Extern erreichbar auf <domain>:443
Nur kommt dann nicht meine fhem Seite, sondern die php Testseite (auch wenn ich intern den Apache aufrufe).

Hier die wichtigen Configs:

000-default.conf:

<VirtualHost *:443>
ServerAdmin robby-RasPi
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


<domain>.conf:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName <domain>

    ServerAdmin robby-RasPi
    DocumentRoot /var/www/html
    #DocumentRoot /etc/apache2/sites-available

    ErrorLog ${APACHE_LOG_DIR}/<domain>.error.log
    CustomLog ${APACHE_LOG_DIR}/<domain>.access.log combined

    SSLCertificateFile /etc/letsencrypt/live/<domain>/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/<domain>/privkey.pem

    Include /etc/letsencrypt/options-ssl-apache.conf

    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On

    <Location /fhem>
        ProxyPass https://192.168.178.25:8083/fhem
        ProxyPassReverse https://192.168.178.25:8083/fhem
    </Location>

    <Directory />
        RedirectPermanent / /fhem
    </Directory>

    <Proxy *>
        AuthType Basic
        AuthName "Password for FHEM Required"
        AuthUserFile /etc/fhem-htpasswd
        Require valid-user
        Order deny,allow
        Allow from all
    </Proxy>
</VirtualHost>
</IfModule>


default-ssl.conf:

<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin robby-RasPi

                DocumentRoot /var/www/html
         
           

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined       
                SSLEngine on
                SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
                SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key


/var/www/html:

-rw-r--r--  1 root     root      0 Okt 27 22:11 <domain>
-rwxrwxr-x  1 robby    root  11321 Jan 19  2017 index.html
-rw-r--r--  1 root     root     21 Okt 22 20:50 index.php
drwxr-xr-x 14 www-data root   4096 Nov 21  2017 sv
-rw-rw-r--  1 robby    robby     0 Dez 23  2017 test.txt



<domain> entspricht meiner Domain Adresse.

Irgndwo muss ich den "Verweis" auf meine Domain unterbringen. Aber wo??

Gruß Robby





RasPi 3B+ | Ubuntu Mate 18.04, fhem 5.9
nanoCUL433 | IT1500
nanoCUL868 | CCU2, HM-ES-PMSw1-DR, HM-WS550STH, HmIP-BWTH, HmIP-STHO, HmIP-SMI
JeeLink868 | PCA301
hue Bridge | Single bulb, Lightstrip Plus, LivingColors Iris, ZigBee Smart+