рдореИрдВ рдЕрдкрдиреЗ 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);
}
});
рдпрд╣рд╛рдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ред рдиреЛрдб 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}
рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рдЪрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ "рдХреНрдпрд╛ рдХреЛрдИ рдмрдврд╝рдд рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЕрдиреБрд░реЛрдз рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдареАрдХ рд╕реЗ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдХреЛрд░ рдХреБрдЫ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ?"
рдЙрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореЗрд░реЗ рдкрд╛рд╕ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорджрджрдЧрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
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
рдмрд┐рдирд╛ рдЕрдиреБрд░реЛрдз рдФрд░ рдЙрдкрдпреЛрдЧ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ
рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ?
рдпрд╣ рдЗрддрдирд╛ рдкреБрд░рд╛рдирд╛ рд╣реИ рдХрд┐ рдореИрдВ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ рддреЛ рдмрд╕ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдФрд░ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реВрдВрдЧрд╛ред
рдпрд╣ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рд╣реИ
рд╕реНрдХреНрд░реАрди рд╢реЙрдЯ: 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;
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
rejectUnauthorized: false
рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛ рдЧрдИ: