Request: рддреНрд░реБрдЯрд┐: DEPTH_ZERO_SELF_SIGNED_CERT

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рдЬрдире░ 2013  ┬╖  51рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: request/request

рдореИрдВ рдЕрдкрдиреЗ apache2 рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЬрдм рдореИрдВ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

рддреНрд░реБрдЯрд┐: DEPTH_ZERO_SELF_SIGNED_CERT

рдореИрдВ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рднреА рд╕реБрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЕрдирдзрд┐рдХреГрдд = рд╕рддреНрдп рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд╕рдордХрдХреНрд╖ рдирд╣реАрдВ рдорд┐рд▓рд╛ (рдореИрдВрдиреЗ рд╕рдЦреНрдд рдПрд╕рдПрд╕рдПрд▓ = рдЭреВрдареА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ)ред рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдИ рдЕрдиреНрдп рдирдореВрдирд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ред

var request = require('request'),
    needle = require('needle');

request('https://127.0.0.1', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log("REQUEST:"+body);
  } else {
    console.error("REQUEST: "+error)
  }
});

needle.get('https://127.0.0.1',{rejectUnauthorized:false},function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log("NEEDLE:"+body);
  }
});

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

rejectUnauthorized: false рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛ рдЧрдИ:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0" // Avoids DEPTH_ZERO_SELF_SIGNED_CERT error for self-signed certs

рд╕рднреА 51 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣рд╛рдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ред рдиреЛрдб v0.10.1 рдФрд░ рдирд╡реАрдирддрдо рдЕрдиреБрд░реЛрдз рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

v0.10.2 . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛

v0.11.1-pre. рдореЗрдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореБрдЭреЗ рдЕрдорд╛рдиреНрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@client = tls.connect @port , @target , {rejectUnhauthorized: false}, =>
@ рдЧреНрд░рд╛рд╣рдХред рд╕рдВрджреЗрд╢ рд▓рд┐рдЦреЗрдВ
@client.setEncoding 'utf-8'

рдЖрдкрдХреЛ рдЬреЛ рдХреЛрдб рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╣реИ:

request({ url : 'https://127.0.0.1', rejectUnhauthorized : false }, function...

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рд▓рдВрдЧрдбрд╝реА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬреЛ рдореИрдВрдиреЗ рдХрд┐рдпрд╛, рдХрд╛рд░рдг, рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рд▓рд┐рдП рд▓рдВрдЧрдбрд╝рд╛ рд╣реИ ....

rejectUnauthorized: false

rejectUnauthorized: false рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛ рдЧрдИ:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0" // Avoids DEPTH_ZERO_SELF_SIGNED_CERT error for self-signed certs

рдореИрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ NODE_TLS_REJECT_UNAUTHORIZED=0 рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ рдЕрдирдзрд┐рдХреГрдд: рдЭреВрдард╛ рдирд╣реАрдВ рд╣реИред
рдиреЛрдб v0.10.1 . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП @dankohn рдФрд░ @cliffano +1ред

@case NODE_TLS_REJECT_UNAUTHORIZED https://github.com/joyent/node/pull/4023 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреБрд░рд╛рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ (рдЕрдорд╛рдиреНрдп рдФрд░ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рдЕрдиреБрдорддрд┐) рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдмрдЪ рдирд┐рдХрд▓рдиреЗ рд╡рд╛рд▓реА рд╣реИрдЪ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ -рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ рдЕрдирдзрд┐рдХреГрдд: рдЭреВрдард╛ рд╡рд╣ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред

рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐, рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, {rejectUnauthorized:false} рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рдЪрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ "рдХреНрдпрд╛ рдХреЛрдИ рдмрдврд╝рдд рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЕрдиреБрд░реЛрдз рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдареАрдХ рд╕реЗ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдХреЛрд░ рдХреБрдЫ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ?"

рдЙрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореЗрд░реЗ рдкрд╛рд╕ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорджрджрдЧрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  • рдЬрд┐рд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рдореИрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕реЗ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ SSLv3 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ( рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХреЛрдб ; рдореИрдВ рдиреЛрдб рдореЗрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рджреЗрдЦ рд░рд╣рд╛ рдерд╛)
  • рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореИрдВ SSLv3 рдХреЛ рдмрд╛рдзреНрдп рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдЬреЛ рдореБрдЭреЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛): https.globalAgent.options.secureProtocol = 'SSLv3_method';

рд╣реЗ рд▓реЛрдЧреЛрдВ,

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореИрдВрдиреЗ рдиреАрдЪреЗ рд╡рд┐рд╡рд░рдг рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ рдХреА рдЬрд╝рд░реБрд░рдд рд╣реЛ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред рдореИрдВрдиреЗ рд╕рдЦреНрддрдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рднреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдирдзрд┐рдХреГрдд рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдг: 0.10.10
рдУрдПрд╕: рд╡рд┐рдВрдбреЛрдЬ 7 x64
рдУрдкрдирдПрд╕рдПрд╕рдПрд▓: рд╡рд┐рди32 1.0.1e
рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЙрддреНрдкрдиреНрди:
openssl genrsa тАУout priv.pem 1024
openssl req -x509 -new -key priv.pem -days 3650 -out cert.crt

рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб

var https = require('https');
var express = require('express');
var app = express();
var credentials = {
    key: fs.readFileSync(__dirname + '/priv.pem', 'utf8'),
    cert: fs.readFileSync(__dirname + '/cert.crt', 'utf8')
};
var server = https.createServer(credentials, app);
server.listen(3000);

рдЗрд╕ рддрд░рд╣ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

var request = require('request');
request.defaults({
    strictSSL: false, // allow us to use our self-signed cert for testing
    rejectUnauthorized: false
});
request('https://localhost:3000', function(err) {
    console.error(err); // outputs the zero_depth error
});

@dankohn рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛

[email protected] рдФрд░ nodejs v0.10.15 rejectUnauthorized: false рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рдЕрднреА рднреА рдЗрд╕ рд╣реИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"

рдЬреЛ рдмрджрд╕реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓реА рд▓реЗрдХрд┐рди рджреЛрд╣рд░рд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдерд╛ред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреА рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдШрдЯрдирд╛ рд╣реБрдИ рдереАред рд╕рдЦреНрддрдПрд╕рдПрд╕рдПрд▓ рд╕реЗрдЯ рдХрд░реЗрдВ: рдЭреВрдард╛, рдЬреЛ рдПрдХ рдмреЙрдХреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдкрд░ рдирд╣реАрдВ (рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЕрдирдзрд┐рдХреГрдд = рдЭреВрдареА рднреА рд╡рд┐рдлрд▓)ред @dankohn рдХреЗ рд╕реБрдЭрд╛рд╡ рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдкреНрд░рдХреНрд░рд┐рдпрд╛.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

рд░реЗрд╕реНрдЯрд▓рд░ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕реЗ rejectUnauthorized: false (рдиреЛрдб v0.10.26) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдмрдВрдж рдФрд░ рд╡рд┐рд▓рдп рд╣реЛ рдЧрдпрд╛ рд╣реИ
рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐:
рдХреБрдЫ рддреГрддреАрдп рдкрдХреНрд╖ libs рдЕрднреА рднреА rejectUnauthorized: false рдмрд┐рдирд╛ рдЕрдиреБрд░реЛрдз рдФрд░ рдЙрдкрдпреЛрдЧ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ

рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ?

рдпрд╣ рдЗрддрдирд╛ рдкреБрд░рд╛рдирд╛ рд╣реИ рдХрд┐ рдореИрдВ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ рддреЛ рдмрд╕ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдФрд░ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реВрдВрдЧрд╛ред

рдпрд╣ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рд╣реИ

рдиреЛрдб 0.10.31 / рдЕрдиреБрд░реЛрдз: 2.42.0

рд╕реНрдХреНрд░реАрди рд╢реЙрдЯ: http://screencast.com/t/hcmHPBlxOHc

request.defaults(
  strictSSL: false # allow us to use our self-signed cert for testing
  rejectUnauthorized: false)

request "https://localhost:8000/index.html", (err, res, body) ->
  return console.error err if err # DEPTH_ZERO_SELF_SIGNED_CERT

рдореБрдЭреЗ рдЕрднреА рднреА рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ, v0.10.20

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; рдЕрднреА рдХреЗ рд▓рд┐рдП рдЪрд╛рд▓

@frankfuu рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 'рдЪрд╛рд▓' рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП?

рд╣рд╛рдВ, рд╣рдо рдЗрд╕ рддрд░рд╣ рдФрд░ #811 рдЬреИрд╕реЗ рдПрд╕рдПрд╕рдПрд▓ рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдФрд░ рдХреЗрд╡рд▓ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@syzer рд╕рдВрднрд╡рддрдГ? рдЕрдЪреНрдЫрд╛ рдХрдо рд╕реЗ рдХрдо рдореИрдВрдиреЗ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧреА рдкрд╛рдпрд╛

рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛, v0.10.22ред

@dankohn , @cliffano рдЖрдкрдиреЗ "NODE_TLS_REJECT_UNAUTHORIZED": "0" рдХреЛ рдХрд╣рд╛рдБ рд░рдЦрд╛ рд╣реИ?

рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ (рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ):
рд╡рд░ рд╕рд╛рдмреБрди = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рд╕рд╛рдмреБрди');
рд╡рд░ рдпреВрдЖрд░рдПрд▓ = ' https://link.to/my/url/file.wsdl ';
var args = {рдИрдореЗрд▓: ' [email protected] ', рдкрд╛рд╕рд╡рд░реНрдб: 'passwort123', рдбрд┐рд╡рд╛рдЗрд╕рдореИрдХ: '00-14-22-01-23-45'};
рд╕рд╛рдмреБрди.рдХреНрд░рд┐рдПрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ (рдпреВрдЖрд░рдПрд▓, {"NODE_TLS_REJECT_UNAUTHORIZED": "0"}, рдлрд╝рдВрдХреНрд╢рди (рдЧрд▓рддреА, рдХреНрд▓рд╛рдЗрдВрдЯ) {
client.myOperation(args, function(err, result) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдЧрд▓рддреА, рдкрд░рд┐рдгрд╛рдо);
});
});

рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдареАрдХ рдКрдкрд░ рд░рдЦреЗрдВ:

// Avoids DEPTH_ZERO_SELF_SIGNED_CERT error for self-signed certs.
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';

рдбреИрди рдХреЛрд╣рди mailto:[email protected]
рджреВрд░рднрд╛рд╖:+1-415-233-1000

рдЧреБрд░реБ, 9 рдЕрдХреНрдЯреВрдмрд░, 2014 рдХреЛ рдкреВрд░реНрд╡рд╛рд╣реНрди 11:41 рдмрдЬреЗ, рдерд╛рди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@dankohn https://github.com/dankohn , @cliffano
https://github.com/cliffano рдЖрдкрдиреЗ рдХрд╣рд╛рдВ рд░рдЦрд╛ рд╣реИ
"NODE_TLS_REJECT_UNAUTHORIZED": "0" рдореЗрдВ?

рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ (рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ):
рд╡рд░ рд╕рд╛рдмреБрди = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рд╕рд╛рдмреБрди');
рд╡рд░ рдпреВрдЖрд░рдПрд▓ = ' https://link.to/my/url/file.wsdl ';
var args = {рдИрдореЗрд▓: ' [email protected] ', рдкрд╛рд╕рд╡рд░реНрдб: 'passwort123', deviceMac:
'00-14-22-01-23-45'};
рд╕рд╛рдмреБрди.рдХреНрд░рд┐рдПрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ (рдпреВрдЖрд░рдПрд▓, {"NODE_TLS_REJECT_UNAUTHORIZED": "0"},
рдлрд╝рдВрдХреНрд╢рди (рддреНрд░реБрдЯрд┐, рдХреНрд▓рд╛рдЗрдВрдЯ) {
client.myOperation(args, function(err, result) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдЧрд▓рддреА, рдкрд░рд┐рдгрд╛рдо);
});
});

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/mikeal/request/issues/418#issuecomment -58528954ред

@dankohn : рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИред рдореЗрд░рд╛ рдХреЛрдб рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдкреНрд░рдХреНрд░рд┐рдпрд╛.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
рд╡рд░ рд╕рд╛рдмреБрди = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рд╕рд╛рдмреБрди');
рд╡рд░ рдпреВрдЖрд░рдПрд▓ = ' https://link.to/my/url/file.wsdl ';
var args = {рдИрдореЗрд▓: ' [email protected] ', рдкрд╛рд╕рд╡рд░реНрдб: 'passwort123', рдбрд┐рд╡рд╛рдЗрд╕рдореИрдХ: '00-14-22-01-23-45'};
рд╕рд╛рдмреБрди.рдХреНрд░рд┐рдПрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ (рдпреВрдЖрд░рдПрд▓, {рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ: рдЧрд▓рдд }, рдлрд╝рдВрдХреНрд╢рди (рдЧрд▓рддреА, рдХреНрд▓рд╛рдЗрдВрдЯ) {
client.myOperation(args, function(err, result) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдЧрд▓рддреА, рдкрд░рд┐рдгрд╛рдо);
});
});

@apiton : рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдореЗрд░рд╛ рдпреВрдЖрд░рдПрд▓ " https://www. " рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди " https://link. " рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ?

@jksdua рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдорд╛рдиреНрдп рдерд╛ рдФрд░ рдореИрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред

@fourq рдФрд░ @jksdua рджреЛрдиреЛрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдпрд╣ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

var request = require('request');
var request = request.defaults({
  strictSSL: false,
  rejectUnauthorized: false
});

рдпрд╛

var request = require('request').defaults({
  strictSSL: false,
  rejectUnauthorized: false
});

defaults рд╡рд┐рдзрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓реМрдЯрд╛рдПрдЧреАред
рдЗрд╕рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЪрд░ request рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ @frankfuu рдХреНрдпрд╛ рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк rejectUnauthorized рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдЕрдЧрд░ рдЖрдкрдХреЛ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ рддреЛ рдореИрдВ рдПрдХ рдФрд░ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

@thadeuszlay рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрднреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдорд╛рдВрдЧреА рд╣реИ:
рдкреНрд░рдХреНрд░рд┐рдпрд╛.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрднреА рднреА рдЗрд╕рдореЗрдВ рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ?

рдиреЛрдЯ рд╕рдВрд╕реНрдХрд░рдг 2.45.0 рдХрд╛ рдЕрдиреБрд░реЛрдз рдЖрдкрдХреЛ рдХреЗрд╡рд▓ strictSSL рдХреЛ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ rejectUnauthorized рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрджрд┐ рдЖрдк strictSSL рдХреЛ рдЧрд▓рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ rejectUnauthorized рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ undefined ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред

рд╣рд╛рдп @ рд╢реЙрдирд╕реНрдЯреНрд░реЙрдо

рдореБрдЭреЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдпрд╛рдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ @fourq рдХреЗ рд╕рдорд╛рди рдерд╛

рдЕрдиреБрд░реЛрдзред рдЪреВрдХ (
рд╕рдЦреНрддрдПрд╕рдПрд╕рдПрд▓: рдЭреВрдард╛
рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЕрдирдзрд┐рдХреГрдд: рдЭреВрдард╛)

"рдЯреНрд░рд┐рдХ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдореБрдЭреЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ

@frankfuu
@fourq рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВ рдКрдкрд░ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рд╣реВрдВред
https://github.com/mikeal/request/issues/418#issuecomment -58959393

рдХреНрдпрд╛ рдЖрдк рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛?

рдЕрдиреБрд░реЛрдз рдХрд╛ рдиреЛрдЯ рд╕рдВрд╕реНрдХрд░рдг 2.45.0 рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕рдЦреНрдд рдПрд╕рдПрд╕рдПрд▓ рдХреЛ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдирдзрд┐рдХреГрдд рднреА рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

Wfm рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдЕрдирдзрд┐рдХреГрдд рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛ рдкрд╣рд▓реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ред

@andig рдореЗрд░рд╛ рдЪреИрдЯ рд▓рд┐рдВрдЧреЛ рдереЛрдбрд╝рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ:
strictSSL: false рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдкрдХреЗ рдХрд╛рдо рдЖ рд░рд╣рд╛ рд╣реИ
рд╕рд╣реА?

@andig рдореЗрд░рд╛ рдЪреИрдЯ рд▓рд┐рдВрдЧреЛ рдереЛрдбрд╝рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ:

@seanstrom рдХреГрдкрдпрд╛ рдмрдЪрдХрд╛рдиреА рднрд╛рд╖рд╛ рдХреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВред

рд╕рдЦреНрддрдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: рдЭреВрдард╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕рд╣реА?

рд╕рд╣реАред рдореЗрд░рд╛ рдкрд┐рдЫрд▓рд╛ рдЕрд╕рдлрд▓ рдПрд╕рдПрд╕рдПрд▓ рдХрдиреЗрдХреНрд╢рди рдЬрд┐рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЕрдирдзрд┐рдХреГрдд: рдЭреВрдард╛ рдЕрдм рд╕рдЦреНрддрдПрд╕рдПрд╕рдПрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ: рдХреЗрд╡рд▓ рдЭреВрдард╛ред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛
рдЕрдЧрд░ рдпрд╣ рдЕрднреА рднреА рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реВрдВрдЧрд╛ред
рдореБрдЭреЗ рдмрддрд╛рдУ

рдЕрднреА рднреА рдпрд╣рд╛рдБ рдПрдХ рдореБрджреНрджрд╛ v10.0.32
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордпред env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
рдореБрдЭреЗ рд╕рдордЭ рдЖ рдЧрдпрд╛:
_stream_readable.js:748
рдирдИ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХреЗрдВ ('рдЕрдм рдкреБрд░рд╛рдиреЗ рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред');

@webduvet рдХреНрдпрд╛ рдЖрдк рд╣рдореЗрдВ рдПрдХ рдХреЛрдб рдирдореВрдирд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?
рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА

@seanstrom рдпрдХреАрди рд╣реИ, рдпрд╣ рдиреЛрдбрдЬ рдбреЙрдХреНрдЯрд░ рд╕реЗ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдирдореВрдирд╛ рдерд╛ред

 рдкреНрд░рдХреНрд░рд┐рдпрд╛.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
 рд╡рд░ рдЯреАрдПрд▓рдПрд╕ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдЯреАрдПрд▓рдПрд╕');
 рд╡рд░ рдПрдлрдПрд╕ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдПрдлрдПрд╕');
 рд╡рд░ рд╡рд┐рдХрд▓реНрдк = {
 рдкреНрд░рдорд╛рдгрдкрддреНрд░: fs.readFileSync('test-cert.pem'),
 рд╕рдЦреНрддрдПрд╕рдПрд╕рдПрд▓: рдЭреВрдард╛
 };
 var cleartextStream = tls.connect (8000, рд╡рд┐рдХрд▓реНрдк, рдлрд╝рдВрдХреНрд╢рди () {
 рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдиреЗрдХреНрдЯреЗрдб',
 cleartextStream.рдЕрдзрд┐рдХреГрдд? 'рдЕрдзрд┐рдХреГрдд': 'рдЕрдирдзрд┐рдХреГрдд');
 process.stdin.pipe (cleartextStream);
 рдкреНрд░рдХреНрд░рд┐рдпрд╛.stdin.resume ();
 });

@seanstrom рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд

рдмрд╛рдд рдпрд╣ рд╣реИ, рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЕрдирдзрд┐рдХреГрдд: рдЭреВрдард╛ рд╕рднреА рд╕рддреНрдпрд╛рдкрди рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рддрдм рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдореИрдВ рдкреАрдИрдПрдо рдпрд╛ рдХреБрдВрдЬреА рдпрд╛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ (рдпрд╛ рдХреБрдВрдЬреА) рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрд░реЛрдз рдЗрдВрдЬрди рд╕рдорд░реНрдерди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рдорд╛рдг рд╕реВрдЪреА рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

рд╣рд╛рдВ, rejectUnauthorized: false рдпрд╛ strictSSL: false рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рднреА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рддреНрдпрд╛рдкрди рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдпрд╛ рдЧреИрд░-рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реАрдП рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ HTTPS рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ: https://github.com/request/request/blob/master/tests/test-https.js

рдзрдиреНрдпрд╡рд╛рдж, рдирд╛рдЗрд▓рдиред рдЙрд╕ рдкрд░реАрдХреНрд╖рдг рдиреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣реЗ рдереЗред рд╣рдо рдкрд╣рд▓реЗ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕реАрдП рдмрдирд╛рдиреЗ рдФрд░ рдлрд┐рд░ рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рд╕реАрдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рдереЗред рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рд╣рдо рдпрд╣реА рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рдереЗред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрдХ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

https://nodejs.org/dist/v0.12.9/docs/api/tls.html#tls_tls_connect_options_callback

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "1";
var tls = require('tls');
var fs = require('fs');
var constants = require('constants');
var util = require('util');

var options = {
    host: 'localhost',
    strictSSL: true,
    ca: [fs.readFileSync('trusted1.pem'), fs.readFileSync('trusted2.pem') ],
    rejectUnauthorized: true, // Trust to listed certificates only. Don't trust even google's certificates.
    secureOptions: constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_TLSv1 | constants.SSL_OP_NO_TLSv1_1,
    secureProtocol: 'SSLv23_method',
    ciphers: 'ECDHE-RSA-AES128-SHA256'
};

var socket = tls.connect(3001, options, function() {
    console.log('client connected',
        socket.authorized ? 'authorized' : 'unauthorized',
        socket.encrypted ? 'encrypted' : 'unencrypted',
        '\nCipher: ' + util.inspect(socket.getCipher()),
        '\nCert Info: \n' + util.inspect(socket.getPeerCertificate(true)));
    //process.stdin.pipe(socket);
    //process.stdin.resume();
});

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЖрдкрдХреА рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреЛрдИ SSL рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИ
рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо openSsl рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдЕрдкрдирд╛ рдЕрдиреБрд░реЛрдз рдЬреЛрдбрд╝реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдпрд╛ process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0" рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ; рдЗрдВрд╢рд╛ рдЕрд▓реНрд▓рд╛рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛

рдирдорд╕реНрддреЗ,

рдореБрдЭреЗ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ "рдкреЛрд╕реНрдЯ" рд╡рд┐рдзрд┐ рдореЗрдВ "GET" рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдВ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рджреА рдЧрдИ рд╣реИ:

рдЯреЗрд╕реНрдЯ рдХреЛрдб:

`
рд╡рд░ рдлреНрд░рд┐рд╕реНрдмреА = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдлреНрд░рд┐рд╕реНрдмреА');
рдкреНрд░рдХреНрд░рд┐рдпрд╛.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

рд╡рд░ CONF = process.env['CONF'];
var config = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('../config/' + CONF);
рд╡рд░ рдбреЗрдЯрд╛ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('../tests_data/batch_data.json');

frisby.globalSetup({
рдкреНрд░рд╛рд░реНрдердирд╛: {
рд╕рдЦреНрддрдПрд╕рдПрд╕рдПрд▓: рдЭреВрдард╛,
рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЕрдирдзрд┐рдХреГрдд: рдЭреВрдард╛,
рд╢реАрд░реНрд╖рд▓реЗрдЦ: {'рдкреНрд░рд╛рдзрд┐рдХрд░рдг': 'рдЯреЛрдХрди'},
рдирд┐рд░реАрдХреНрд╖рдгрдСрдирдлреЗрд▓рд░: рд╕рдЪ
}
});

frisby.create('рдЯреЗрд╕реНрдЯ#1: рд╕рдиреА рдбреЗ рдкрд░рд┐рджреГрд╢реНрдп')
.post(config.api_url + data.api_endpoint, data.test_strace, {rejectUnauthorized: false}, {json: true})
.рдирд┐рд░реАрдХреНрд╖рдг рд╢реАрд░реНрд╖рд▓реЗрдЦ ()
рдирд┐рд░реАрдХреНрд╖рдг рдЕрдиреБрд░реЛрдз ()
.inspectJSON ()
.expectJSON(data.batch_test_response_1)
рдЯреЙрд╕ ();
`

рдирд┐рд╖реНрдкрд╛рджрди рддреНрд░реБрдЯрд┐:
рддреНрд░реБрдЯрд┐-1
Message: Error: Error parsing JSON string: Unexpected token D Given: Destination URL may be down or URL is invalid, Error: ESOCKETTIMEDOUT Stacktrace: Error: Error parsing JSON string: Unexpected token D Given: Destination URL may be down or URL is invalid, Error: ESOCKETTIMEDOUT at _jsonParse (/usr/src/app/frisby_api/node_modules/frisby/lib/frisby.js:1219:11) at null.<anonymous> (/usr/src/app/frisby_api/node_modules/frisby/lib/frisby.js:650:20) at null.<anonymous> (/usr/src/app/frisby_api/node_modules/frisby/lib/frisby.js:1074:43) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)

рддреНрд░реБрдЯрд┐-2

Message: TypeError: Cannot read property 'headers' of undefined Stacktrace: TypeError: Cannot read property 'headers' of undefined at Frisby.<anonymous> (/usr/src/app/frisby_api/node_modules/frisby/lib/frisby.js:894:20) at Frisby.<anonymous> (/usr/src/app/frisby_api/node_modules/frisby/lib/frisby.js:940:8) at null.<anonymous> (/usr/src/app/frisby_api/node_modules/frisby/lib/frisby.js:1112:18) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)

рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдзрдиреНрдпрд╡рд╛рдж

рдЗрд╕реЗ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

https.globalAgent.options.rejectUnauthorized = false;

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕