Node.js 如何使用节点配置ssl

Node.js 如何使用节点配置ssl,node.js,ssl,https,angular-universal,server-side-rendering,Node.js,Ssl,Https,Angular Universal,Server Side Rendering,我是新的角度和节点的东西。 我正在尝试在节点上运行我的angular应用程序以及https/ssl。 我使用certbot安装了以下文件 git clone https://github.com/certbot/certbot cert.pem -> ../../archive/mypleaks.com/cert1.pem chain.pem -> ../../archive/mypleaks.com/chain1.pem fullchain.pem -> ../../ar

我是新的角度和节点的东西。 我正在尝试在节点上运行我的angular应用程序以及https/ssl。 我使用certbot安装了以下文件

git clone https://github.com/certbot/certbot 

cert.pem -> ../../archive/mypleaks.com/cert1.pem
chain.pem -> ../../archive/mypleaks.com/chain1.pem
fullchain.pem -> ../../archive/mypleaks.com/fullchain1.pem
privkey.pem -> ../../archive/mypleaks.com/privkey1.pem
然后,我使用应用程序内ssl文件夹中的以下命令将cert.pem转换为key.pem和server.cert

sudo openssl req -newkey rsa:2048 -new -nodes -keyout /etc/letsencrypt/live/mypleaks.com/cert.pem -out key.pem
sudo openssl x509 -req -days 365 -in key.pem -signkey /etc/letsencrypt/live/mypleaks.com/cert.pem -out server.crt
然后我按照这个步骤配置了prod.js

const port = process.env.PORT || 443;
const server = require('./dist/server');
var fs = require('fs'), 
https = require('https');
var options  = { 
key: fs.readFileSync('./ssl/key.pem'),
cert: fs.readFileSync('./ssl/server.crt')
};
var httpsServer = https.createServer(options, server.app).listen(port, () => {
console.log("Express server listening on port " + port);
});
使用
npm-run-build:prod
构建项目后,当我运行
npm-run-prod
时,出现以下错误:-

> myPleaks@0.0.0 prod /Users/deraj/home/mypleaks-ui/myPleaks
> node prod.js

Using browser-only version of superagent in non-browser environment
_tls_common.js:104
      c.context.setKey(options.key, options.passphrase);
                ^

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
    at Object.createSecureContext (_tls_common.js:104:17)
    at Server (_tls_wrap.js:805:25)
    at new Server (https.js:54:14)
    at Object.createServer (https.js:76:10)
    at Object.<anonymous> (/Users/deraj/home/mypleaks-ui/myPleaks/prod.js:10:25)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! myPleaks@0.0.0 prod: `node prod.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the myPleaks@0.0.0 prod script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/deraj/.npm/_logs/2018-10-07T19_49_16_195Z-debug.log
>myPleaks@0.0.0prod/Users/deraj/home/mypleaks ui/mypleaks
>节点prod.js
在非浏览器环境中使用仅浏览器版本的superagent
_tls_common.js:104
c、 context.setKey(options.key,options.passphrase);
^
错误:错误:0906D06C:PEM例程:PEM_read_bio:无起始行
在Object.createSecureContext(_tls_common.js:104:17)
在服务器上(_tls_wrap.js:805:25)
在新服务器上(https.js:54:14)
在Object.createServer上(https.js:76:10)
反对。(/Users/deraj/home/mypleaks ui/mypleaks/prod.js:10:25)
编译(Module.js:652:30)
在Object.Module.\u extensions..js(Module.js:663:10)
在Module.load(Module.js:565:32)
在tryModuleLoad时(module.js:505:12)
在Function.Module.\u加载(Module.js:497:3)
npm错误!代码失效循环
npm错误!错误1
npm错误!myPleaks@0.0.0prod:`node prod.js`
npm错误!退出状态1
npm错误!
npm错误!失败myPleaks@0.0.0prod脚本。
npm错误!这可能不是npm的问题。上面可能还有其他日志输出。
npm错误!此运行的完整日志可在以下位置找到:
npm错误/Users/deraj/.npm/_logs/2018-10-07T19_49_16_195Z-debug.log

我尽力了,但没能纠正这个错误。请给我建议一些解决方案。?

您的pem文件似乎无效

我从来没有这样创建过,前一段时间我正在做你正在做的事情,我创建了pem文件,如下所示:


你只需要选择你的“软件”和“系统”,然后按照教程进行操作。

我也尝试了这个方法,保留了server none和OS ubuntu,但它只给了我cert.pem、privateKey.pem和chain.pem,因为我需要两个文件key.pem和server.cert。所以我需要转换,但当我转换这些文件时,它不起作用。首先,我不知道应该使用cert.pem、privateKey.pem和chain.pem中的哪个文件来生成key.pem和server.cert。第二个原因是它抛出了这个错误。正如我说的,可能你的文件是不正确的。它们应该是这样的:key.pem------BEGIN PRIVATE key------很多字符------END PRIVATE key------server.cert------BEGIN CERTIFICATE------很多字符------END CERTIFICATE------您不需要转换任何东西,只需使用fullchain.pem作为证书(您称之为server.cert)和privkey.pem作为私钥(您称之为privateKey.pem)