Ответы выше были частичными. Я потратил столько времени на то, чтобы это работало, это безумие. На заметку для себя в будущем: вот что вам нужно сделать:
Я работаю над Windows 10 с Chrome 65. Firefox ведет себя хорошо - просто подтвердите localhost как исключение безопасности, и он будет работать. В Chrome нет:
Шаг 1. В вашем бэкэнде создайте папку с именем security
. мы будем работать внутри него.
Шаг 2. Создайте файл конфигурации запроса req.cnf
со следующим содержимым (кредит принадлежит: @Anshul )
req.cnf:
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = Country initials like US, RO, GE
ST = State
L = Location
O = Organization Name
OU = Organizational Unit
CN = www.localhost.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.localhost.com
DNS.2 = localhost.com
DNS.3 = localhost
Объяснение этого поля находится здесь .
Шаг 3. Перейдите в папку безопасности в терминале и введите следующую команду:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
Шаг 4. Затем вне security
папки в экспресс-приложении сделайте что-то вроде этого: (кредит принадлежит @Diego Mello)
backend
/security
/server.js
server.js:
const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')
const port = 3000
app.get('/', (req, res) => {
res.send("IT'S WORKING!")
})
const httpsOptions = {
key: fs.readFileSync('./security/cert.key'),
cert: fs.readFileSync('./security/cert.pem')
}
const server = https.createServer(httpsOptions, app)
.listen(port, () => {
console.log('server running at ' + port)
})
Шаг 5. Запустите сервер, node server.js
и перейдите по адресу https: // localhost: 3000. .
На этом этапе у нас есть настройка сервера. Но браузер должен показать предупреждающее сообщение.
Нам необходимо зарегистрировать наш самозаверяющий сертификат в качестве доверенного центра сертификации ЦС в хранилище сертификатов Chrome / Windows.(Chrome также сохраняет это в окнах,)
Шаг 6. Откройте Инструменты разработчика в Chrome, перейдите на панель «Безопасность» и нажмите «Просмотр сертификата».
Шаг 7. перейдите в панель Details, нажмите Copy File, затем, когда появится мастер экспорта сертификатов, нажмите Next, как показано ниже:
Шаг 8. оставьте кодировку DER, нажмите «Далее», выберите Browse
, поместите его в легко доступную папку, такую как Рабочий стол, и назовите сертификат.localhost.cer, then click Save and then Finish.
. Вы должны увидеть свой сертификат на рабочем столе.
Шаг 9. Откройте chrome://settings/
, вставив его в поле url. Внизу нажмите Advanced / Advanced Options
, а затем прокрутите вниз, чтобы найти Manage Certificates
.
Шаг 10. Перейдите на панель «Доверенные корневые центры сертификации» и нажмите «Импорт».
Мы импортируем localhost.cer
сертификат, который мы только что завершили на шаге 8.
Шаг 11. Нажмите «Обзор», найдите localhost.cer
, оставьте значения по умолчанию, нажмите «Далее» несколько раз - пока не появится это предупреждение, нажмите «Да».
Шаг 12. закройте все и перезапустите хром. Тогда, идя к https://localhost:3000
вам, вы должны увидеть: