在互联网访问环境中,HTTP协议属于明文传输,网络传输过程中的表单数据、账号密码、页面内容都有可能被窃听、篡改,还容易遭遇流量劫持。HTTPS依托SSL/TLS加密协议对整条通信链路进行保护,已经成为现代网站的基础标配。启用HTTPS不仅可以保护用户提交的各类敏感业务数据,同时浏览器会展示安全信任标识,对站点搜索权重、用户访问留存都会带来正向作用。
不少个人开发者、中小企业运维人员在改造HTTPS的时候,会遇到证书申请流程不熟悉、安全组端口漏放、Web配置语法报错、HTTP无法自动跳转、页面混合内容导致样式错乱、浏览器报不安全警告等各类问题。本文完整梳理改造前置条件、网络端口配置、SSL证书选型申请、证书上传服务器、Nginx与Apache两套主流Web服务配置示例、业务验证、混合内容修复、安全加固、故障排查,附带大量可以直接复制执行的命令和配置片段,帮助零基础使用者在ECS实例上完成网站全站HTTPS加密改造。
一、HTTPS改造前置条件与网络端口配置
正式开展HTTPS改造之前,需要核对基础前置条件,避免后续部署反复报错。详情👉访问阿里云 数字证书管理服务(原SSL证书) 平台了解。
- 内地地域ECS实例对外提供Web访问,使用的域名需要完成ICP备案;海外地域实例可豁免备案流程。
- ECS实例运行状态正常,Nginx或者Apache Web服务已经部署完毕,原HTTP协议网站访问业务正常。
- 账号完成实名认证,免费DV证书无需支付费用;OV、EV企业商用证书需要支付对应服务费用。
- ECS安全组入方向规则需要放行TCP协议80端口与443端口。80端口用于接收HTTP请求并跳转至HTTPS,443为HTTPS标准访问端口。
在ECS控制台找到实例对应的安全组,添加入方向规则:
- 协议:TCP
- 端口范围:
443/443,来源地址设置0.0.0.0/0,备注填写HTTPS访问 - 确认80端口入方向规则已经存在,保障HTTP跳转功能正常。
注意:仅仅配置云控制台安全组还不够,服务器操作系统内部防火墙同样需要放行80、443端口,否则即便安全组放行,外部依旧无法访问Web服务。
CentOS系列操作系统防火墙放行端口命令:
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload
Ubuntu/Debian系统使用ufw防火墙放行:
ufw allow 80/tcp
ufw allow 443/tcp
ufw reload
二、SSL证书选型以及申请流程
数字证书管理服务提供多规格SSL证书,不同证书的验证方式、支持域名类型、审核流程各不相同,需要结合业务规模进行选型。详情👉访问阿里云 数字证书管理服务(原SSL证书) 平台了解。
- 免费DV域名验证证书:适合个人博客、小型测试站点,仅支持单域名,有效期90天,拥有免费申领额度,采用域名所有权验证,数分钟就可以完成签发。
- 付费DV证书:支持单域名、多域名、通配符域名,最长有效期两年,域名自动校验,适合中小企业官网。
- OV企业级证书:需要人工审核企业身份资质,适合正规企业对外业务站点。
- EV增强型证书:最高安全等级企业证书,浏览器地址栏展示企业标识,适合金融、交易类对安全等级要求极高的业务。
2.1 免费DV证书申请操作
登录控制台,进入数字证书管理服务页面,选择免费证书页签,点击创建证书,选择快捷签发,填写需要保护的域名,预留联系邮箱和手机号。
域名验证分为两种方式:
- 自动DNS验证(优先推荐):域名解析托管在同一平台,系统自动添加TXT解析记录,无需手动操作解析。
- 文件验证:将平台提供的验证文件上传至网站根目录
.well‑known/pki‑validation路径,CA机构访问该文件完成域名所有权校验。
提交申请等待审核,DV证书通常1‑15分钟即可签发,证书状态变更为“已签发”之后,下载证书压缩包。下载时需要根据自己Web服务器类型选择Nginx或者Apache版本,解压之后可以得到pem/crt证书文件与key私钥文件。私钥key文件属于敏感信息,必须严格保密,禁止对外泄露、禁止公网可访问。
2.2 付费证书申请流程
控制台选择购买证书,挑选DV/OV/EV证书类型,选择单域名、通配符等域名规格,完成支付。进入证书列表点击申请,填写域名、企业相关资料;OV、EV证书还需要提交营业执照材料,完成域名所有权以及企业资质双重审核。审核通过之后,下载对应Web服务器格式的证书压缩包。
三、SSL证书上传到ECS服务器
解压本地下载的证书压缩包,在服务器上创建专门存放ssl证书的独立目录,不要放置在网站根目录,防止私钥文件被外网下载窃取。详情👉访问阿里云 数字证书管理服务(原SSL证书) 平台了解。
Nginx环境创建证书存放目录:
sudo mkdir -p /etc/nginx/ssl
Apache环境创建证书存放目录:
sudo mkdir -p /etc/httpd/ssl
使用scp命令把本地证书文件上传至ECS服务器,替换示例中的本地路径、ECS公网IP地址:
#上传证书pem文件
scp /本地目录/www.example.com.pem root@ECS公网IP:/etc/nginx/ssl/
#上传私钥key文件
scp /本地目录/www.example.com.key root@ECS公网IP:/etc/nginx/ssl/
Apache环境把目标路径替换为
/etc/httpd/ssl/。
上传完成修改证书目录下文件权限,私钥权限必须严格限制,避免服务器其他普通用户读取私钥:
sudo chmod 600 /etc/nginx/ssl/www.example.com.key
sudo chown root:root /etc/nginx/ssl/www.example.com.key
Apache环境执行对应路径权限修改:
sudo chmod 600 /etc/httpd/ssl/www.example.com.key
sudo chown root:root /etc/httpd/ssl/www.example.com.key
四、Nginx服务器完整HTTPS配置
编辑Nginx站点配置文件,一般路径为/etc/nginx/conf.d/域名.conf:
sudo vim /etc/nginx/conf.d/www.example.com.conf
写入完整配置,包含443端口HTTPS服务、TLS安全套件、OCSP Stapling、HSTS头,同时配置80端口全部301永久重定向到HTTPS:
server {
listen 443 ssl;
server_name www.example.com;
#证书与私钥路径
ssl_certificate /etc/nginx/ssl/www.example.com.pem;
ssl_certificate_key /etc/nginx/ssl/www.example.com.key;
#禁用老旧不安全TLS协议版本
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE‑RSA‑AES128‑GCM‑SHA256:ECDHE‑RSA‑AES256‑GCM‑SHA384:ECDHE‑ECDSA‑AES128‑GCM‑SHA256;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
#OCSP Stapling优化证书状态校验速度
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/www.example.com.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
#HSTS响应头,强制浏览器使用HTTPS访问
add_header Strict‑Transport‑Security "max‑age=31536000; includeSubDomains" always;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
#80端口HTTP全部301永久重定向HTTPS
server {
listen 80;
server_name www.example.com;
return 301 https://$host$request_uri;
}
配置编辑保存完成,校验Nginx配置语法是否存在错误:
sudo nginx -t
输出test is successful说明配置语法正常,重载Nginx配置,不中断线上业务访问:
sudo nginx -s reload
五、Apache服务器HTTPS完整配置
CentOS/RHEL系统先安装ssl模块:
sudo yum install mod_ssl -y
Ubuntu/Debian系统:
sudo apt install apache2 -y
编辑ssl站点配置文件,CentOS路径一般/etc/httpd/conf.d/ssl.conf:
sudo vim /etc/httpd/conf.d/ssl.conf
写入443端口虚拟主机配置:
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot "/var/www/html"
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/www.example.com.crt
SSLCertificateKeyFile /etc/httpd/ssl/www.example.com.key
SSLCertificateChainFile /etc/httpd/ssl/www.example.com.pem
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES
SSLHonorCipherOrder on
Header always set Strict‑Transport‑Security "max‑age=31536000; includeSubDomains"
<Directory "/var/www/html">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
新增80端口配置,实现HTTP访问自动跳转HTTPS:
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost>
校验Apache配置语法正确性:
#CentOS系统
sudo apachectl configtest
#Ubuntu系统
sudo apache2ctl configtest
重启Apache服务,使配置生效:
#CentOS
sudo systemctl restart httpd
#Ubuntu
sudo systemctl restart apache2
六、HTTPS部署验证与全站混合内容修复
6.1 多途径验证部署结果
浏览器访问https://域名,地址栏出现安全锁标识,代表基础HTTPS部署成功。
命令行方式检查443端口监听状态与证书详情:
#查看443端口监听状态
sudo netstat -tuln | grep 443
#openssl工具查看证书详细信息
openssl s_client -connect www.example.com:443
6.2 混合内容Mixed‑Content问题处理
HTTPS页面内部加载http://协议的图片、JS、CSS资源,浏览器会标记页面不安全,部分脚本资源会被浏览器直接拦截,这就是混合内容问题。
常见三类解决方案:
- 修改业务页面源码,页面资源链接把
http://改为https://,或者使用协议相对路径//资源地址自动适配访问协议。 - Nginx增加sub_filter模块配置,反向代理层面自动替换页面内http链接:
sub_filter 'http://www.example.com' 'https://www.example.com';
sub_filter_once off;
- 在Web服务配置添加CSP内容安全策略响应头,只允许HTTPS来源资源加载。
排查混合内容:浏览器按下F12打开开发者工具,切换到Console控制台,可以看到混合内容相关报错,定位具体异常资源URL。
七、安全加固关键要点
- TLS协议版本管控:仅保留TLSv1.2、TLSv1.3,彻底禁用老旧SSLv2、SSLv3、TLSv1、TLSv1.1,规避老旧协议安全漏洞。
- 开启HSTS响应头,防止用户被劫持跳转到HTTP页面。
- 开启OCSP Stapling,加速证书吊销状态校验,优化访问性能。
- 证书到期监控提醒:免费DV证书有效期仅90天,需要在到期之前重新申请并且更新服务器证书文件,证书过期浏览器会直接报不安全警告。
- 严格管控私钥文件权限,禁止泄露私钥内容。
八、高频故障排查
故障1:访问https域名无法建立连接
排查顺序:确认ECS安全组443端口入方向放行;操作系统防火墙开放443端口;Nginx/Apache服务正常运行;配置内证书路径、文件名书写无误;私钥文件权限配置正确。
故障2:浏览器提示证书不安全
排查证书是否签发完成、证书没有过期;证书绑定域名与实际访问域名保持一致;完整证书链配置完整;清除浏览器缓存,使用无痕模式访问页面复现。
故障3:HTTP访问不会自动跳转HTTPS
确认安全组80端口开放;检查80端口对应的server块重定向配置;Web服务配置重载执行成功;清除浏览器缓存测试。
故障4:页面样式错乱,图片资源无法加载
大概率属于混合内容问题,F12控制台查看报错,页面中http协议资源链接替换为https,使用Nginx sub_filter辅助替换,或者配置CSP策略。
九、后续运维维护总结
HTTPS改造不是一次性操作,后续需要持续运维维护。免费DV证书90天到期,需要重新申请下载证书更新服务器文件;更新证书之后重载Web服务配置,不需要完全重启服务。详情👉访问阿里云 数字证书管理服务(原SSL证书) 平台了解。
可以定期使用SSL在线检测工具扫描站点TLS安全评分;新业务开发上线页面资源不要硬编码http链接;可以搭配WAF等安全产品进一步提升站点整体防护能力。
完成全站HTTPS加密改造,实现传输链路加密,规避中间人劫持风险,同时提升站点浏览器信任度,是现代Web站点必不可少的安全基础配置。