Les réponses ci-dessus étaient partielles. J'ai passé tellement de temps à faire fonctionner ça, c'est fou. Note à mon futur moi, voici ce que vous devez faire:
Je travaille sur Windows 10, avec Chrome 65. Firefox se comporte bien - il suffit de confirmer localhost comme une exception de sécurité et cela fonctionnera. Chrome ne:
Étape 1. dans votre backend, créez un dossier appelé security
. nous allons y travailler.
Étape 2. Créez un fichier de configuration de demande nommé req.cnf
avec le contenu suivant (le mérite revient à: @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
Une explication de ces champs est ici .
Étape 3. Accédez au dossier de sécurité dans le terminal et tapez la commande suivante:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
Étape 4. puis en dehors du security
dossier, dans votre application express, faites quelque chose comme ceci: (le mérite revient à @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)
})
Étape 5. Démarrez le serveur node server.js
et accédez à https: // localhost: 3000 .
À ce stade, nous avons la configuration du serveur. Mais le navigateur devrait afficher un message d'avertissement.
Nous devons enregistrer notre certificat auto-signé, en tant qu'autorité de certification de confiance CA, dans le magasin de certificats chrome / windows. (Chrome enregistre également cela dans Windows,)
Étape 6. Ouvrez les outils de développement dans Chrome, allez dans le panneau Sécurité, puis cliquez sur Afficher le certificat.
Étape 7. allez dans le panneau Détails, cliquez sur Copier le fichier, puis lorsque l'assistant d'exportation de certificat apparaît, cliquez sur Suivant comme ci-dessous:
Étape 8. laissez l'encodage DER, cliquez sur suivant, choisissez Browse
, placez-le dans un dossier facile d'accès comme Desktop et nommez le certificat localhost.cer, then click Save and then Finish.
. Vous devriez pouvoir voir votre certificat sur le bureau.
Étape 9. Ouvrez chrome://settings/
en l'insérant dans la zone URL. En bas, cliquez sur Advanced / Advanced Options
, puis faites défiler vers le bas pour trouver Manage Certificates
.
Étape 10. Accédez au panneau Autorités de certification racines de confiance et cliquez sur importer.
Nous importerons le localhost.cer
certificat que nous venons de terminer l'exportation à l'étape 8.
Étape 11. Cliquez sur Parcourir, recherchez le localhost.cer
, laissez les valeurs par défaut cliquez sur suivant plusieurs fois - jusqu'à ce que cet avertissement apparaisse, cliquez sur Oui.
Étape 12. Fermez tout et redémarrez Chrome. Ensuite, lorsque vous y allez, https://localhost:3000
vous devriez voir: