2013-06-24 7 views
5

Ich versuche, den Knoten https mit einem selbstsignierten Zertifikat arbeiten zu lassen, bei dem eine Anfrage an die IP-Adresse anstelle eines DNS-Namens gesendet wird. Ich verwende diesen Codenodejs - UNABLE_TO_VERIFY_LEAF_SIGNATURE mit selbstsigniertem Zertifikat

var tls = require('tls'); 
var fs = require('fs'); 

var cert = fs.readFileSync(__dirname + '/cert.pem'); 
var key = fs.readFileSync(__dirname + '/key.pem'); 

var netServer = new tls.Server(options = { key: key, cert: cert }); 
var port = 54321; 

netServer.listen(port); 

netServer.on('secureConnection', function(socket) { 
    socket.end('heyyyoooo'); 
}); 

var client = tls.connect(port, 'localhost', { 
    ca: [ cert ], 
    rejectUnauthorized: true 
}); 

client.on('data', function(data) { 
    console.log(data.toString()); 
    process.exit(); 
}); 

Es arbeitet mit dem cert fein erzeugt durch these instructions (ohne Subject Alternative Names), wenn die Anforderung an localhost ausgegeben wird, aber wenn ich es ersetzen mit 127.0.0.1, ich Error: Hostname/IP doesn't match certificate's altnames bekommen. Also habe ich ein neues Zertifikat erstellt mit subjectAltName. Openssl liest es als:

Certificate: 
     Data: 
      Version: 3 (0x2) 
      Serial Number: 11107838472034892631 (0x9a26f83d0c0ebb57) 
     Signature Algorithm: sha1WithRSAEncryption 
      Issuer: CN=127.0.0.1 
      Validity 
       Not Before: Jun 24 09:51:56 2013 GMT 
       Not After : Jun 22 09:51:56 2023 GMT 
      Subject: CN=127.0.0.1 
      Subject Public Key Info: 
       Public Key Algorithm: rsaEncryption 
        Public-Key: (1024 bit) 
        Modulus: *skipped* 
        Exponent: 65537 (0x10001) 
      X509v3 extensions: 
       X509v3 Key Usage: 
        Key Encipherment, Data Encipherment 
       X509v3 Extended Key Usage: 
        TLS Web Server Authentication 
       X509v3 Subject Alternative Name: 
        DNS:localhost, IP Address:127.0.0.1 
     Signature Algorithm: sha1WithRSAEncryption 
*skipped* 

So wurden die SANs ordnungsgemäß erstellt. Jetzt bekomme ich Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE, wie kann ich es funktionieren lassen?

Antwort

0

Versuchen Sie folgendes:

process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; 
+1

Das ist für mich auf OS X. – Nick

+0

@ Nick arbeitete, tatsächlich, es auf jedem Betriebssystem arbeiten kann. – Formiga

+6

Bitte beachten Sie, dass dadurch sehr wichtige Sicherheitskontrollen deaktiviert werden. – oLeduc

Verwandte Themen