使用自签名密钥命令设置 Node.JS 快速 HTTPS 服务器失败

Setting up Node.JS express HTTPS server fails with self signed key command

我正在使用以下 OpenSSL 命令生成密钥/证书对 -

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

然后我尝试创建一个像这样的 HTTPS node.js 应用程序 -

var httpsServer = https.createServer({
    key: fs.readFileSync( path.join(__dirname, '../keys/key.pem')),
    cert: fs.readFileSync( path.join(__dirname, '../keys/cert.pem')), 
}, app);

httpsServer.listen(443);

然而,当我尝试通过 https://localhost 进行 GET 时,我得到 -

_tls_common.js:149
      c.context.setKey(key, passphrase);
                ^

Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
    at Object.createSecureContext (_tls_common.js:149:17)
    at Server.setSecureContext (_tls_wrap.js:1323:27)
    at Server (_tls_wrap.js:1181:8)
    // .....
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14) {
  opensslErrorStack: [
    'error:0907B00D:PEM routines:PEM_read_bio_PrivateKey:ASN1 lib',
    'error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error',
    'error:23077074:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 cipherfinal error'
  ],
  library: 'digital envelope routines',
  function: 'EVP_DecryptFinal_ex',
  reason: 'bad decrypt',
}

环顾网络,我发现 this tutorial 使用以下命令 -

openssl genrsa -out key.pem
openssl req -new -key key.pem -out csr.pem
openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out cert.pem
rm csr.pem

在 HTTPS 本地主机上尝试使用 HTTPS node.js 服务器时,一切正常。

所以我的问题是,我试过的两组 OpenSSL 命令有什么区别? 最终 - 我正在寻找的是第一个命令失败的原因。

最终我发现依靠 mkcert 可以为我处理所有这些。