mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 21:19:50 +01:00
5f28372207
PR-URL: https://github.com/nodejs/node/pull/47859 Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: Richard Lau <rlau@redhat.com>
74 lines
1.7 KiB
JavaScript
74 lines
1.7 KiB
JavaScript
// Flags: --tls-min-v1.0
|
|
'use strict';
|
|
|
|
const common = require('../common');
|
|
const { readKey } = require('../common/fixtures');
|
|
|
|
if (!common.hasCrypto)
|
|
common.skip('missing crypto');
|
|
|
|
const https = require('https');
|
|
const { SSL_OP_NO_TICKET } = require('crypto').constants;
|
|
|
|
const options = {
|
|
key: readKey('agent1-key.pem'),
|
|
cert: readKey('agent1-cert.pem'),
|
|
secureOptions: SSL_OP_NO_TICKET,
|
|
ciphers: 'RSA@SECLEVEL=0'
|
|
};
|
|
|
|
// Create TLS1.2 server
|
|
https.createServer(options, function(req, res) {
|
|
res.writeHead(200, { 'Connection': 'close' });
|
|
res.end('ohai');
|
|
}).listen(0, function() {
|
|
first(this);
|
|
});
|
|
|
|
// Do request and let agent cache the session
|
|
function first(server) {
|
|
const port = server.address().port;
|
|
const req = https.request({
|
|
port: port,
|
|
rejectUnauthorized: false
|
|
}, function(res) {
|
|
res.resume();
|
|
|
|
server.close(function() {
|
|
faultyServer(port);
|
|
});
|
|
});
|
|
req.end();
|
|
}
|
|
|
|
// Create TLS1 server
|
|
function faultyServer(port) {
|
|
options.secureProtocol = 'TLSv1_method';
|
|
https.createServer(options, function(req, res) {
|
|
res.writeHead(200, { 'Connection': 'close' });
|
|
res.end('hello faulty');
|
|
}).listen(port, function() {
|
|
second(this);
|
|
});
|
|
}
|
|
|
|
// Attempt to request using cached session
|
|
function second(server, session) {
|
|
const req = https.request({
|
|
port: server.address().port,
|
|
ciphers: (common.hasOpenSSL31 ? 'DEFAULT:@SECLEVEL=0' : 'DEFAULT'),
|
|
rejectUnauthorized: false
|
|
}, function(res) {
|
|
res.resume();
|
|
});
|
|
|
|
// Although we have a TLS 1.2 session to offer to the TLS 1.0 server,
|
|
// connection to the TLS 1.0 server should work.
|
|
req.on('response', common.mustCall(function(res) {
|
|
// The test is now complete for OpenSSL 1.1.0.
|
|
server.close();
|
|
}));
|
|
|
|
req.end();
|
|
}
|