温馨提示×

如何在CentOS上配置Node.js的HTTPS

小樊
63
2025-08-14 15:03:46
栏目: 编程语言

在CentOS上配置Node.js的HTTPS涉及几个步骤,包括生成SSL证书、创建HTTPS服务器以及配置防火墙。以下是一个详细的指南:

1. 生成SSL证书

你可以使用OpenSSL来生成自签名证书,或者从受信任的证书颁发机构(CA)获取证书。

生成自签名证书

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nodejs-selfsigned.key -out /etc/ssl/certs/nodejs-selfsigned.crt

这个命令会生成一个有效期为365天的自签名证书和私钥。

2. 创建Node.js HTTPS服务器

创建一个新的Node.js文件,例如server.js,并添加以下代码:

const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('/etc/ssl/private/nodejs-selfsigned.key'),
  cert: fs.readFileSync('/etc/ssl/certs/nodejs-selfsigned.crt')
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('hello world\n');
}).listen(443, () => {
  console.log('Server running at https://localhost/');
});

3. 运行Node.js服务器

在终端中运行以下命令来启动服务器:

sudo node server.js

4. 配置防火墙

确保防火墙允许HTTPS流量(端口443)。你可以使用firewall-cmd来配置防火墙:

sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

5. 访问HTTPS服务器

打开浏览器并访问https://your_server_ip/。由于使用的是自签名证书,浏览器会显示安全警告。你可以选择继续访问以查看你的Node.js应用程序。

6. 使用受信任的证书(可选)

如果你希望使用受信任的证书,可以从Let’s Encrypt或其他CA获取证书。以下是使用Let’s Encrypt的示例:

安装Certbot

sudo yum install epel-release
sudo yum install certbot python2-certbot-nginx

获取证书

sudo certbot --nginx -d your_domain.com

按照提示完成证书的获取和配置。

配置Node.js服务器使用证书

如果你已经有一个运行中的Node.js服务器,并且不想使用Nginx作为反向代理,你可以将证书路径更新到Node.js服务器代码中:

const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('/etc/letsencrypt/live/your_domain.com/privkey.pem'),
  cert: fs.readFileSync('/etc/letsencrypt/live/your_domain.com/fullchain.pem')
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('hello world\n');
}).listen(443, () => {
  console.log('Server running at https://your_domain.com/');
});

总结

通过以上步骤,你可以在CentOS上配置Node.js的HTTPS服务器。根据你的需求,你可以选择使用自签名证书或受信任的证书。如果你希望更高的安全性和可靠性,建议使用受信任的证书。

0