2016-04-05 2 views
1

Ich erhalte den obigen Fehler, wenn ich versuche, eine Verbindung zu einem Webserver mit einem node.js Client herzustellen, den ich gerade schreibe.NodeJS 'DEPTH_ZERO_SELF_SIGNED_CERT'

Aber ich bekomme einen Fehler, wenn ich versuche, eine Verbindung zum Server herzustellen.

'DEPTH_ZERO_SELF_SIGNED_CERT'

Dies ist der Code, der die Anforderung sendet. Und das Deaktivieren der Zertifikatsüberprüfung ist keine gültige Option. Ich brauche die Verbindung gesichert werden.

Wenn mir jemand sagen kann, wie ich die Zertifizierung richtig einrichten kann, so wird kein Fehler generiert?


Bild des Zertifikatsbündels. Wie Sie sehen können, enthält das Paket nur die Stammzertifikate, die das Zertifikat, das der Server selbst bereitstellt, überprüfen müssen.

Cert bundle

+0

Wenn Sie Ihre .crt-Datei öffnen, sehen Sie einen Puffer oder richtigen Text? Wenn es ein Puffer ist, denke ich, dass Sie das tatsächliche Zertifikat verwenden müssen (entweder transformieren Sie es in Knoten oder verwenden Sie die entsprechende .pem-Datei, wenn Sie es haben) – VirginieLGB

+0

Die Datei beginnt mit '----- BEGIN CERTIFICATE ----- 'direkt, kein Leerzeichen davor. –

+0

Dann denke ich, das Problem kommt von der Unterzeichnung. Versuchen Sie, eine neue zu erstellen und sicherzustellen, dass jedes Feld korrekt ist? – VirginieLGB

Antwort

0

Das Problem wird durch den Code unten gelöst. Ich habe options.agent = http.Agent(options); hinzugefügt, und das hat das Problem gelöst.

Für alle, die versuchen, sich an einem sicheren Server zu authentifizieren und den obigen Fehler erhalten, könnte dies Ihre Lösung sein. Im Folgenden habe ich den bearbeiteten Code hinzugefügt.

var options = 
     { 
      hostname: baseUri, 
      port: 443, 
      path: 'oauth', 
      method: 'POST', 
      requestCert: true, 
      headers: { 
       //'User-Agent': USER_AGENT, 
       'Content-Type': 'application/x-www-form-urlencoded', 
       'Content-Length': data.length 
      } 
     }; 
     options.agent = http.Agent(options); 

     var req = http.request(options, (res) => { 
      console.log('statusCode: ', res.statusCode); 
      console.log('headers: ', res.headers); 

      res.on('data', (d) => { 
      process.stdout.write(d); 
      }); 
     }); 

     req.write(data) 
     req.end(); 

     req.on('error', (e) => { 
      console.error(e); 
     });