As respostas acima foram parciais. Passei tanto tempo fazendo isso funcionar, é insano. Observe o meu futuro eu, aqui está o que você precisa fazer:
Estou trabalhando no Windows 10, com o Chrome 65. O Firefox está se comportando bem - basta confirmar o host local como uma exceção de segurança e ele funcionará. O Chrome não:
Etapa 1. No seu back-end, crie uma pasta chamada security
. nós trabalharemos dentro dele.
Etapa 2. crie um arquivo de configuração de solicitação nomeado req.cnf
com o seguinte conteúdo (o crédito vai para: @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
Uma explicação para esses campos está aqui .
Etapa 3. navegue até a pasta de segurança no terminal e digite o seguinte comando:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
Etapa 4. Em seguida, fora da security
pasta, no seu aplicativo expresso, faça algo assim: (o crédito vai para @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)
})
Etapa 5. inicie o servidor, node server.js
e vá para https: // localhost: 3000 .
Neste ponto, temos a configuração do servidor. Mas o navegador deve mostrar uma mensagem de aviso.
Precisamos registrar nosso certificado autoassinado, como uma Autoridade de Certificação confiável da CA, no armazenamento de certificados chrome / windows. (o Chrome também salva isso no Windows)
Etapa 6. abra o Dev Tools no chrome, acesse o painel Security e clique em View Certificate.
Etapa 7. vá para o painel Detalhes, clique em Copiar arquivo e, quando o Assistente para Exportação de Certificados aparecer, clique em Avançar, como abaixo:
Etapa 8. deixe a codificação DER, clique em Avançar, escolha Browse
, coloque-a em uma pasta de fácil acesso, como a Desktop, e dê um nome ao certificado localhost.cer, then click Save and then Finish.
. Você poderá ver seu certificado na área de trabalho.
Etapa 9. Abra chrome://settings/
inserindo-o na caixa de URL. Abaixo, clique em Advanced / Advanced Options
e role para baixo para encontrar Manage Certificates
.
Etapa 10. Vá para o painel Autoridades de certificação raiz confiáveis e clique em Importar.
Importaremos o localhost.cer
certificado que acabamos de exportar na etapa 8.
Etapa 11. clique em procurar, localize localhost.cer
, deixe os valores padrão clique em um próximo conjunto de vezes - até esse aviso aparecer, clique em sim.
Etapa 12. feche tudo e reinicie o chrome. Então, ao ir para https://localhost:3000
você deve ver: