1.
概述与准备工作
- 目标:在阿里云香港ECS上启用HTTPS并支持HTTP/2以提升加密安全与页面加载速度。
- 前提:已有ECS(香港区)、弹性公网IP、域名并能修改DNS记录;系统推荐使用Ubuntu 20.04 / CentOS 7+。
2.
购买ECS、绑定EIP与安全组
- 在控制台购买香港区ECS并申请EIP;在“网络与安全->安全组”放行80和443端口(入方向),以及22端口用于SSH管理。
- 检查VPC子网与路由,确认EIP已绑定并能ping通公网。
3.
域名解析
- 在域名提供商或阿里云DNS添加A记录,指向EIP;TTL可先设为600以便调试。
- 使用dig或nslookup确认解析生效:dig +short yourdomain.com。
4.
申请SSL证书(推荐acme.sh/Let's Encrypt)
- 安装acme.sh:curl https://get.acme.sh | sh,重启shell并export PATH。
- 使用HTTP-01验证:acme.sh --issue -d yourdomain.com -w /var/www/html;若使用DNS验证(如泛域名),用acme.sh --issue --dns dns_ali -d *.yourdomain.com。
5.
部署证书与权限
- 将证书安装到常用路径:mkdir -p /etc/ssl/yourdomain && acme.sh --install-cert -d yourdomain.com --key-file /etc/ssl/yourdomain/key.pem --fullchain-file /etc/ssl/yourdomain/fullchain.pem。
- 设置权限:chown root:root /etc/ssl/yourdomain/* && chmod 600 /etc/ssl/yourdomain/key.pem。
6.
安装Nginx与必要库(支持HTTP/2与TLS1.3)
- Ubuntu:apt update && apt install -y nginx openssl;CentOS:yum install -y epel-release nginx openssl。
- 若需TLS1.3,确保OpenSSL版本支持(1.1.1+),或编译OpenSSL与Nginx(高级用户)。
7.
Nginx配置示例(关键行)
- 在/etc/nginx/sites-available/yourdomain.conf(或nginx.conf)添加server块:
listen 443 ssl http2;
ssl_certificate /etc/ssl/yourdomain/fullchain.pem;
ssl_certificate_key /etc/ssl/yourdomain/key.pem;
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'EECDH+AESGCM:...';
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
- 同时保留80端口server,将所有HTTP重定向到HTTPS:return 301 https://$host$request_uri;
8.
性能与安全优化(可选)
- 开启gzip或Brotli;在Nginx里配置gzip on gzip_types text/css application/javascript等。
- 启用OCSP Stapling:ssl_stapling on; ssl_stapling_verify on; 并配置resolver;启用session缓存ssl_session_cache shared:SSL:10m。
9.
测试、启动与故障排查
- 测试配置:nginx -t;重载:systemctl reload nginx。
- 用浏览器开发者工具、curl -I -k --http2 https://yourdomain.com 查看是否启用HTTP/2及证书链。若未启用HTTP/2,检查listen语法和Nginx/OpenSSL版本。
10.
自动续期与运维
- acme.sh会自动安装renew cron;可手动测试续期:acme.sh --renew -d yourdomain.com --force。
- 在续期后reload Nginx:在acme.sh安装命令中使用--reloadcmd "systemctl reload nginx"确保证书替换即时生效。
11.
利用阿里云CDN/Load Balancer加速(建议)
- 在阿里云CDN控制台添加域名,源站设置为EIP或负载均衡域名,开启HTTPS回源(若回源证书自签可选择不校验或上传CA证书)。
- CDN层也支持HTTP/2和压缩,能显著降低延迟并减轻ECS负载。
12.
问1:在阿里云香港部署HTTPS必须使用阿里云证书吗?
- 答:不是必须;可以使用Let’s Encrypt、acme.sh、或商业CA证书。关键是证书链完整并在Nginx中正确引用。
13.
问2:如何确认HTTP/2已经生效?
- 答:使用curl --http2 -I https://yourdomain.com 或浏览器开发者工具的Protocol栏,响应头会显示HTTP/2或h2。
14.
问3:证书自动续期失败常见原因和解决办法?
- 答:常见原因包括DNS未解析、防火墙阻挡80端口、acme脚本权限问题或webroot路径错误。检查80/443是否开放、DNS生效,并查看acme.sh日志定位错误。
来源:加密加速阿里云香港服务器https与HTTP/2的实践经验分享