Las respuestas anteriores fueron parciales. He pasado tanto tiempo haciendo que esto funcione, es una locura. Nota para mi futuro yo, esto es lo que debes hacer:
Estoy trabajando en Windows 10, con Chrome 65. Firefox se está comportando bien, solo confirme localhost como una excepción de seguridad y funcionará. Chrome no:
Paso 1. en tu backend, crea una carpeta llamada security
. Trabajaremos en su interior.
Paso 2. cree un archivo de configuración de solicitud req.cnf
con el siguiente contenido (el crédito 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 explicación de estos campos está aquí .
Paso 3. navega a la carpeta de seguridad en la terminal y escribe el siguiente comando:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
Paso 4. luego fuera de la security
carpeta, en su aplicación express haga algo como esto: (el crédito 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)
})
Paso 5. Inicie el servidor, node server.js
y vaya a https: // localhost: 3000 .
En este punto tenemos la configuración del servidor. Pero el navegador debe mostrar un mensaje de advertencia.
Necesitamos registrar nuestro certificado autofirmado, como una Autoridad de Certificación de confianza de CA, en la tienda de certificados de Chrome / Windows. (Chrome también guarda esto en Windows)
Paso 6. abre Dev Tools en Chrome, ve al Panel de seguridad, luego haz clic en Ver certificado.
Paso 7. vaya al panel Detalles, haga clic en Copiar archivo, luego, cuando aparezca el Asistente de exportación de certificados, haga clic en Siguiente como se muestra a continuación:
Paso 8. Deje la codificación DER, haga clic en Siguiente, elija Browse
, colóquelo en una carpeta de fácil acceso como Escritorio y asigne un nombre al certificado localhost.cer, then click Save and then Finish.
. Debería poder ver su certificado en el escritorio.
Paso 9. Ábralo chrome://settings/
insertándolo en el cuadro de URL. Abajo, haga clic en Advanced / Advanced Options
, luego desplácese hacia abajo para encontrar Manage Certificates
.
Paso 10. Vaya al panel Autoridades de certificación raíz de confianza y haga clic en importar.
Importaremos el localhost.cer
certificado que acabamos de exportar en el paso 8.
Paso 11. Haz clic en Examinar, encuentra los localhost.cer
valores predeterminados, haz clic en Siguiente varias veces. Hasta que aparezca esta advertencia, haz clic en Sí.
Paso 12. cierra todo y reinicia Chrome. Entonces, cuando https://localhost:3000
vayas deberías ver: