[gelöst] Offizielles Zertifikat für HTTPS einbinden

Begonnen von Agamemnon, 01 November 2015, 11:41:09

Vorheriges Thema - Nächstes Thema

Agamemnon

Hallo zusammen,
ich habe mir für meine Webseite bei StartSSL ein offizielles Zertifikat besorgt.
Dieses würde ich nun gerne bei fhem für die HTTPS Verschlüsselung einbinden.

Leider finde ich dazu keine Anleitung. Es gibt nur den Wiki Eintrag wie ein selbstgeneriertes Zertifikat hinterlegt wird.
http://www.fhemwiki.de/wiki/Raspberry_Pi_%26_HTTPS

Ich habe inzwischen rausgefunden, dass das Zertifikat und der Key zwingend server-cert.pem und server-key.pem heißen müssen.
Ansonsten steht im log:
SSL_cert_file ./certs/server-cert.pem does not exist at /usr/share/perl5/IO/Socket/SSL.pm line 2009.
SSL_key_file ./certs/server-key.pem does not exist at /usr/share/perl5/IO/Socket/SSL.pm line 2009.

und fhem startet gar nicht erst.

Nun habe ich mein Zertifikat und Key so genannt und unter certs hinterlegt, bekomme aber die Fehlermeldung:
2015.11.01 11:21:43 1: FHEMWEB SSL/HTTPS error: Illegal seek

Hat schon mal jemand ein nicht selbsterstelltes Zertifikat bei fhem hinterlegt und kann mir sagen, was noch genau zu tun ist?

Vielen Dank im Voraus.

Gruß
Matthias

Raspberry Pi / CULV3 und JeeLinkLaCrosse
MAX Thermostat
LaCrosse TX29DTH

DecaTec

Zu "Illegal seek" gibt es in diesem Thread einige Infos.

Mir war die SSL-Konfiguration in FHEM zu unflexibel, daher nutze ich nun nginx als Reverse-Proxy. Kannst du ja auch mal ausprobieren.

Elektrolurch

Hallo,

ist das Zertifikat von startssl ein kostenloses?  Ich hatte das so verstanden, dass sie kostenlosen nur für smime gehen und nicht für https auf Server.
Bin an dem Thema nämlich auch dran, da mich das openssl - Zert nervt, weil der Broser immer wieder die Bestätigung haben will, dass ich das Zert akzeptieren, da keine gültige root-CA eingetragen ist.

Gruß

Elektrolurch
configDB und Windows befreite Zone!

DecaTec

Zitat von: Elektrolurch am 02 November 2015, 11:12:47
Bin an dem Thema nämlich auch dran, da mich das openssl - Zert nervt, weil der Broser immer wieder die Bestätigung haben will, dass ich das Zert akzeptieren, da keine gültige root-CA eingetragen ist.

Man kann sich das Zertifikat auch auf dem Rechner "installieren", dann bleiben die Warnungen aus. Muss dann natürlich auf jedem Gerät passieren, mit dem man darauf zugreift.

Aber es gibt einen Licktblick: Let's Encrypt wird in Zukunft kostenlosen Zertifikate ausgeben. Ist im Moment noch in der Beta-Phase, für die man sich bewerben kann. Geplanter public Release ist allerdings noch Q4 2015.

herrmannj

Zitat von: Elektrolurch am 02 November 2015, 11:12:47
Hallo,

ist das Zertifikat von startssl ein kostenloses?  Ich hatte das so verstanden, dass sie kostenlosen nur für smime gehen und nicht für https auf Server.
Bin an dem Thema nämlich auch dran, da mich das openssl - Zert nervt, weil der Broser immer wieder die Bestätigung haben will, dass ich das Zert akzeptieren, da keine gültige root-CA eingetragen ist.

Gruß

Elektrolurch

Die machen beides, SMIME und Server. Vorteil bei StartSSL, die sind in allen browsern als root hinterlegt..

viele Grüße
Joerg

Agamemnon

Ja die machen beides.
Leider finde ich aber nirgends eine Anleitung wie man diese Zertifikate in PGM2 einbinden kann.  :(

Hast du eine Anleitung wie man nginx als Reverse-Proxy einrichtet?
Eigentlich wäre das aber nur meine Notlösung. Es muss doch gehen, einfach das Selbserstellte durch ein richtiges Zertifikat auszutauschen.

Gruß
Matze
Raspberry Pi / CULV3 und JeeLinkLaCrosse
MAX Thermostat
LaCrosse TX29DTH

DecaTec

Zitat von: Agamemnon am 02 November 2015, 11:51:14
Hast du eine Anleitung wie man nginx als Reverse-Proxy einrichtet?

Google liefert hier sehr viele Beispiele, wenn du nach "nginx reverse proxy" suchst. Ob das Backend nun FHEM oder etwas anderes ist, ist dabei egal.

Falls du eher Erfahrungen mit Apache hast, kannst du natürlich auch das verwenden. Nginx ist mMn für den Neuling etwas komplizierter bzw. von der Konfiguration auch unlogischer. Dafür auf kleinen Maschinen wie dem RasPi auch sparsamer, was Ressourcen angeht.

Klar, es ist erst einmal ein Einarbeitungsaufwand da, aber spätestens wenn du neben FHEM noch was anderes laufen lassen willst, kommt dir diese Erfahrung zugute.

Agamemnon

Hallo zusammen,
habe es hinbekommen.  ;D
Ist eigentlich ganz einfach, wenn man die Rechte auf den nötigen Dateien richtig setzt.  :P

Wenn geünscht kann ich gerne mal eine kurze Anleitung schreiben, wie man ein StartSSL Zertifikat erstellt und einbindet.

Gruß
Matze
Raspberry Pi / CULV3 und JeeLinkLaCrosse
MAX Thermostat
LaCrosse TX29DTH

All-Ex

Ja, gerne  :) Das würde ich auch gerne implementieren !

Tedious

FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

Elektrolurch

Ja. Anleitung interessiert mich auch. Wäre super nett, spart dann doch etwas Zeit und man kann andere Themen dafür angehen.
configDB und Windows befreite Zone!

Agamemnon

#11
Hier also eine kurze Anleitung für den Einsatz eines "echten" Zertifikats von StartSSL:

Anmerkung vorab:
Ab 03.12.2015 wird https://letsencrypt.org/ online gehen. Die wollen das ganze Verfahren noch vereinfachen. Evtl probiere ich das auch noch und erweitere dann hier: :)

Voraussetzung:
Es wird eine eigene Domäne benötigt. Es kann kein Zertifikat für URLs wie xyz.dyndns.org erstellt werden.

StartSSL Account erstellen:
Auf https://www.startssl.com/ per Signup einen Account einrichten.
Nicht wundern, es gibt bei StartSSL kein Login und Passwort.
Konsequenterweise bekommt ihr ein Zertifikat welches ihr in euren Browser importieren müsst.
Damit meldet ihr euch zukünftig bei StartSSL an.

Domänenbesitz bestätigen:
Ist dein Account vollständig eingerichtet und freigeschaltet, musst du unter Validations Wizard - Domain Name Validation deine Domain (ohne www oder sonstiges!) hinzufügen.
Ein Verfication Code wird an eine Mailadresse gesendet, die du dir aus einer Liste aussuchen kannst.
Stelle sicher, dass es diese Adresse auch wirklich gibt, denn den Code musst du anschließend eingeben, um den Besitz der Domain zu bestätigen.

Auf dem Raspi privaten Schlüssel und Zertifikats-Request erstellen:
sudo openssl genrsa -out server-key.pem 4096
sudo openssl req -new -sha256 -key server-key.pem -out cert_request.csr

Alle Abfragen können mit Enter bestätigt werden, da eh alle Angaben mit Ausnahme des öffentlichen Schlüssels von StartSSL verworfen werden.

Zertifikat erstellen:
Auf der Webseite von StartSSL anmelden und den Certificates Wizard starten; als Certificate Target wählt man im Drop-Down den Eintrag Web Server SSL/TLS Certificate
Als nächstes kann ein KEY und CSR von StartSSL erstellt werden. Dieses würde ich vermeiden, da der Key eigentlich geheim bleiben sollte. Diesen Schritt also mit Skip überspringen.
Anschließend wird der Inhalt der erstellten cert_request.csr Datei in das Textfeld kopiert
Im nächsten Schritt muss man seine Domäne auswählen
Anschließend kann man eine Subdomain eingeben. Ich habe dort "www" eingetragen. Damit ist das Zertifikat gültig für DEINEDOMAIN.de und für www.DEINEDOMAIN.de
Nun wird dein Zertifikat im PEM-Format erstellt; kopiere den gesamten Inhalt des Textfeldes in die Zwischenablage und von dort in eine Datei namens server-cert.pem

Zertifikat und Key auf dem Raspi hinterlegen:
Nun müssen die beiden Dateien server-key.pem und server-cert.pem auf dem Raspi nach /opt/fhem/certs/ kopiert werden.

Owner und Rechte anpassen:
sudo chown fhem:root /opt/fhem/certs/server-cert.pem
sudo chmod 600 /opt/fhem/certs/server-cert.pem

sudo chown fhem:root /opt/fhem/certs/server-key.pem
sudo chmod 600 /opt/fhem/certs/server-key.pem

fhem neu starten.
Anschließend sollte beim Zugriff per https das gültige Zertifikat ausgeliefert werden (siehe Anhang).

Viel Erfolg!

Gruß
Matze
Raspberry Pi / CULV3 und JeeLinkLaCrosse
MAX Thermostat
LaCrosse TX29DTH

Brockmann

Danke für die Anleitung. Wäre auch was fürs FHEM-Wiki.

drhirn

Zitat von: Agamemnon am 13 November 2015, 13:18:34
Nicht wundern, es gibt bei StartSSL kein Login und Passwort.

Dafür wird ein persönliches Zertifikat im Browser hinterlegt. Das sollte mit Vorsicht behandelt werden. Ansonsten kann jeder, der Zugriff auf den Browser hat, Zertifikate in deinem Namen ausstellen.

Detaillierte Anleitung für Zertifikate mit StartSSL gibt's bei heiseSecurity

Elektrolurch

Hallo Matze,

danke für die Anleitung. Habe da aber noch eine Verständnisfrage:

Ich habe eine Domäne, wobei die Webhseite extern gehostet wierd und auch dazu gibgt es Mailadressen.
Nun heisst der Webserver für fhem ja ganz anders, sagen wir z.B. fhemserver
Und das vpn terminiert auf der Fritzbox, also so was wie osdddk.myfritz.net

Damit das Zertifikat für den fhemserver passt, was muss ich da eingeben?
Irgendwo im Netz hatte ich gelesen, dass man das als Subdomaine zur lokalen Fritzbox  eingeben sollte, also so:

fhemserver.fritz.box

Oder habe ich das verwechselt und die ÄAngabe betrifft nur das vpn? Und für das Zertifikat ist es egal?

Elektrolurchj

configDB und Windows befreite Zone!