第一次给网站上阿里云HTTPS部署,大多数人会卡在三个地方:证书去哪申请,装完为什么浏览器还提示不安全,Nginx到底要改几处。拆开看,流程就三件事:拿到证书,装到服务器上,让服务器只接受加密访问。下面按这个顺序,用一个小项目的改造过程来讲。

为什么现在还是要上HTTPS
几年前,不少个人博客和小官网还跑在HTTP上,内容也不敏感,没人愿意折腾。现在情况不同了。Chrome、Edge这些主流浏览器对未加密页面会直接标“不安全”,登录页和表单页尤其明显。搜索引擎也把HTTPS当作排名参考因素之一。
更实际的问题是安全。HTTP传输的是明文,同一个网络里的人能看到用户提交的密码和Cookie。HTTPS用TLS对传输内容加密,证书则用来确认服务器身份,防止有人冒充站点。做电商、SaaS或者有用户登录的网站,这基本是必做项。
改造背景
这里以一家做本地化服务的小团队为例。他们的官网跑在阿里云ECS上,系统是Alibaba Cloud Linux 3,Web服务用Nginx,域名也已经在阿里云解析。站点一直只有HTTP访问,同事反馈客户在线留言时,浏览器经常弹出“连接不安全”。这次改造的目标很具体:全站强制跳转HTTPS,证书能自动续期,业务代码尽量不动。
先申请证书
阿里云常见的证书分两类。免费DV证书由Let’s Encrypt或阿里云免费证书服务签发,有效期通常是90天或一年,个人站和中小网站够用。付费的OV、EV证书验证更严,适合需要品牌展示或对信任度要求高的场景。
这个团队选的是免费DV证书,流程如下:
- 登录阿里云控制台,进入“数字证书管理服务”。
- 选择免费证书并创建,填入要绑定的域名,比如 www.example.com。
- 验证方式选DNS自动验证。域名解析本身在阿里云时,这样能省掉手动添加记录的步骤。
- 提交后等待签发,一般几分钟到半小时。
- 签发完成后下载证书,选Nginx格式,会得到一个.pem文件和一个.key文件。
要注意,免费证书通常只绑单个域名。如果www和裸域都要覆盖,需要分别申请,或者选支持通配符的证书类型。
把证书放到服务器上
证书文件上传到ECS后,单独放一个目录,并收紧权限。下面以Linux为例:
sudo mkdir -p /etc/nginx/ssl/example.com
sudo cp fullchain.pem /etc/nginx/ssl/example.com/
sudo cp privkey.key /etc/nginx/ssl/example.com/
sudo chmod 600 /etc/nginx/ssl/example.com/privkey.key
sudo chown root:root /etc/nginx/ssl/example.com/*
私钥的权限最需要收紧。私钥一旦被别人读到,证书就等于失效了。
Nginx要改哪几处
原来的站点配置只监听80端口。改造后要做两件事:新增443端口的监听,并把HTTP请求统一跳转到HTTPS。改动集中在下面这段配置里:
server {
listen 80;
server_name www.example.com example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/nginx/ssl/example.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/example.com/privkey.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000" always;
root /var/www/example;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
这里有三处要动:一是80端口的块改成只做301跳转;二是新增443端口的ssl块,指向证书和私钥;三是按需加上HSTS头。证书路径要和前面放置的目录一致,路径写错最容易出现“配置没报错,访问却失败”的情况。
改完先执行 nginx -t 检查语法,确认没有报错,再执行 systemctl reload nginx。reload 对在线业务的影响比 restart 小,正在访问的用户基本感觉不到。
验证时最容易踩的坑
部署完成后,建议从三个方面检查:
- 访问 https://www.example.com,看地址栏是否有锁形图标,再点开确认证书信息是否对应当前域名。
- 访问 http://example.com,确认会跳转到HTTPS地址。
- 用在线SSL检测工具看证书链是否完整,协议版本和加密套件是否符合预期。
这个团队第一次验证时就遇到了证书链不完整的提示。原因是Nginx里用的是单独的服务器证书,没有带上中间证书。改用fullchain.pem,也就是服务器证书和中间证书合并后的文件,问题就解决了。云服务器上这类情况很常见,遇到证书报错时可以先想到这一点。
别让证书悄悄过期
免费证书有效期短,靠记忆续期很容易漏。过期后浏览器会直接拦住访问,用户看到的是警告页。团队的做法是两手准备:在阿里云控制台开启到期提醒;如果证书是通过自动化工具签发的,再配一个定时任务定期检查续期。无论用哪种方式,建议在到期前三十天就开始处理,留出足够的余量。
整体来看,阿里云HTTPS部署没有想象中复杂,主要是按顺序把申请、上传、配置、验证做完,并注意私钥权限、证书链和续期。个人站和中小企业官网,免费证书基本够用。业务要求更高时,再考虑付费证书和更严格的安全策略。