为什么你的网站需要HTTPS
打开浏览器,访问一个没有“小锁”图标的网站时,地址栏会显示“不安全”。这不仅让用户心里打鼓,连搜索引擎也开始对这类站点降权。尤其是做电商、会员登录或者表单提交的网站,数据明文传输等于把密码和信息贴在大街上。
启用HTTPS后,数据在用户和服务器之间全程加密,中间人偷看不了,篡改不了。现在大多数浏览器还会对非HTTPS页面直接标红警告,逼着站长升级。
获取SSL证书:第一步
HTTPS的核心是SSL/TLS证书。你可以从云服务商免费申请,比如阿里云、腾讯云都提供为期一年的DV型免费证书。进入控制台,找到“SSL证书”服务,点击申请,填写域名,验证所有权即可。
如果是个人博客或测试站,Let's Encrypt也是个好选择,自动化脚本acme.sh能帮你几分钟内搞定签发。
上传证书到服务器
申请通过后,你会下载到一个压缩包,里面通常包含两个文件:一个以.crt结尾的公钥,一个以.key结尾的私钥。登录你的服务器,把它们放到统一目录,比如/etc/ssl/certs/和/etc/ssl/private/。
Nginx配置示例
如果你用的是Nginx,打开站点配置文件,比如/etc/nginx/sites-available/your-site,改成这样:
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
root /var/www/html;
index index.html;
}别忘了把原来的80端口监听保留一份,用来做跳转:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}Apache怎么配
Apache用户也不用慌。确认mod_ssl已启用,然后在虚拟主机配置里加上:
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/example.com.crt
SSLCertificateKeyFile /etc/ssl/private/example.com.key
<Directory /var/www/html>
AllowOverride All
</Directory>
</VirtualHost>重启Apache:sudo systemctl restart apache2,刷新网页试试。
检查是否生效
改完配置别急着庆祝。打开浏览器,输入网址,看地址栏有没有绿色小锁。按F12,切换到“Security”标签,能看到连接协议是不是TLS 1.2以上,证书是否有效。
还可以用在线工具检测,比如SSL Labs的SSL Test,输入域名,它会告诉你配置有没有漏洞,比如是否支持旧协议、是否存在弱加密套件。
处理混合内容警告
即使启用了HTTPS,页面里如果还引用了HTTP的图片、JS或CSS,浏览器依然会报“不安全”。这时候要检查源码,把所有http://开头的资源链接换成相对协议//example.com/script.js或者直接写https://。
WordPress用户可以在后台设置里把“站点地址”和“首页地址”都改成https,再装个插件如“Really Simple SSL”,自动处理内部链接转换。
强制全站走HTTPS
偶尔有访客手动输http开头的网址,得让他们自动跳过来。Nginx和Apache前面已经写了301跳转。如果你用CDN,比如Cloudflare,可以在“SSL/TLS”选项里选“Full”模式,并开启“Always Use HTTPS”开关,一键搞定。