如何为AWS EC2实例公网IP启用SSL证书(含Nginx方案)
为EC2公网IP启用SSL实现HTTPS访问
方案1:Nginx反向代理+自签SSL证书
由于免费CA(如Let's Encrypt)不支持为裸IP颁发证书,自签证书是成本最低的实现方式,也可选择支持IP的商业CA(成本较高,本文重点讲自签方案)。
步骤1:安装Nginx
根据EC2实例的操作系统选择对应命令:
- Ubuntu/Debian系统:
sudo apt update && sudo apt install nginx -y
- Amazon Linux/RHEL系统:
sudo yum update && sudo yum install nginx -y
步骤2:生成针对公网IP的自签证书
使用OpenSSL生成证书,执行命令时在Common Name字段输入你的EC2公网IPv4地址(如3.135.222.337),其他字段可按需填写或留空:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/ip-ssl.key -out /etc/ssl/certs/ip-ssl.crt
步骤3:配置Nginx反向代理
创建并编辑Nginx配置文件/etc/nginx/sites-available/ip-ssl.conf:
server { listen 443 ssl; server_name 3.135.222.337; # 替换为你的EC2公网IP ssl_certificate /etc/ssl/certs/ip-ssl.crt; ssl_certificate_key /etc/ssl/private/ip-ssl.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { proxy_pass http://localhost:3000; # 转发到应用所在端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } # 可选配置:将HTTP请求自动重定向到HTTPS server { listen 80; server_name 3.135.222.337; return 301 https://$host$request_uri; }
启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/ip-ssl.conf /etc/nginx/sites-enabled/ sudo nginx -t # 检查配置语法是否正确 sudo systemctl restart nginx
步骤4:更新EC2安全组规则
在AWS控制台的EC2安全组中,开放443端口(HTTPS),若配置了HTTP重定向则同时开放80端口,允许来自目标访问范围的流量。
完成后即可通过https://3.135.222.337访问应用(无需附加3000端口,Nginx已将443端口的请求转发到应用端口)。
方案2:使用Caddy简化配置
Caddy可自动生成并管理针对IP的自签证书,配置更简洁:
步骤1:安装Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo apt update && sudo apt install caddy -y
步骤2:配置Caddy
编辑/etc/caddy/Caddyfile:
3.135.222.337:443 { reverse_proxy localhost:3000 } # 可选配置:HTTP重定向到HTTPS 3.135.222.337:80 { redir https://{host}{uri} permanent }
重启Caddy生效:
sudo systemctl restart caddy
注意事项
- 自签证书会被浏览器标记为“不安全”,属于正常现象。若要消除提示,可将证书导入浏览器信任商店,或购买支持IP的商业SSL证书。
- 确保应用绑定到
localhost:3000或0.0.0.0:3000,允许反向代理工具转发请求。
内容的提问来源于stack exchange,提问作者Towsif Ahamed Labib
相关产品推荐
相关产品推荐

