首先-我对这些东西真的很陌生。我想获得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和公共证书,因为在上面的例子中它是一个自签名证书。