Перейти к содержанию

HTTPS

Протокол передачи данных HTTPS — это тот же протокол HTTP с поддержкой шифрования, которое обеспечивают протоколы криптографии SSL и TSL. Обычно HTTPS используется там, где необходима безопасная передача личных данных, и занимает 443 порт (обычный HTTP использует 80 порт).

Принцип работы протокола HTTPS строится вокруг сертификата сервера, открытого и закрытого ключей. Сертификат используется для идентификации сервера клиентом, открытый ключ посылается клиенту и используется для шифрования сообщений, посылаемых серверу, которые могут быть расшифрованы только закрытым ключом. Сам закрытый ключ хранится на сервере. Подробно о протоколе HTTPS можно прочитать здесь.

В Node.js HTTPS сервер создается с помощью встроенного модуля https.

app.js

const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')

const host = '127.0.0.1'
const port = 7000

https
  .createServer(
    {
      key: fs.readFileSync('/cert/key.pem'),
      cert: fs.readFileSync('/cert/cert.pem')
    },
    app
  )
  .listen(port, host, function() {
    console.log(`Server listens https://${host}:${port}`)
  })

Обратите внимание, что сертификат и закрытый ключ задается с помощью свойств key (закрытый ключ) и cert (сертификат) объекта, передаваемого методу createServer() первым аргументом.

Для использования в Node.js HTTPS совместно с фреймворком Express, создание сервера осуществляется с помощью метода createServer(), которому вторым параметром передается экземпляр express.