获取SSL证书 -> 在服务器上配置证书 -> 强制跳转HTTPS

下面我会把每个步骤拆解开来,用通俗易懂的方式解释,并提供不同服务器环境的配置示例。
第一步:理解HTTPS和SSL证书
HTTPS = HTTP + SSL/TLS
- HTTP:你网站现在使用的协议,数据是明文传输的,就像寄一封没有封口的信,任何人都可以看到内容。
- SSL/TLS:一个安全协议,它会在你的服务器和访客的浏览器之间建立一个加密通道,数据传输时会被加密,就像把信装进一个上了锁的保险箱,只有拥有钥匙(证书)的人才能打开。
SSL证书:就是这个“锁”和“钥匙”的实体,它是一个由受信任的机构(称为CA,证书颁发机构)颁发的数字文件,包含了你的网站信息、公钥等,它的作用是:
- 验证身份:告诉浏览器,这个网站是真的你,而不是一个冒牌的钓鱼网站。
- 加密数据:确保数据在传输过程中不被窃取或篡改。
第二步:获取SSL证书
你有几种方式可以获取SSL证书,从免费到付费不等。

免费证书(强烈推荐个人博客、中小型网站使用)
最权威的免费证书颁发机构是 Let's Encrypt,它的证书免费、自动化、且受所有主流浏览器信任。
-
如何获取? 你通常不需要直接去Let's Encrypt官网手动操作,很多服务器控制面板、主机商或工具已经集成了自动申请和续期功能,非常方便。
-
如果你使用虚拟主机/共享主机: 你的主机商(如Bluehost, SiteGround, 腾讯云, 阿里云等)通常会提供免费的“Let's Encrypt”一键安装功能,登录你的主机控制面板,找到“安全性”、“SSL”或“网站设置”等选项,按照提示点击几下即可完成。
-
如果你使用VPS或云服务器(如DigitalOcean, Vultr, 阿里云ECS): 你需要自己操作,可以使用工具来简化这个过程,最常用的是 Certbot。
- 在你的服务器上安装Certbot。
- 运行Certbot命令,它会自动检测你的Web服务器(如Nginx或Apache),申请证书,并尝试自动配置好服务器,这是最推荐的方式。
-
付费证书
付费证书通常提供更多特性,
- 更高的保障金额:如果因证书安全问题导致损失,CA会进行赔付。
- 更严格的身份验证:需要提供更多的公司文件来证明网站所有权,适合企业、电商网站。
- 通配符证书:可以保护一个主域名及其所有下一级子域名(
*.yourdomain.com)。 - 品牌和信任标识:一些证书会在浏览器地址栏显示品牌标识。
常见的付费CA机构有:DigiCert, Sectigo, GlobalSign等,你可以直接向它们购买,或者通过你的主机商购买。
第三步:在服务器上安装和配置SSL证书
这是技术性最强的一步,你需要将获取到的证书文件部署到你的Web服务器上。
场景1:使用虚拟主机控制面板(最简单)
- 登录你的cPanel、Plesk或其他控制面板。
- 找到 "SSL/TLS Status" 或 "SSL Management" 等类似选项。
- 在你的域名旁边,点击 “Install SSL” 或 “管理SSL”。
- 控制面板会自动使用你之前申请的免费Let's Encrypt证书,或者让你上传你购买的证书文件(通常需要三个文件:证书文件、私钥文件、中间证书链文件)。
- 点击安装,等待几分钟即可。
场景2:使用Nginx服务器(命令行操作)
假设你已经用Certbot自动获取了证书,它会自动帮你配置好,如果你想手动配置,需要修改 nginx.conf 或站点的配置文件(通常在 /etc/nginx/sites-available/yourdomain)。
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
# 强制将HTTP请求重定向到HTTPS
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
# SSL证书配置
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
# 其他安全优化配置 (推荐)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers '...'; # 使用强加密套件
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
- 解释:
- 第一个
server块监听80端口(HTTP),所有访问都通过return 301永久重定向到443端口(HTTPS)。 - 第二个
server块监听443端口,并加载你的证书文件和私钥文件。
- 第一个
场景3:使用Apache服务器(命令行操作)
同样,Certbot也能自动配置Apache,手动配置需要修改站点的配置文件(通常在 /etc/apache2/sites-available/yourdomain.conf)。
<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
# 强制将HTTP请求重定向到HTTPS
Redirect permanent / https://yourdomain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
# SSL证书配置
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
# 可能还需要中间证书
# SSLCertificateChainFile /etc/letsencrypt/live/yourdomain.com/chain.pem
# 其他Apache配置...
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
- 解释:
- 第一个
<VirtualHost *:80>块使用Redirect permanent将HTTP流量重定向到HTTPS。 - 第二个
<VirtualHost *:443>块启用SSL并加载证书文件。
- 第一个
配置完成后,记得重启你的Web服务器使配置生效:
- Nginx:
sudo systemctl restart nginx - Apache:
sudo systemctl restart apache2
第四步:强制所有访问都通过HTTPS
这是至关重要的一步!你不仅要让HTTPS可用,还要确保所有用户都通过HTTPS访问,否则就失去了HTTPS的意义。
方法1:服务器配置(推荐)
在上述Nginx和Apache的配置中,我们已经通过重定向实现了这一点,这是最可靠的方法。
方法2:使用.htaccess文件(适用于Apache主机)
如果你没有服务器的root权限,可以在网站的根目录下编辑或创建一个名为 .htaccess 的文件,加入以下代码:
# 开启重写引擎
RewriteEngine On
# 如果不是HTTPS连接,则重定向到HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
方法3:使用JavaScript代码(不推荐,作为备用)
这是一种客户端的补救方法,如果服务器配置失败,它可以在浏览器端进行跳转,但不如服务器端重定向可靠,且会在用户看到HTTP页面一闪后才跳转。
if (location.protocol !== 'https:') {
location.replace(`https:${location.href.substring(location.protocol.length)}`);
}
第五步:验证和测试
完成所有配置后,务必进行全面测试:
- 浏览器地址栏:访问你的网站,地址栏应该显示一个锁形图标,点击它可以看到证书信息。
- SSL Labs测试:访问 SSL Server Test,输入你的域名,它会给你一个详细的评分(A+是最好的),并指出任何配置问题,目标是获得 A或A+。
- 内部链接检查:检查网站上的所有链接(图片、CSS、JS文件、页面跳转等),确保它们都使用了
https://开头,可以使用像 Screaming Frog SEO Spider 这样的工具进行爬虫检查。 - 检查:浏览器控制台(按F12打开)可能会提示“Mixed Content”(混合内容)错误,意思是HTTPS页面中加载了HTTP的资源,必须将这些资源的URL也改为HTTPS。
第六步:设置自动续期(Let's Encrypt特有)
Let's Encrypt的证书有效期只有90天,所以必须设置自动续期,否则网站会在90天后无法访问。
- Certbot用户:幸运的是,Certbot在安装时会自动设置一个定时任务(cron job)来定期续期证书,你可以通过运行
sudo crontab -l来查看,通常它会每1-2个月自动运行一次,你无需任何操作。 - 虚拟主机用户:大多数主机商的“一键安装”功能已经内置了自动续期机制,无需担心。
HTTPS配置流程回顾:
- 购买/获取证书:首选免费、自动的Let's Encrypt。
- 上传/部署证书:通过主机控制面板或服务器命令行,将证书文件安装到你的Web服务器上。
- 配置服务器:修改Nginx/Apache配置,让服务器监听443端口并使用证书。
- 强制跳转:配置服务器或
.htaccess文件,将所有HTTP(80)流量永久重定向到HTTPS(443)。 - 全面测试:检查浏览器地址栏、SSL Labs评分、网站内部链接,确保万无一失。
- 设置自动续期:对于Let's Encrypt,确保Certbot的自动续期任务已设置。
虽然听起来步骤不少,但对于大多数现代主机和工具来说,整个过程已经变得非常自动化,对于新手,从虚拟主机控制面板的一键安装开始是最简单、最不容易出错的方式。
