2
respostas

[Dúvida] Servidor HTTPS não encontra os arquivos 'server.key' e 'server.crt'

Boa tarde, pessoal!

Alterei o código do arquivo "server.js" para mudar o servidor HTTP para HTTPS, conforme o instrutor mostrou no video:

https.createServer(
  {
    key: fs.readFileSync('server.key'),
    cert: fs.readFileSync('server.crt')
  },
  server
).listen(8000, () => {
  console.log("API disponível em https://localhost:8000")
})

No entanto, ao encerrar e reativar o servidor na linha de comando, usando

...\api-alurabooks>npm run start-auth

recebo o seguinte erro:

Error: ENOENT: no such file or directory, open 'server.key'
    at Object.openSync (node:fs:601:3)
    at Object.readFileSync (node:fs:469:35)
    at Object.<anonymous> (C:\Windows\System32\api-alurabooks\server.js:364:13)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Module._load (node:internal/modules/cjs/loader:960:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:23:47 {
  errno: -4058,
  syscall: 'open',
  code: 'ENOENT',
  path: 'server.key'
}

Aparentemente não está conseguindo encontrar o arquivo "server.key", provavelmente nem o "server.crt". Procurei nas pastas do projeto e não encontrei esses arquivos...

Alguém sabe o que preciso fazer para resolver o problema?

2 respostas

Oi José, tudo bem?

O erro que você está vendo é um erro ENOENT (Error NO ENTry) que indica que um arquivo ou diretório não foi encontrado. Neste caso específico, o arquivo 'server.key' não está presente no local especificado, e isso está causando o erro.

Para resolver esse erro, você pode fazer o seguinte:

  1. Verifique se o arquivo 'server.key' existe: Certifique-se de que o arquivo 'server.key' está no local esperado (nesse caso ele deve estar dentro da pasta da API do servidor). Se ele estiver ausente, você precisará criá-lo ou adquiri-lo, dependendo da finalidade do arquivo.

    Eu creio até que esse seja o caso, então para resolver é simples, você só criptografar os arquivos usando o código openssl abaixo:

    openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
    
  2. Verifique o caminho do arquivo: Certifique-se de que o caminho especificado para o arquivo 'server.key' está correto. Se você não estiver usando um caminho absoluto, o sistema procurará o arquivo na pasta de trabalho atual do seu aplicativo. Certifique-se de que o caminho seja relativo ao local correto ou use um caminho absoluto para o arquivo.

  3. Defina permissões adequadas: Se o arquivo 'server.key' existir, certifique-se de que você tenha permissões de leitura para acessá-lo. Verifique as permissões do arquivo e ajuste-as conforme necessário.

  4. Verifique erros de digitação: Certifique-se de que o nome do arquivo 'server.key' esteja escrito corretamente e que não haja erros de digitação no código que está tentando acessá-lo.

Em síntese é isso!

Se você tiver dúvidas com a execução de algo, ou não entender como fazer algo, é só falar que eu estarei aqui disponível para auxiliar.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor marque ele como solução! ✓.

Muito obrigado!