webapp的SSL证书(vue与nginx, nodejs与pm2)



首先-我对这些东西真的很陌生。我想获得ssl证书的网络应用程序,我正在工作。我期待任何建议。使用Ubuntu 20.04

结构如下:

  • 我使用Nginx在端口80上提供我的前端,监听我指定的server_name(服务器的域名)。

  • node.js后端使用pm2在服务器的IP地址60702端口上运行

我试过了:

我尝试从letsencrypt获得证书,并将它们准备好用于我的前端,就像这里描述的digitalocean:

server{
# SSL configuration
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'Authorization,Accept,Origin,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,PUT,DELETE,PATCH';
# Path to certificates and configuration
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
...

在vue配置中我将https设置为true:

module.exports = {
baseUrl: './',
devServer: {
port: 8080,
https: true,
disableHostCheck: true
}
};

问题在我的后端。我试了一下:

https.createServer({
key: fs.readFileSync('certs/selfsigned.key', 'utf8'),
cert: fs.readFileSync('certs/selfsigned.crt', 'utf8'),
//key: fs.readFileSync('certs/key.pem', 'utf8'),
//cert: fs.readFileSync('certs/cert.pem', 'utf8'),
rejectUnauthorized: false
}, app)
.listen(nconf.get('port'), function() {
console.log(`App listening on port ${nconf.get('port')}! Go to https://MY_IP:${nconf.get('port')}/`)
});

但是我在这里读到:letsencrypt on IP地址,letsencrypt不提供IP地址证书。

那么我怎样才能为我的申请获得证书呢?我该怎么做?

我需要将证书链接到前端和后端吗?

根据我目前使用nginx的有限经验,你需要在nginx默认值中添加以下几行:

ssl on;
server_name your.domain.com;
ssl_certificate /domain1/ssl-bundle.crt;
ssl_certificate_key /domain1/server.key;

另外,在默认情况下,您需要添加nodejs服务器的位置详细信息:

location / {
proxy_pass http://yourip:port/route;
}

最后,我没有在我的nodejs中使用证书,它是一个HTTP证书,而不是让nginx处理那些。的包。Crt,包含rootca和公共证书,因为在上面的例子中它是一个自签名证书。

最新更新