2014-09-24 37 views
0

我正在尝试使用自签名证书在HTTPS上针对Web服务器执行方法= POST。 我下载了服务器的公共证书,并把路径放在发布选项中。 但是我收到了第47行的错误[Error:DEPTH_ZERO_SELF_SIGNED_CERT]。 method = HTTPS上的GET对于具有自签名证书的此Web服务器正常工作。 我在做什么错?具有基本身份验证的客户端SSL POST给出DEPTH_ZERO_SELF_SIGNED_CERT错误

var https = require('https'); 
var querystring = require('querystring'); 
var fs = require('fs'); 


console.log("Starting..."); 

var certFile = "self_signed_cert.pem" 

function ssl_post() { 
    var username = "user"; 
    var password = "password"; 

    var post_data = ''; 
    var basic = 'Basic ' + new Buffer(username + ':' + password).toString('base64'); 
    // An object of options to indicate where to post to 
    var post_options = { 
     host: 'someservername', 
     port: 443, 
     path: '/add', 
     method: 'POST', 
     headers: { 
      'accept': '*/*', 
      'Content-Type': 'application/x-www-form-urlencoded', 
      'Content-Length': post_data.length, 
      'Authorization': basic, 
      'ca': fs.readFileSync(certFile, 'utf8') 
     } 
    }; 
    // Set up the request 
    var data = ''; 
    var post_req = https.request(post_options, function(res) { 
     //res.setEncoding('utf8'); 
     res.on('data', function(res) { 
      //res.setEncoding('utf8'); 
      res.on('data', function(chunk) { 
       data += chunk; 
      }); 
      res.on('end', function() { 
       console.log(data); 
      }); 
     }); 
    }); 
    post_req.on('error', function(e) { 
    console.log(e); 
    }); 
    // post the data 
    post_req.write(post_data); 
    post_req.end(); 
} 


ssl_post(); 

console.log("Finished."); 

回答

0

你已经把ca不直接进入post_options,但到headers部分。但是,ca不应该用作HTTP标头,因此请将其直接放入post_options

+0

就是这样!我知道,但我只是看不到它!谢谢! – 2014-09-24 04:41:57