.
Como faço para criar um servidor HTTPS paraNodeJS? Então vamos aprender como criar um servidor HTTPS porque esta é a pergunta mais frequente dos desenvolvedores Node.js.
HTTPS é um protocolo seguro para aplicativos da web em que toda a comunicação entre seu navegador e o servidor é criptografada e descriptografada apenas usando uma chave privada.
Isso torna a comunicação mais segura e privada.
Se você remover o S de HTTPSNós temos HTTPa protocolo padrão para acessar aplicações web. Não é seguro; qualquer pessoa pode interceptar seus pacotes de dados conectados à mesma rede, o que ninguém quer que aconteça.
É por isso que o HTTPS foi criado, para fornecer uma camada extra de segurança por meio da criptografia.
Isso torna a comunicação mais segura e privada.
Os certificados SSL de uma autoridade de certificação de renome devem ser instalados no servidor Node.js.
Pelo preço mais baixo, o proprietário do site deve comprar os certificados RapidSSL, Comodo SSL ou AlphaSSL, que fornecem criptografia forte a um preço baixo, mas aqui usaremos o OpenSSL para criar certificados SSL.
Hoje, você aprenderá a criar um certificado SSL para iniciar um servidor HTTPS para Express in Node Js.
Etapa 1: modelo Js de nó padrão
Sem falar muito, deixe-me mostrar o modelo NodeJS padrão que usei para criar um servidor regular rodando em HTTP.
const express = require("express"),
app = express()
app.get("/", (req, res) => {
res.send("Hello, TREND OCEANS!")
})
app.listen(3000, console.log(`Server started on port 3000`))
A execução do script acima usando Node.js iniciará o servidor web com o padrão protocolo HTTP e exibir um “Olá, TREND OCEANS!” mensagem.
Por exemplo, você pode pegar o código acima como exemplo e criar um novo arquivo em um novo diretório e Salve issocom o nome app.js.
Além disso, não se esqueça de executar o npm init comando para iniciar módulos de nó no diretório atual.
Etapa 2: criar um certificado SSL
Para usar HTTPS, primeiro temos que criar um certificado SSL. Os certificados SSL podem ser gerados no Windows, Linux e macOS usando OpenSSL.
O OpenSSL está disponível por padrão para todos os sistemas Linux sem instalar nenhum outro pacote. Execute o comando abaixo para criar cert.pem e chave.pem em seu sistema Linux.
$ openssl req -x509 --newkey rsa:4096 --out cert.pem --keyout key.pem --days 365
Para usuários do Windows, você pode instalar Git BashGenericName. O OpenSSL está disponível no console do Git Bash.
Quando você executar o comando acima, ele perguntará algumas coisas. Primeiro, o frase secreta para o seu arquivo PEM de chave para torná-lo mais seguro.
Eu recomendo definir um senha segura.

Em seguida, ele fará perguntas gerais como nome do país em código de 2 letras, e-mail, nome da organização, etc. Cabe a você decidir quais informações deseja fornecer.
Aqui eu simplesmente ignorei a entrada pressionando enter.
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
Assim que terminar, você verá dois arquivos criado no diretório atual com o nome cert.pem e key.pem.

Agora temos que colocar esses arquivos no novo diretório.
Se você estiver usando um modelo padrão de passo 1. Em seguida, crie uma nova pasta dentro do seu projeto atual com o nome certificado e coloque os dois arquivos lá para torná-lo mais estruturado.

Etapa 3: Modificando o aplicativo Node
Agora temos que fazer algumas mudanças dentro app.js de passo 1. Abaixo estão as poucas alterações que fizemos. Você pode identificar as diferenças revisitando passo 1 entender nossas mudanças.
const express = require("express"),
app = express(),
fs = require("fs"),
path = require("path"),
https = require("https")
certfile = fs.readFileSync(path.join(__dirname, "cert", "cert.pem"))
keyfile = fs.readFileSync(path.join(__dirname, "cert", "key.pem"))
const secureserver = https.createServer({ cert: certfile, key: keyfile, passphrase: "Strong The One" }, app)
app.get("/", (req, res) => {
res.send("Hello, TREND OCEANS!")
})
secureserver.listen(3000, console.log(`Server started on port 3000`))
Vamos falar sobre as mudanças que fizemos de passo 1.
Primeiro, incluímos mais alguns módulos em nosso projeto atual, como fs, caminho, e HTTPS.
fs: Incluímos esta biblioteca para ler o conteúdo dos certificados.
caminho: nos ajuda a localizar certificados em nosso projeto. [Which we moved in cert directory]
HTTPS: Este módulo principal nos permite criar um servidor HTTPS usando o certificado gerado de passo 2.
A seguir, acabamos de criar algumas variáveis especificando a localização do certificado e para lê-las usando fs e caminho módulos.
certfile = fs.readFileSync(path.join(__dirname, "cert", "cert.pem"))
keyfile = fs.readFileSync(path.join(__dirname, "cert", "key.pem"))
Agora usamos as variáveis acima para ler os certificados SSL para criar um servidor HTTPS usando o módulo HTTPS. Não se esqueça de substituir o frase secreta. No meu caso é oceanos de tendência; substitua-o por aquele que você especificou ao gerar um certificado SSL.
const secureserver = https.createServer({ cert: certfile, key: keyfile, passphrase: "Strong The One" }, app)
Finalmente, não se esqueça de substituir a última variável do aplicativo para servidor seguro para iniciar o ouvinte no protocolo HTTPS.
secureserver.listen(3000, console.log(`Server started on port 3000`))
Depois de fazer as alterações necessárias, salve seu arquivo e abra o prompt de comando ou terminal no diretório do projeto para iniciar o servidor expresso usando o comando abaixo.
$ node app.js
Agora abra seu navegador e acesse https://localhost:3000e pela primeira vez, mostrará uma mensagem de aviso de que o conexão não é privada.
Estamos recebendo esta mensagem porque usamos um certificado SSL autoassinadoe nosso navegador não conhece o autoridade.

Por enquanto, clique em avançar e então Prossiga para localhost (inseguro) para acessar seu site.

Tada, você criou com sucesso um servidor HTTPS para Express em Node.js.
Pensamento final
Eu entendo que no começo pode parecer um pouco complicado. Mas se você estiver enfrentando alguma dificuldade ou não conseguir criar um servidor seguro, informe-nos na seção de comentários.

Mente tecnológica inovadora com 12 anos de experiência trabalhando como programador de computador, desenvolvedor web e pesquisador de segurança. Capaz de trabalhar com uma variedade de soluções de tecnologia e software e gerenciar bancos de dados.
.






