如何在部署在EC2示例上的Nodejs express服务器中使用HTTPS?

t0ybt7op  于 2022-12-22  发布在  Node.js
关注(0)|答案(1)|浏览(138)

我有一个NodeJS快速服务器运行在我的EC2示例,现在我已经取代了代码,使它https服务器。现在它需要pem和证书文件,所以我如何生成这些,例如,如果我使用让加密CA SSL。请指导我,因为我是新的这一部分,所以什么可以是最简单的方法,例如,使我的服务器安全

oxcyiej7

oxcyiej71#

我建议在nodejs应用程序前面安装一个反向代理,比如nginx,这样可以简化证书管理,你可以通过很多方式来实现这一点,但有一种设置可能是这样的:

  • 在您的示例上安装Let 's Encrypt客户端Certbot。
# for a debian OS
sudo apt-get update
sudo apt-get install certbot
  • 使用Certbot为服务器生成SSL证书。可以使用certbot certonly命令来完成此操作,该命令后跟--standalone标志以运行独立Web服务器,后跟-d标志以指定要为其生成证书的域名。例如:
sudo certbot certonly --standalone -d example.com
  • 在您的主机系统上创建一个nginx配置文件,该文件位于/etc/nginx/nginx.conf,包含类似于以下内容的内容:
server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    ssl_certificate /etc/nginx/cert.pem;
    ssl_certificate_key /etc/nginx/key.pem;

    location / {
      proxy_pass http://<your-nodejs-server-ip>:<nodejs-server-port>;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection 'upgrade';
      proxy_set_header Host $host;
      proxy_cache_bypass $http_upgrade;
    }
}
  • 为nginx代理创建一个Docker容器(如果需要,可以使用install docker)。您将注意到-v标志,用于将证书和配置安装到容器中。
docker run -d --name nginx -p 80:80 -p 443:443 -v /etc/letsencrypt/live/example.com/fullchain.pem:/etc/nginx/cert.pem -v /etc/letsencrypt/live/example.com/privkey.pem:/etc/nginx/key.pem -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf nginx
  • 要在到期时续订证书,请运行以下命令(考虑将其添加到cron作业中,这样您就不必照看SSL续订):
certbot certonly --force-renew -d example.com
  • 如果您对nginx配置进行了更改,或者需要在证书过期时更新证书,请确保按如下方式重新加载nginx:
docker exec nginx nginx -s reload

相关问题