почему мой экспресс-сервер поддерживает https ТОЛЬКО через браузер, но не через другие скрипты nodejs? - PullRequest
0 голосов
/ 08 мая 2018

Я создал ExpressJS-сервер, который предоставляет маршрут для запроса на получение.

Я использую самоподписанный сертификат, чтобы разрешить вызовы https. Он отлично работает, когда я выполняю запрос через основные браузеры (Chrome, Safari и Firefox). Однако , когда дело доходит до реального варианта использования , а именно выполнить запрос get через другой скрипт nodeJs, серверу не удается передать запрос, и я получаю это сообщение об ошибке:

  Error: unable to verify the first certificate
    at TLSSocket.<anonymous> (_tls_wrap.js:1105:38)
    at emitNone (events.js:106:13)
    at TLSSocket.emit (events.js:208:7)
    at TLSSocket._finishInit (_tls_wrap.js:639:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:469:38)

Конфигурация приложения My Express:

app.use([
    express.urlencoded({ extended: true }),
    express.json(),
    function (req, res, next) {
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        res.header("Access-Control-Allow-Methods", "GET");
        next();
    },
]);

Сервер создается с использованием пакета https для узла:

const credentials = {
    key: fs.readFileSync(credits.sslPrivateKey, "utf8"),
    cert: fs.readFileSync(credits.sslCertificate, "utf8")
};
let httpsServer = https.createServer(credentials, app);

Соответствующие пакеты:

express: "^4.16.3",
node: v8.10.0,
npm: 5.8.0

1 Ответ

0 голосов
/ 08 мая 2018

Ваш скрипт nodejs вызывает ваш сервер, он будет выполнять полный процесс проверки TLS (как вы надеетесь). Это проверит сертификаты на действительность и т. Д. Самозаверяющие сертификаты не пройдут этот процесс, так же как они не пройдут в вашем браузере. В вашем браузере вам нужно вмешаться и явно сказать «Продолжить в любом случае», вам нужно будет сделать это и с вашим кодом вызова. Ознакомьтесь с документацией выбранной вами библиотеки, чтобы узнать, как это сделать.

Примечание: Убедитесь, что вы не оставили эту опцию включенной в производство . Используйте какую-то переменную среды для ее настройки или разместите свой первый сервис и вообще не отключайте проверки TLS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...