Eigene Alexa-Skills auf Heimserver betreiben

Grapholion

Lt. Junior Grade
Registriert
Mai 2006
Beiträge
317
Hi Leute,

wollte euch mal um Rat fragen.

Ich habe mich auf der Entwicklerseite von Amazon angemeldet damit ich für meine Alexa Skills erstellen kann. Dazu habe ich mir einen Raspberry Pi Zero als Heimserver eingestellt. Darauf laufen diverse Skripte und mein Python-Programm um die Alexa Befehle abzufangen.

Die zu verarbeitende Einheit - in diesem Fall mein Raspberry - muss über https verfügen und der Port 5000 muss offen sein:

Alexa >>> Amazon.Sprachserver >>> https Port 5000 Server >>> Befehl wird ausgeführt (z.B. Fernseher gestartet)

Ich habe es über ngrok hinbekommen. Mein Server wird einfach auf ngrok durchgetunnelt und bekommt eine dynamische Internetadresse mit http und https. Problem dabei ist, wenn ich den Raspberry herunterfahren würde, dann verliere ich die Adresse und muss eine neue generieren lassen. Dann muss ich natürlich die neue Adresse auf der Entwicklerseite von Amazon in jeder meiner Skills wieder eintragen. Eine ***** arbeit jedesmal.

Nun habe ich mir nginx auf den Raspberry installiert und ein eigenes SSL Zertifikat erzeugt um eine https zu erzeugen. Ich habe es getestet indem ich eine Webseite über https laufen lassen hab. Und die ist von außen verfügbar (also nicht nur im Netzwerk sondern im Internet). Jedoch keine Kommunikation mit dem Amazon Server. Also der Befehl kommt nicht an.

Hoffe es sind genug Hintergrundinformationen ansonsten nachfragen :)

Jetzt zu meiner eigentlichen Frage. Da ich kein großer Server und Netzwerk Spezialist bin frage ich nochmal nach.

Reicht es ein anerkanntes SSL Zertifikat auf meinen nginx zu legen damit Amazon mir diesen anerkennt und dann funktioniert es ? Oder muss ich im Raspian was umstellen damit der Port 5000 auch unter SSL läuft?
 
Grapholion schrieb:
Nun habe ich mir nginx auf den Raspberry installiert und ein eigenes SSL Zertifikat erzeugt um eine https zu erzeugen. [...]

Reicht es ein anerkanntes SSL Zertifikat auf meinen nginx zu legen damit Amazon mir diesen anerkennt und dann funktioniert es ? Oder muss ich im Raspian was umstellen damit der Port 5000 auch unter SSL läuft?

Darf man dem obigen Text entnehmen, dass das ein self-signed Cert ist? Das würde erklären, warum Amazon dir nicht traut. Könnte ja sonst jeder behaupten, dass er vertrauenswürdig ist ;) Da muss normalerweise schon eine CA hinter hängen...

Du schmeißt da außerdem ein wenig deine Begriffe durcheinander: "https erzeugen"? Der Port soll "unter SSL laufen"?
SSL (bzw. TLS) sowie HTTPS sind erst einmal Protokolle, die tun alleine noch nicht viel - dein Webserver muss auch entsprechend konfiguriert sein.

Was sagt dein nginx? Ist der konfiguriert auf Port 5000 eine Verbindung zu akzeptieren? Hast du ein Log, aus dem du Verbindungsversuche auf Port 5000 erkennen kannst?
 
Tut mir Leid für die Verwirrung. Schneller tippen, als denken ;).

Ja das Zertifikat ist von mir selber erzeugt und nginx nimmt es an.
Ich habe mit Python ein Programm laufen, welches auf Port 5000 lauscht.

Bisher habe ich mir ngrok meinen Server eben durchgetunnelt und das https Protokoll mit einer anerkannten SSL-Zertifizierung bekommen. Aber dies eben nur Dynamisch erzeugt und nicht dauerhaft. Es funktioniert auch. Amazon nimmt es an und meine Befehle kann ich im Terminal nachverfolgen. Nur eben mit meinem selbst erzeugten Zertifikat geht es logischer weise nicht.

Also brauch ich ein anerkanntes Zertifikat ( wenn jemand eine Seite kennt woher ich es Kostenlos beziehen kann, wäre es super). Muss ich irgendwas auf Raspbian einstellen um danach Port 5000 mit dem Zertifikat zu versehen oder reicht es das Zertifikat auf nginx abzulegen? Auf nginx ist ja der https Port 443 angeben und ich kann meine Testseite erreichen.
 
Hab´s geschafft.
Zertifikat selbst generiert.
Auf der Skill-Seite kann man seinen personalisierten Schlüssel einfügen.
Amazon kommuniziert auf Port 443, also falls vorhanden nginx oder apache abschalten.
Python auf Port 443 gelegt und Zertifikat zugewiesen.
Schon kommuniziert Alexa mit dem Raspi. Vorteilhaft ist natürlich DynDNS oder wie in meinem Fall eine statische IP auf welche ich ne Subdomain gelegt hab.

Gruß Graph
 
Zurück
Oben