NEWS
URL Request: CA signature digest algorithm too weak
-
Hallo,
ich nehme folgenden Forumseintrag mal als Basis um mein Problem zu beschreiben:
Re: [Gelöst] Problem mit URL Request: "Error: self signed certificate"
Bei meinem PhilipsTV möchte ich gerne den Status abfragen (aus, an, ..., die API könnte aber auch deutlich mehr - inklusive Steuerung des TV).
(Details zur API findet man hier: https://github.com/eslavnov/pylips)
Über folgende URL kann man abfragen wie der Powerstate ist:
https://<<tv ip>>:1926/6/powerstate
Und genau da beginnen meine Probleme. Das HTTPS-Zertifikat liefert im Chrome folgende Hinweise:
NET::ERR_CERT_AUTHORITY_INVALID Subject: restfultv.tpvision.com Issuer: ca.tpvision.com Expires on: 04.10.2042 Current date: 19.09.2020
Dazu werden Username und Passwort im Digest-Format benötigt (username und pwd liegen vor, im Chrome kann ich die Site erreichen). Ich habe jetzt schon diverse Programmieransätze verfolgt. Scheitere aber immer wieder an diesem request-Error:
Error: CA signature digest algorithm too weak
Folgenden Ansatz habe ich zuerst versucht:
const username = 'myuname', password = 'mypwd', url = 'https://<<ip tv>>:1926/6/powerstate'; request.get(url, { 'insecure': true, agentOptions: { secureOptions: 'SSL_OP_NO_SSLv3', }, 'auth': { 'user': username, 'pass': password, 'sendImmediately': false }, callback: function(error, response, body) { log("Error: "+ error); } });
Umgebaut (nach unzähligen anderen Versuchen, die alle den Error: CA signature digest algorithm too weak auswerfen) habe ich es dann zu folgendem Ansatz (basierend auf dem anderen Post):
const https = require("https"); var request = require("request"); var agentOptions; agentOptions = { host: '192.168.1.61' , port: 1926 , path: '/6/powerstate' , rejectUnauthorized: false }; var agent = new https.Agent(agentOptions); var request = require('request'); request({ url: "https://192.168.1.61:1926/6/powerstate" , method: 'GET' ,'auth': { 'user': username, 'pass': password, 'sendImmediately': false } , agent: agent }, function (err, resp, body) { log("Err: " + err); log("Body: " + body); });
Dabei stürzt die Schnittstelle des TV komplett ab und ich muss den TV Neustarten.
Kann mir bitte wer helfen, wie ich die URL mit Username & PWD im Digest bei den angegebenen Zertifikat-Problemen aufrufen kann? Ich komme nicht mehr weiter
Vielen Dank,
Rainer -
Kennt jmd. eine Möglichkeit das Security-Level im request zu setzen? Das würde mir schon helfen
-
Keiner eine Idee? Dann antworte ich eben nochmal mir selbst
:
Variante 1 leicht abgewandelt bringt mich einen Schritt weiter:
var fs = require('fs'); request.get(url, { 'insecure': true, agentOptions: { //ca: fs.readFileSync('ca.tpvision.com'), ciphers: 'DEFAULT@SECLEVEL=1', }, //secure: true, //secureOptions: { rejectUnauthorized: false }, 'auth': { 'user': username, 'pass': password, 'sendImmediately': false }, callback: function(error, response, body) { log("Error: "+ error); } });
Neuer Fehler:
Error: self signed certificate in certificate chain
-
Nächster Versuch: Zertifikat aus Chromium exportiert und auf Raspberry gespeichert. Coding:
const https = require("https"); var agentOptions; var fs = require('fs'); agentOptions = { host: '192.168.1.61' , port: 1926 , path: '/6/system' , requestCert: true , ciphers: 'DEFAULT@SECLEVEL=0' , cert: fs.readFileSync('/home/pi/philips_android_tv-master/restfultv.tpvision.com') //, rejectUnauthorized: false }; var agent = new https.Agent(agentOptions); request.get(url, { auth: { user: username, pass: password, sendImmediately: false }, agent: agent, /*agentOptions: { ciphers: 'DEFAULT@SECLEVEL=0', cert: fs.readFileSync('/home/pi/philips_android_tv-master/restfultv.tpvision.com') },*/ callback: function(error, response, body) { log("Body: " + body); log("Error: "+ error); } });
Liefert Fehler:
Error: error:140AB18E:SSL routines:SSL_CTX_use_certificate:ca md too weak
Das blöde Zertifikat ist mit SHA1 verschlüsselt... Also muss ich das irgendwie zulassen...
rejectUnauthorized: false würde wieder zum Absturt der Schnittstelle führen!
-
Hat irgendwer eine Idee? Ich habe es jetzt gelöst, indem der Fernseher als Smart-Device über Alexa2.0 adapter eingebunden ist & den Rest macht ein Harmony Hub. Die Api von oben wäre aber sehr interessant, da sie einen Adapter ermöglichen würde.
-
Hallo @ichbinsmart, ich bin gerade zufällig über den Beitrag gestolpert. Hast du mittlerweile eine Lösung gefunden?
Ich selbst nutze das Skript hier und damit klappt es ohne Probleme.
Ich habe es zwar etwas an meine Bedürfnisse angepasst aber mit der Version sollte es trotzdem funktionieren