Мне нужно запустить локальный сервер 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
в режиме инкогнито - ничего не произошло - ошибки те же.
Мои вопросы:
- Где я ошибаюсь при создании сертификатов?
- Почему я не могу отправить запрос на свой сервер через Postman / curl?