HTTPS


Стабильность: 2 – Стабильная

АПИ является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.

HTTPS это протокол HTTP через TLS / SSL. В Node.js это реализовано как отдельный модуль.

Class: https.Agent

Объект Agent для HTTPS родобен http.Agent.

Смотрите https.request() для получения детальной информации.

Class: https.Server

Этот класс является подклассом tls.Server и генерирует события так же как и http.Server.

Смотрите http.Server для получения детальной информации.

server.setTimeout(msecs, callback)

Смотрите http.Server#setTimeout().

server.timeout

Смотрите http.Server#timeout.

https.createServer(options[, requestListener])

Возвращает новый объект HTTPS веб-сервера. options похож на tls.createServer(). RequestListener это функция, которая автоматически добавляется к событию 'request'.

Пример:

// curl -k https://localhost:8000/
const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
  cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('hello world\n');
}).listen(8000);

Или

const https = require('https');
const fs = require('fs');

const options = {
  pfx: fs.readFileSync('server.pfx')
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('hello world\n');
}).listen(8000);

server.close([callback])

Смотрите http.close() для получения детальной информации.

server.listen(handle[, callback])

server.listen(path[, callback])

server.listen(port[, host][, backlog][, callback])

Смотрите http.listen() для получения детальной информации.

https.get(options, callback)

Как http.get(), но для HTTPS.

options могут быть объектом или строкой. Если options является строкой, то она автоматически анализируется с помощью с url.parse().

Пример:

const https = require('https');

https.get('https://encrypted.google.com/', (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);

  res.on('data', (d) => {
    process.stdout.write(d);
  });

}).on('error', (e) => {
  console.error(e);
});

https.globalAgent

Глобальный экземпляр https.Agent для всех клиентских запросов HTTPS.

https.request(options, callback)

Делает запрос на защищенный веб-сервер. options могут быть объектом или строкой. Если options является строкой, то она автоматически анализируется с помощью url.parse().

Все опции от http.request() являются действительными.

Пример:

const https = require('https');

var options = {
  hostname: 'encrypted.google.com',
  port: 443,
  path: '/',
  method: 'GET'
};

var req = https.request(options, (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);

  res.on('data', (d) => {
    process.stdout.write(d);
  });
});
req.end();

req.on('error', (e) => {
  console.error(e);
});

Аргумент опций имеет следующие параметры:

host: доменное имя или IP-адрес сервера, чтобы выдать запрос. По умолчанию " localhost ".

hostname: альтернативное [дополнительное] имя для host. Для поддержки url.parse() hostname предпочтительнее host. family: IP-адрес, который family использует при обработке host и hostname.

Допустимые значения 4 или 6. Если параметр не указан, будет использоваться как IP v4, так и v6.

port: Порт удаленного сервера. По умолчанию 443.

localAddress: Локальный интерфейс для привязки сетевых соединений.

socketPath: доменный сокет Unix (используйте один из хостов: port или socketPath ).

method: Строка, определяющая метод запроса HTTP. По умолчанию 'GET'.

path: Путь запроса. По умолчанию '/'. Должен включать в себя строку запроса, если таковые имеются. НАПРИМЕР. '/index.html?page=12'. Срабатывает исключение, когда путь запроса содержит недопустимые символы. В настоящее время недопустимы только пробелы, но это может измениться в будущем

headers: Объект, содержащий заголовки запроса.

auth: Базовая аутентификация, т.е. используется 'user:password', чтобы вычислить заголовок авторизации.

agent: Управляет поведением Agent.

Когда агент используется Agent запрос будет изменен по умолчанию на Connection: Keep-Alive. Возможные значения:

  • undefined (по умолчанию): использовать globalAgent для этого хоста и порта.
  • Объект Agent: напрямую использует переданное в Agent .
  • false: перестает соединяться с Agent посредством пулов соединений, по умолчанию меняет запрос на Connection: close.

Могут быть указаны также следующие варианты от tls.connect(). Тем не менее, globalAgent игнорирует следующее без уведомлений.

pfx: Сертификат, секретный ключ и сертификаты CA для использования SSL.По умолчанию null.

key: Секретный ключ для использования SSL.По умолчанию  null.

passphrase: Строка многословный пароля для секретного ключа или PFX. По умолчанию null.

cert: Открытый сертификат x509. По умолчанию null.

ca: Строка, буфер или массив строк или буферов доверенных сертификатов в формате PEM. Если это не принимается во внимание то , будет использоваться хорошо известный "корень" CA, как VeriSign. Они используются для авторизации соединения.

ciphers: Строка, описывающая шифры для использования или исключения. Прочтите  для получения деталей о формате.

rejectUnauthorized: Если значение true, то сертификат сервера проверяется на соответствие списку поставляемых CA. Генерируется событие 'error', если проверка неудачна. Проверка происходит на уровне подключения, перед тем запрос HTTP посылается. По умолчанию true.

secureProtocol: Метод SSL, например, SSLv3_method  чтобы запустить SSL version 3. Возможные значения зависят от установки OpenSSL и определены в постоянных методах SSL.

servername: Имя сервера для SNI (Индикация Имени Сервера) расширение TLS.

Для того, чтобы задать эти параметры, используйте пользовательский Agent.

Пример:

var options = {
  hostname: 'encrypted.google.com',
  port: 443,
  path: '/',
  method: 'GET',
  key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
  cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};
options.agent = new https.Agent(options);

var req = https.request(options, (res) => {
  ...
});

В качестве альтернативы, откажитесь от организации связного пула путем не использования Agent.

Пример:

var options = {
  hostname: 'encrypted.google.com',
  port: 443,
  path: '/',
  method: 'GET',
  key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
  cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'),
  agent: false
};

var req = https.request(options, (res) => {
  ...
});