配置EC2实例SSL证书时,应选用哪个域名?
Great question! Let's break this down clearly for you:
答案:选择自定义子域名
sub.foo.com 申请SSL证书 为什么不选EC2的默认域名?
- EC2提供的默认域名(
foo.us-west1.compute.amazonaws.com)是AWS官方托管的,你没有该域名的所有权控制权,无法通过主流证书颁发机构(CA)的域名验证流程(比如DNS验证、HTTP验证)来获取可信的SSL证书。即使你能临时获取到相关证书,这个域名也和EC2实例的公网IP绑定,一旦实例重启或更换IP,域名会直接失效,完全不适合长期业务使用。
为什么必须选sub.foo.com?
- 你的核心需求是让用户通过**自定义子域名
sub.foo.com**访问EC2上的服务,SSL证书必须与用户实际访问的域名完全匹配,否则浏览器会弹出“不安全”的警告,完全失去配置SSL的意义。 - 你拥有
sub.foo.com的控制权,可以顺利完成证书颁发机构的验证流程,获取长期有效的可信证书,适配后续业务的稳定运行。
后续配置Nginx的关键要点
- 把获取到的证书文件(通常是
.pem或.crt格式)放到EC2实例的/etc/ssl/certs/目录,私钥文件(.key格式)放到/etc/ssl/private/目录,记得将私钥文件权限设置为600(避免其他用户非法读取)。 - 修改Nginx配置文件(比如
/etc/nginx/sites-available/sub.foo.com),配置HTTPS监听:server { listen 443 ssl; server_name sub.foo.com; ssl_certificate /etc/ssl/certs/sub.foo.com.crt; ssl_certificate_key /etc/ssl/private/sub.foo.com.key; # 其他站点核心配置(root、location规则等) } - 额外配置HTTP跳转HTTPS,让访问
http://sub.foo.com的用户自动转到安全链接:server { listen 80; server_name sub.foo.com; return 301 https://$host$request_uri; } - 重启Nginx服务使配置生效:
sudo systemctl restart nginx
内容的提问来源于stack exchange,提问作者Manan Mehta
相关产品推荐
相关产品推荐

