Создание SSL-сертификатов для использования с Node.js - PullRequest
0 голосов
/ 07 апреля 2019

Мне нужно запустить локальный сервер Express по протоколу https.Я использовал инструкции с этого сайта и тому подобное.Но когда я пытался открыть страницу в браузере, я получаю ошибку Your connection is not private.Когда я открыл Security вкладку из Developer tools, я увидел This site is missing a valid, trusted certificate (net::ERR_CERT_INVALID) ошибку.Когда я попытался отправить запрос через Почтальон, мой сервер не ответил, и запрос curl возвращает:

curl: (60) SSL certificate problem: unable to get local issuer certificate

Вот код сервера:

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

const options = {
  key: fs.readFileSync('./key.pem'),
  cert: fs.readFileSync('./cert.pem')
};

app.get('/', (req, res) => {
  res.send('hello world');
});

https
  .createServer(options, app)
  .listen(3000, '127.0.0.1', () => {
    console.log('Run on: https://127.0.0.1:3000');
  });

Я имеюсоздал сертификаты с помощью следующей команды:

$ openssl req -nodes -sha256 -new -x509 -keyout key.pem -out cert.pem -days 365 -config req.cnf

, где req.cnf файл имеет следующее содержимое:

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = VA
L = SomeCity
O = MyCompany
OU = MyDivision
CN = 127.0.0.1:3000
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = IP:127.0.0.1:3000

Я также пытался использовать порт 443, но, к сожалению,У меня такие же ошибки.Также я пытался открыть страницу https://127.0.0.1:3000 в режиме инкогнито - ничего не произошло - ошибки те же.

Мои вопросы:

  1. Где я ошибаюсь при создании сертификатов?
  2. Почему я не могу отправить запрос на свой сервер через Postman / curl?

1 Ответ

0 голосов
/ 07 апреля 2019

То, что вы создали, - это самозаверяющий сертификат , по умолчанию ни одно сетевое приложение не примет их, поскольку они не могут их проверить, поэтому они предполагают худшее (атака MITM).

Если вам это нужно только для локальной проверки, вы можете выполнить это Получение в Chrome самозаверяющего сертификата localhost

Ошибка почтальона, вероятно, эквивалентна ошибке для приложений Chrome.

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