Express JS, работа с HTTPS не загружает страницу

1

Я хочу запустить мое веб-приложение с помощью https. Я создал сам подписанный ключ и сертификат с помощью этой команды:

openssl req -newkey rsa:2048 -sha256 -nodes -keyout key.key -x509 -days 365 -out public.pem -subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=my.example.com"

Это создало для меня key.key nad public.pem.

Теперь я хочу назначить их моему экспресс-заявлению:

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

app.get('/*', (req, res) => {
        res.send("Hello");
});

const options = {
    key: fs.readFileSync('${__dirname}/key.key'),  // Path to file with PEM private key
    cert: fs.readFileSync('${__dirname}/public.pem')  // Path to file with PEM certificate
};
https.createServer(options, app).listen(443);
http.createServer(app).listen(80);

Когда я открываю my.example.com/ он успешно показывает мне текст сообщения Hello. Как бы то ни было, когда я открываю его так: https://my.example.com/ мой браузер не открывает эту страницу и показывает сообщение об ошибке ERR_SSL_PROTOCOL_ERROR.

Что я упустил?

  • 0
    какие есть options ?
  • 0
    @baao упс. Я обновил свой вопрос
Показать ещё 2 комментария
Теги:
express
ssl

3 ответа

2
Лучший ответ

попробуйте добавить следующий код, я думаю, что вам нужно открыть https

var fs = require('fs');
var https = require('https');
var express = require('express');
var key  = fs.readFileSync('sslcert/server.key', 'utf8');
var cert = fs.readFileSync('sslcert/server.crt', 'utf8');

var cred = {key: key, cert: cert};
var app = express();

var serv = https.createServer(cred, app);

serv.listen(443);

Я надеюсь, что это сработает для вас

  • 0
    даже если я добавил utf8 кодировку, открытие https не работает
1

Вероятно, ваш SSL создан неправильно.

Пытаться:

openssl genrsa -out key.pem 2048
openssl req -new -key key.pem -out client.csr
openssl x509 -req -in client.csr -signkey key.pem -out cert.pem
  • 0
    Я поместил недавно сгенерированные два файла pem и мой браузер все еще выдает меня ERR_SSL_PROTOCOL_ERROR
  • 2
    ERR_SSL_PROTOCOL_ERROR означает, что браузер не смог проверить сертификат, представленный сервером, и предположил, что он является фальшивым, потому что он не подписан какой-либо доверенной третьей стороной (подписан вами). Чтобы обойти это, попробуйте добавить сертификат в ваш браузер. Смотрите это обсуждение для более
1

Я считаю, что с вашим кодом и логикой нет ничего плохого... если вы используете Chrome в качестве браузера, и он дает такую ошибку, вероятно, потому, что вы используете самоподписанный сертификат...

в случае теста есть способ... но я рекомендую вам купить сертификат SSL, если вы можете...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню