2016-06-01 22 views
7

ilk sertifikası doğrulanamıyor Bir Nodejs API'm var ve ssl ve https kullanıyor, bu yüzden express js kullanarak bir web uygulaması oluşturmak için farklı bir sunucuda tüketmeye çalışıyorum. Hiçbir başarı ile ben aşağıdakileri denedimNode.js

events.js:141 
     throw er; // Unhandled 'error' event 
    ^

Error: unable to verify the first certificate 
    at Error (native) 
    at TLSSocket.<anonymous> (_tls_wrap.js:1017:38) 
    at emitNone (events.js:67:13) 
    at TLSSocket.emit (events.js:166:7) 
    at TLSSocket._init.ssl.onclienthello.ssl.oncertcb.TLSSocket._finishInit (_tls_wrap.js:582:8) 
    at TLSWrap.ssl.onclienthello.ssl.oncertcb.ssl.onnewsession.ssl.onhandshakedone (_tls_wrap.js:424:38) 

:

Ben bir GET isteği yapan aşağıdaki hatayı alıyorsunuz

  • istek üzerine require('ssl-root-cas').inject(); ve rejectUnauthorized: false, ekleme. web uygulaması için

    var service_bus = require('service_bus'); 
    var error_engine = require('error_engine'); 
    
    exports.get = function(call_back){ 
    
        function request_service() { 
         require('ssl-root-cas').inject(); 
    
        var end_point = { 
         host: "www.xxxx.com", 
         port: "4433", 
         path: "/api/xxx/xx/", 
         method: "GET", 
         headers: { 
          "Content-Type": "application/json", 
          "X-app-key": "xxxxxxxxxxxxxxxxxxxxxxxxxx" 
         }, 
         is_ssl: true 
        }; 
    
    
    service_bus.call(end_point, {}, function (error, result) { 
        console.log(error); 
         if (!error) { 
          return call_back(result); 
         } 
         else { 
          return call_back(error_engine.get_error_by_code('1500', '')); 
         } 
        }); 
    } 
    
    request_service(); 
    
    }; 
    

    ve ana dosya:

    var express = require('express'); 
    var exphbs = require('express-handlebars'); 
    var path  = require('path'); 
    var passport = require('passport'); 
    var session = require('express-session'); 
    var uuid  = require("node-uuid"); 
    var cookieParser = require('cookie-parser'); 
    var bodyParser = require('body-parser'); 
    var mongoose = require('mongoose'); 
    var app  = express(); 
    
    app.engine('handlebars', exphbs({defaultLayout: 'main'})); 
    app.set('view engine', 'handlebars'); 
    
    app.use(cors()); 
    app.use(express.static(__dirname + '/public')); 
    app.use('img',express.static(path.join(__dirname, 'public/images'))); 
    app.use('js',express.static(path.join(__dirname, 'public/js'))); 
    app.use('css',express.static(path.join(__dirname, 'public/css'))); 
    app.use('fonts',express.static(path.join(__dirname, 'public/fonts'))); 
    //app.use(exphbs.registerHelper('paginate', paginate)); 
    app.use(cookieParser()); 
    app.use(bodyParser.json()); 
    app.use(bodyParser.urlencoded({ extended: true })); 
    app.use(passport.initialize()); 
    app.use(passport.session()); 
    app.use(session({ 
        proxy: true, 
        resave: true, 
        saveUninitialized: true, 
        uuid: function(req) { 
         return uuid() 
        }, 
        secret: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
    })); 
    
    
    require("./xxxxxxx/endpoints")(app); 
    require("./xxxxxxxx/endpoints")(app); 
    require("./xxxxxxxx/endpoints")(app, passport); 
    
    mongoose.connect("mongodb://localhost/database"); 
    app.listen(8080); 
    
    bana Error: socket hang up

istek kodunu verdi benim ana dosyası, üzerinde process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; Ekleme

  • Bu hatanın neden oluştuğuna dair herhangi bir öneri çok takdir edilmektedir.

  • +0

    Bunun için bir çözüm buldunuz mu? Aws-sdk ile aynı sorunu yaşıyorum – user3375230

    +0

    Benzer bir sorun http: http://www.microsoft.com/downloads/index.php?static=support adresinde http://support.microsoft.com/downloads/support adresinden http://support.microsoft.com/downloads/default.aspx adresindeki http://support.microsoft.com/downloads/support adresinden Google + api'ye benzer bir sorunla karşılaştım – Roy

    cevap

    7

    Ne dendiğini başka bir paket kullanarak bu sorunu çözmek "istek" de API çağırmadan önce

    process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; 
    

    eklemeyi unutmayın.

    +7

    Bu çok güvensiz. Daha iyi seçenekler için cevaplara bakın: http://stackoverflow.com/questions/31673587/error-unable-to-verify-the-first-certificate-in-nodejs – LouisK

    +0

    Teşekkürler @LouisK, güvenli olmadığını biliyorum ama sadece test için. –