Відповіді вище були частковими. Я витратив стільки часу на це, працюючи, це божевільно. Зверніть увагу на моє майбутнє «я», ось що вам потрібно зробити:
Я працюю в 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 .
На даний момент у нас налаштування сервера. Але браузер повинен показувати попереджувальне повідомлення.
Нам потрібно зареєструвати свій самопідписаний сертифікат як довірений сертифікаційний центр CA в магазині сертифікатів chrome / windows. (хром також зберігає це у вікнах,)
Крок 6. відкрийте інструменти Dev в хромі, перейдіть на панель безпеки, а потім натисніть кнопку Переглянути сертифікат.
Крок 7. перейдіть до панелі «Подробиці», натисніть «Копіювати файл», а потім, коли з’явиться майстер експорту сертифікатів, натисніть «Далі», як показано нижче:
Крок 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
вас, слід побачити: