Hallo,
würde gerne eine SSL Verbindung mit meinem Fhem auf einem Raspberry Pi 3 realisieren. Habe es nach diesem Video eingerichtet:
https://www.youtube.com/watch?v=WdQVeLY9OJI (https://www.youtube.com/watch?v=WdQVeLY9OJI)
Als Domain die von myFritz genommen. Wenn ich nun die Seite aufrufe, kann ich mich mit Benutzername und Passwort zwar authentifizieren, erhalte dann aber folgende Fehlermeldung.
[code]Fehlermeldung Fhem log:
FHEMWEB SSL/HTTPS error: SSL accept attempt failed error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Fehlermeldung Browser:
Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /fhem.
Reason: Error reading from remote server
Apache/2.4.10 (Raspbian) Server at xxxxxxxxxxxxxxxx.myfritz.net Port 443
Bis jemand speziell fuer FHEM eine Letsencrypt Anleitung baut, wuerde ich Apache davorschalten, und FHEM per Proxy Anweisung in der Apache Konfiguration verbinden. Apache mit einem letsencrypt Zertifikat zu versehen ist trivial (letsencrypt --apache -d mydomain.de).
Die Anleitung nimmt einen Apache davorgeschaltet. Aber ich bekomme die Fehlermeldung.
Die Apache -> FHEM Verbindung muss nicht verschluesselt laufen. Das geht z.Bsp. so
ProxyPass /fhem http://localhost:8083/fhem
ProxyPassReverse /fhem http://localhost:8083/fhem
Ja habe ich so konfiguriert:
<Location /fhem>
ProxyPass http://localhost:8083/fhem
ProxyPassReverse http://localhost:8083/fhem
</Location>
Zitat von: rudolfkoenig am 07 Januar 2017, 18:58:21
Bis jemand speziell fuer FHEM eine Letsencrypt Anleitung baut, wuerde ich Apache davorschalten, und FHEM per Proxy Anweisung in der Apache Konfiguration verbinden. Apache mit einem letsencrypt Zertifikat zu versehen ist trivial (letsencrypt --apache -d mydomain.de).
Funktioniert Letsencrypt auch, wenn die oben angeführte "mydomain.de" eine DYNDNS Adresse ist?
LG
Zitat von: raimundl am 07 Januar 2017, 20:20:15
Funktioniert Letsencrypt auch, wenn die oben angeführte "mydomain.de" eine DYNDNS Adresse ist?
LG
DYNDNS wird leider nicht unterstützt.
Sollte eigentlich funktionieren wenn die Domain in der Public Suffix List https://publicsuffix.org/list/public_suffix_list.dat (https://publicsuffix.org/list/public_suffix_list.dat) steht.
Zitat von: eisler am 07 Januar 2017, 20:26:45
Sollte eigentlich funktionieren wenn die Domain in der Public Suffix List https://publicsuffix.org/list/public_suffix_list.dat (https://publicsuffix.org/list/public_suffix_list.dat) steht.
Hallo Danke,
in genannter Liste gibt es den Eintrag "ddns.net" und meine NO-IP Adresse lautet "xxxxxxxxx.ddns.net". Also könnte es funktionieren. Hast du vielleicht noch ein paar Hinweise, Tipps.
LG
Hallo,
möchte gerne bestätigen, dass es mit einer dynamischen IP von NO-IP funktioniert!
Für jene die es noch installieren wollen, so hat meine Eingabe am Raspi3 gelautet:
sudo ./letsencrypt-auto -d (xxxNO-IP-Adressexxx) --apache -m (mailadresse@xxxxxxx.com) --redirect --agree-tos
ohne Klammern () mit den eigenen Daten ergänzen.
LG
<Location /fhem>
ProxyPass http://localhost:8083/fhem
ProxyPassReverse http://localhost:8083/fhem
</Location>
Auch dieser Eintrag funktioniert!
Wenn ich nun 2 Raspi's mit fhem im Heimnetz laufen habe und auf beide von außen über den Apache Server gesichert zugreifen will, wie müsste dann obiger Eintrag lauten.
Danke und LG
Du musst dann 2 Locations angeben auf die Du im ProxyPass verweist.
Hallo,
ich habe noch eine Frage dazu.
Wenn ich über den apache letsencrypt laufen lasse und über no-ip dyndns auf meinen RasPi zugreife. Ist das dann eine sichere Verbindung oder weißt diese Methode doch Sicherheitslücken auf?
Ich habe auch das eingangs erwähnte tutorial gesehen und versucht, nur leider gibt es kaum einen Anbieter, die subdomans mit dyndns anbieten und letsencrypt unterstützen... :(
Gruß Robby
Zitat von: robby_ing am 30 Januar 2017, 21:21:52Wenn ich über den apache letsencrypt laufen lasse und über no-ip dyndns auf meinen RasPi zugreife. Ist das dann eine sichere Verbindung oder weißt diese Methode doch Sicherheitslücken auf?
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.
ZitatIch habe auch das eingangs erwähnte tutorial gesehen und versucht, nur leider gibt es kaum einen Anbieter, die subdomans mit dyndns anbieten und letsencrypt unterstützen... :(
Du kannst ja auch selbst-signierte Zertifikate verwenden. Gibt zwar eine Browser-Warnung, ändert aber nichts an der Verschlüsselung des Traffics.
Du solltest jetzt aber berücksichtigen, das Dein apache und fhem komplett aus dem Netz erreichbar ist. Ich würde Dir empfehlen, es zusätzlich mit einem Passwort zu schützen. Am besten beim apache, also so früh wie mögich
Hallo,
ich bin Anfänger im Bereich FHEM.
Ich habe alles nach der Videoanleitung gemacht und nun das Problem dass ich eine Fehlermeldung beim aufrufen der Seite im Browser von extern bekomme.
Es heißt:
Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /fhem.
Reason: Error reading from remote server
Was muss ich tun, damit es funktioniert?
Vielen Dank schon mal für eure Hilfe :-)
Hoi,
bin jetzt kein apache-Profi aber er meckert /fhem an.
Hast Du in Deiner apache-site config (File in dem Du die Umleitung zu fhem konfigurierst, müsste ja in der Vid-Anleitung erwähnt worden sein) "/fhem" als URL Aufruf definiert?
Sonst versucht apache einen Zugriff auf fhem, den dieser nicht kennt oder gar nicht reagiert (Stichwort "webname" in fhemweb-Instanz).
Grüsse
miosch wie sieht deine conf datei aus? (Passwörter aus xxxen)
Mal was Generelles dazu: Ich hatte mich beim Aufstzen von NGINX bewusst gegen Letsencrypt und für ein selbst signiertes Zert. entschieden.
Letsencrypt ist aufwändiger einzurichten und der Vorteil der wegfallenden Sicherheitswarnung im Browser für Seitenbesucher kommt bei einer vorwiegend selbsgenutzen Loginseite wie FHEM nicht zum Tragen. Außerdem ist das LE- Zert. zeitlich begrenzt und muss regelmäßig erneuert werden. Also Leute - macht es euch selbst... :-X ;D
NEIN .. letsencrypt ist supereinfach, vor allem auch beim NGINX. Und das regelmäßige erneuern kann (und sollte man) automatisieren.
Erstellen neuere Versionen des LE-Clients nicht gleich automatisch einen Cron-Job? Ich kann mich nämlich nicht erinnern, einen eingerichtet zu haben.
Mhhh .. auf den hier vorliegenden Ubuntu-Servern jedenfalls nicht .. aber es ist trivial (=einfach) einen einzurichten.
@fiedel Was kostet das selbst generierte Zertifikat?
Gesendet von iPad mit Tapatalk Pro
EUR 0,00.-
Dafür hast DU Probleme beim Handyzugriff ....
Auch wenn man das CA Zertifikat importiert?
Könnt Ihr das mal näher erläutern? Beim googlen habe ich nur Preise >100€ pro Jahr gesehen.
Gesendet von iPhone mit Tapatalk Pro
Selbst signierte Zertifikate erstellt man selbst, zB. mit openssl (https://wiki.openssl.org/index.php/Manual:Openssl(1))
Wenn Du eine CA importierst, könne jemand mit genau der CA auch andere Zertifikate erstellen. Nicht ohne Grund warnt ein Androidhandy nach dem Import dieser CA bei JEDEM booten, das dieses Handy kompromitiert sein kann.
@andies
Siehe Web, z.B. http://wiki.nefarius.at/linux/eigenes_ssl-zertifikat_erstellen (http://wiki.nefarius.at/linux/eigenes_ssl-zertifikat_erstellen)
In Zeiten von Letsencrypt würde ich dieses Vorgehen nicht mehr empfehlen. Nicht ohne Grund wird es in Hackerkreisen als "Snakeoil" bezeichnet
ZitatNicht ohne Grund warnt ein Androidhandy nach dem Import dieser CA bei JEDEM booten, das dieses Handy kompromitiert sein kann.
Wenn man dieses Verhalten nicht abstellen kann, dann wird es in Konzernen mMn bald keine Adroid Mobilles mehr geben ;) Aber lass uns das nicht weiter ausführen, da hier offtopic.
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.
: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.
Dir ist aber klar, das letsencrypt "nur" 3 Monats-Zertifikate erstellt? Du solltest also den Tausch dieser automatisieren ...
;) 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.
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...
Zitat... in FHEM und FritzBox aktualisiert ...
Wie änderst Du das Zertifikat automatisch in der FritzBox?
Mit dem Script hier: https://gist.github.com/wikrie/f1d5747a714e0a34d0582981f7cb4cfb :)
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
Zitat*.com
Sorry, aber DAS steht so bestimmt nicht da .. es gehört DEINE Domain da rein"
Ja dort steht auch meine Domain, ist hier "ausgesternt" :D
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)
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
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!!
Vielen Dank für die ausführliche Antwort. Ich komme auch erst morgen wieder zum Testen. Bis dahin noch frohe Weihnachten :)
Gruß 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
https://httpd.apache.org/docs/2.4/mod/mod_proxy.html (https://httpd.apache.org/docs/2.4/mod/mod_proxy.html)
Gibt auch Anleitungen dazu hier im Forum .. must Du suchen.
Sorry, aber mit apache als Proxy kenne ich mich seit 3 Jahren nicht mehr aus. verwende da nur noch den nginx. Gibt aber genug Anleitungen (s.o.).
Hab's hinbekommen :)
Folgende Dinge waren notwendig:
im Verzeichnis /etc/apache2/sites-available war die Datei 000-default.conf --> habe ich gelöscht (jetzt gibt es nur noch <domain>.conf)
Da ich auch in meinem Netzwerk intern über https auf fhem zugreife musste ich folgendes in meiner <domain>.conf hinzufügen:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
Jetzt klappt der Zugriff vom Web aus.
Was ist der Unterschied zwischen Apache2 und nginx?
Gruß Robby
Anderes Programm für die gleiche Aufgabe ...
Hallo,
nach einem SD Card Crash musste ich nun leider wieder fhem neu einrichten. Bitte keine Sprüche bzgl. backup ect. :-[
Nun hänge ich wieder am Thema Apache Reverse mit letsencrypt.
root@RasPi:/opt/letsencrypt# ./letsencrypt-auto certonly --rsa-key-size 4096 -d <damain>
Saving debug log to /var/log/letsencrypt/letsencrypt.log
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Apache Web Server plugin - Beta (apache)
2: Spin up a temporary webserver (standalone)
3: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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:
http-01 challenge for <domain>
Waiting for verification...
Cleaning up challenges
Failed authorization procedure. <domain> (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://<domain>/.well-known/acme-challenge/GqjuxV9SY5BxBLwPqzw0zWUG_DdnhQ5SnpkNyhLlG1c: Error getting validation data
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: <domain>
Type: connection
Detail: Fetching
http://<domain>/.well-known/acme-challenge/GqjuxV9SY5BxBLwPqzw0zWUG_DdnhQ5SnpkNyhLlG1c:
Error getting validation data
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address. Additionally, please check that
your computer has a publicly routable IP address and that no
firewalls are preventing the server from communicating with the
client. If you're using the webroot plugin, you should also verify
that you are serving files from the webroot path you provided.
Ich habe schon unzählige Foren nach dem Fehler durchsucht, aber noch keine Lösung gefunden. Kann mir jemand helfen?
<domain> entspricht meiner Domain
Gruß Robby
1. Wenn Du "Stand Allone" wählst, darf KEIN anderer Webserver laufen
2. Ist Deine Domain auch wirklich die Richtige IP?
3. ist http, also Port 80 aus dem Web erreichbar?
Würde Dir allerdings besser Raten, es mit 3 "Place files in webroot directory (webroot)" zu machen. Das ist Browser unabhängiger und kann ohne den Webserver runterzufahren, laufen. Alternativ die 1.... habe aber prsöhnlich schon mal Probleme damit gehabt ...
Hallo Wernieman,
ich habe es jetzt mit nginx versucht. Der Zugriff aus dem Internet funktioniert, aber wenn ich letsencrypt nutzen will, kommt der gleiche Fehler wie bei apache.
Befehl:
./letsencrypt-auto certonly -a standalone -d <domain>
Fehler:
root@RasPi:/opt/letsencrypt# ./letsencrypt-auto certonly -a standalone -d <domain>
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for <domain>
Waiting for verification...
Cleaning up challenges
Failed authorization procedure. <domain> (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://<domain>/.well-known/acme-challenge/WVokj-9aMOW4jKU7nGxw68DymqPVkK9zQi7Zj-afNFU: Error getting validation data
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: <domain>
Type: connection
Detail: Fetching
http://<domain>/.well-known/acme-challenge/WVokj-9aMOW4jKU7nGxw68DymqPVkK9zQi7Zj-afNFU:
Error getting validation data
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address. Additionally, please check that
your computer has a publicly routable IP address and that no
firewalls are preventing the server from communicating with the
client. If you're using the webroot plugin, you should also verify
that you are serving files from the webroot path you provided.
Hängt das vielleicht damit zusammen, dass "http" steht, anstatt "https"?
Gruß Robby
1. Wenn Du "standalone" nutzen willst, darf apache oder nginx NICHT laufen
Siehe mein Beitrag! Bitte LESEN
Bevor wir jetzt weiterreden erstmal die Frage: Ist Dein nginx über http extern erreichbar?
Hallo Wernieman,
ich habe deinen Beitrag gelesen. Apache und nginx liefen nicht während letsencrypt Installation.
Nein nginx ist nicht über http erreichbar, sondern über https, so ist es ja auch gewollt.
Gruß Robby
d.h. extern ist die Maschine, auf der letsencrypt läuft, NICHT über http erreichbar? Damit wird es dann wohl nichts mit letsencrypt .... denn das braucht für die Erstinstallation http ....
btw: Schau mal, was alles auf port 80 hört:
netstat -lntp | grep 80
Letsencrypt läuft nicht. Scheitert ja bei der Installation.
Und meine Subdomain für fhem ist nicht unter http erreichbar.
netstat -lntp | grep 80
liefert:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 28805/nginx: master
tcp 0 0 0.0.0.0:8083 0.0.0.0:* LISTEN 28969/perl
tcp 0 0 0.0.0.0:8084 0.0.0.0:* LISTEN 28969/perl
tcp 0 0 0.0.0.0:8085 0.0.0.0:* LISTEN 28969/perl
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 28805/nginx: master
Gruß Robby
1. laut Deiner Ausgabe ist letsencrypt installiert
2. Deine subdomain für FHEM muß extern über http erreichbar sein .. allerdings geht es auch unter eine Dummy.
Habe bei mir im nginx einfach folgenden Eintrag drinnen:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name default_server;
root /usr/share/nginx/html;
index index.html index.htm;
access_log /var/log/nginx/default.access.log;
error_log /var/log/nginx/default.error.log;
# Sicherheit
server_tokens off;
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains' always;
# Für LetsEncrypt
location ~ /\.well-known {
root /usr/share/nginx/html;
}
# Alles andere auf https://
location / {
try_files $uri $uri/ =404;
return 301 https://$host$request_uri;
}
}
Dann kannst Du ein Zertifikat erstellen (nginx muß laufen!)
letsencrypt certonly --webroot -w /usr/share/nginx/html -d Domain1 -d Domain2 ....
Allerdings ist der Aufruf aus dem Kopf geschrieben (und man-Pages), nicht getestet. Das kann ich Dir erst morgen geben.
Dieses hat den Vorteil, das Du auch bei einem laufendem nginx ein "letsencrypt renew" machen kannst.
Ja du hast Recht, installiert ist letsencrypt. Erst bei dem Befehl
./letsencrypt-auto certonly --rsa-key-size 4096 -d <domain>
Kommt die beschriebene Fehlermeldung.
letsencrypt certonly --webroot -w /usr/share/nginx/html -d <domain>
Funktioniert auch nicht.
Ausgabe:
Failed authorization procedure. <domain> (http-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://<domain>/.well-known/acme-challenge/C0gOuxY98vY1zcZGQyC3dRSZQ7JRL4V9z8L6QzC1XFc: Error getting validation data
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: <domain>
Type: connection
Detail: Fetching
http://<domain>/.well-known/acme-challenge/C0gOuxY98vY1zcZGQyC3dRSZQ7JRL4V9z8L6QzC1XFc:
Error getting validation data
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address. Additionally, please check that
your computer has a publicly routable IP address and that no
firewalls are preventing the server from communicating with the
client. If you're using the webroot plugin, you should also verify
that you are serving files from the webroot path you provided.
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
Prüfe erstmal, ob Deine Domain auch extern erreichbar ist (http!!)
Dann ... können wir weitermachen.
Siehe Ausgabe:
The server could not connect to the client to verify the domain :: Fetching http://<domain>/.well-known/acme-challenge/C0gOuxY98vY1zcZGQyC3dRSZQ7JRL4V9z8L6QzC1XFc:
Nein ist sie nicht. Ist nur über https erreichbar, hatte ich schon geschrieben.
Verstehe auch nicht, warum sie über http erreichbar sein soll. Will ja verwchlüsselt darauf zugreifen...
Oder ist das für die Einrichtung von letsencrypt erforderlich? Und ich stelle das später um?
Für https brauchst Du ein Zertifikat, was Du nicht hast. Um eines aufzubauen, willst Du aber über https gehen, wofür Du kein Zertiikat hast, da Du kein https ...... Es ist ein Henne Ei Problem!
Also ... ohne http geht es nicht.
Punkt (s.o. und lets-Ecnrypt-Doku)
Und wie Du es umstellst, siehe mein nginx-Auszug.
Und fürs dauerhafte würde ich Dir auch empfehlen, http laufen zu lassen. Letsencrypt-zertifikate haben eine Lebensdauer von 3 Monaten. Man kann Sie aber automatisch verlängern lassen (letsencrypt renew).
Also mal in Steps:
1. http Einrichten!
2. Externe Erreichbarkeit von http prüfen
3. letsencrypt laufen lassen
4. nginx mit https erweitern
5. externe Erreichbarkeit von htps prüfen
6. Sich freuen!
Sorry aber das sind Basics. Bitte lesedir mal die Letsencrypt Doku durch! Und das mit http habe ich schon 3? mal geschrieben ....
Auch, wenn das Thema schon etwas älter ist, vielleicht sucht ja noch jemand danach, wie er FHEM mit Letsencrypt-Zertifikat nutzt ohne einen Webserver.
Man kann in /etc/letsencrypt/renewal-hooks/post Skripte anlegen, die nach dem Renewal ausgeführt werden. Da ich das Zertifikat auf einem anderen Pi installiert habe, kopiere ich es in dem Skript fhem-cert-update.sh per scp ins FHEM-Verzeichnis:
#!/bin/bash
# parameters
USERNAME="fhem"
CERTPATH="/etc/letsencrypt/live/fhem.example.org/"
HOST="fhem"
scp $CERTPATH/cert.pem $USERNAME@$HOST:/opt/fhem/certs/server-cert.pem
scp $CERTPATH/privkey.pem $USERNAME@$HOST:/opt/fhem/certs/server-key.pem
Lokal kann man natürlich auch cp nutzen. Auf die Art kopiere ich mir das Zertifikat nach dem Renewal automatisch in FHEM und auf die Fritzbox.
Hallo mahowi,
ich habe gesucht und hier gefunden ;-)
Ich erzeuge bei meinem Webhosting anbieter ein LE auf dem Webserver und kopiere es automatisch in die Fritz!Box. Soweit so gut. Hast Du eine Idee, wie ich das Zertifikat auch für FHEM nutzen könnte ? Muss ich das per scp einfach vom Webserver runterkopieren ? aber wohin ?
Gruß
Micha
Wie kopierst Du das Zertifikat automatisch auf die fritte?