Le risposte di cui sopra erano parziali. Ho passato così tanto tempo a farlo funzionare, è folle. Nota per me stesso futuro, ecco cosa devi fare:
Sto lavorando su Windows 10, con Chrome 65. Firefox si sta comportando bene: basta confermare localhost come eccezione di sicurezza e funzionerà. Chrome non:
Passaggio 1. Nel tuo backend, crea una cartella chiamata security
. ci lavoreremo al suo interno.
Passaggio 2: crea un file di configurazione della richiesta denominato req.cnf
con il seguente contenuto (il merito va a: @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
Una spiegazione di questi campi è qui .
Passaggio 3: accedere alla cartella della sicurezza nel terminale e digitare il seguente comando:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
Passaggio 4. quindi fuori dalla security
cartella, nella tua app express fai qualcosa del genere: (il merito va a @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)
})
Passaggio 5. avviare il server, node server.js
e andare su https: // localhost: 3000 .
A questo punto abbiamo la configurazione del server. Ma il browser dovrebbe mostrare un messaggio di avviso.
Dobbiamo registrare il nostro certificato autofirmato, come autorità di certificazione attendibile CA, nell'archivio certificati di Chrome / Windows. (Chrome lo salva anche in Windows,)
Passaggio 6. apri Dev Tools in Chrome, vai al pannello Sicurezza, quindi fai clic su Visualizza certificato.
Passaggio 7. Vai al pannello Dettagli, fai clic su Copia file, quindi quando viene visualizzata la procedura guidata di esportazione del certificato, fai clic su Avanti come di seguito:
Passaggio 8. Esci dalla codifica DER, fai clic su Avanti, scegli Browse
, inseriscilo in una cartella di facile accesso come Desktop e assegna un nome al certificatolocalhost.cer, then click Save and then Finish.
. Dovresti essere in grado di vedere il tuo certificato sul desktop.
Passaggio 9. Aprire chrome://settings/
inserendolo nella casella dell'URL. In basso, fai clic su Advanced / Advanced Options
, quindi scorri verso il basso per trovare Manage Certificates
.
Passaggio 10. Vai al pannello Autorità di certificazione radice attendibili e fai clic su Importa.
Importeremo il localhost.cer
certificato che abbiamo appena esportato al passaggio 8.
Passaggio 11. Fare clic su Sfoglia, trovare localhost.cer
, lasciare i valori predefiniti fare clic su Avanti un sacco di volte - fino a quando non viene visualizzato questo avviso, fare clic su Sì.
Passaggio 12. Chiudi tutto e riavvia Chrome. Quindi, quando vai da https://localhost:3000
te dovresti vedere: