2013-06-24 9 views
5

के साथ UNABLE_TO_VERIFY_LEAF_SIGNATURE मैं नोड https एक स्वयं हस्ताक्षरित प्रमाणपत्र के साथ काम करता हूं, जो कि DNS नाम के बजाय आईपी पते पर आने वाले अनुरोध के साथ काम करता है। मैं इस कोडनोडजेस - स्वयं हस्ताक्षरित प्रमाणपत्र

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(); 
}); 

यह प्रमाणपत्र (विषय के वैकल्पिक नाम के बिना) these instructions द्वारा उत्पन्न के साथ ठीक काम करता है जब अनुरोध localhost को जारी किया जाता का उपयोग कर रहा है, लेकिन जब मैं 127.0.0.1 साथ बदलें, मैं Error: Hostname/IP doesn't match certificate's altnames मिलता है। इसलिए मैंने subjectAltName के साथ उत्पन्न एक नया प्रमाणपत्र बनाया है। ओपेन्सस्ल इसे इस प्रकार पढ़ता है:

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* 

तो SAN ठीक से बनाए गए थे। अब मुझे Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE मिल रहा है, मैं इसे कैसे काम करूं?

उत्तर

0

इस प्रयास करें:

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

कि ओएस एक्स – Nick

+0

@Nick पर मेरे लिए काम किया, वास्तव में, यह किसी भी ओएस पर काम कर सकते हैं। – Formiga

+6

कृपया ध्यान दें कि यह बहुत महत्वपूर्ण सुरक्षा जांच अक्षम करता है। – oLeduc

संबंधित मुद्दे