让网站变得安全需要三个独立的步骤:签发证书、将所有访客引导至 HTTPS,以及确保页面上没有任何内容仍通过普通 HTTP 加载。每个步骤解决的问题各不相同,而步骤顺序一旦弄错,就会引发浏览器警告和重定向循环。
本指南将借助您 cPanel 中现成的工具,带您在 WebGee 共享主机和经销商主机上完成这三个步骤。
要点速览
- 新域名默认被排除在 AutoSSL 之外,因此在运行 AutoSSL 之前,请先在 SSL/TLS Status 中将其纳入。
- 请先安装可正常使用的证书,再强制 HTTPS,否则每位访客都会看到浏览器安全警告。
- 对几乎所有网站来说,cPanel 中的 Force HTTPS Redirect 开关都是最佳选择;仅在需要条件规则时才使用 .htaccess。
- 重定向生效后如果锁形图标仍未出现,通常是混合内容所致,浏览器控制台会为您列出相关资源。
- 只在一个地方强制 HTTPS,并将 Cloudflare 设置为 Full (strict),以避免重定向循环。
开始之前
- 您的域名已解析到 WebGee 主机账户(请检查其域名服务器或 A 记录)。
- 您可以登录该账户的 cPanel。
- 如果网站使用 WordPress,您可以登录 WordPress 仪表盘。
- 如果域名接入了 Cloudflare,您可以登录 Cloudflare 账户。
第 1 步:通过 AutoSSL 签发免费证书
在账户存续期间,WebGee 会通过 AutoSSL 免费签发并续期 SSL 证书。这些证书由 Sectigo 签发,采用 256 位加密,有效期为 90 天,并会在到期前自动续期。
但有一点需要注意:新域名默认被排除在 AutoSSL 之外,因此直接运行 AutoSSL 并不会产生任何效果。请先将域名纳入:
- 在 cPanel 中,打开 Security 部分的 SSL/TLS Status。
- 勾选表头中的复选框,一次性选中所有域名。
- 选择 Include Domains during AutoSSL。系统会显示确认信息,列出已解除排除的每个域名。
- 选择 Run AutoSSL。
- 等待检查完成后,刷新页面。
现在,每个域名都会显示绿色锁形图标和 AutoSSL Domain Validated。签发通常只需几分钟,而且纳入操作只需进行一次:后续续期无需您再做任何操作。包含截图的完整操作指南请参阅安装免费 SSL 证书。
全部选中,而不仅仅是主域名
列表中包含 cPanel 自动创建的服务子域名,例如 mail.、webmail.、cpanel.、autodiscover. 和 autoconfig.。请将它们全部纳入。邮件客户端会连接 mail.,而 Outlook 和 Apple Mail 则通过 autodiscover. 和 autoconfig. 进行自动配置。如果没有证书,即使网站本身一切正常,这些连接也会出现安全警告。
确认证书生效
访问 https://example.com,确认没有浏览器警告,或者在终端中测试:
curl -sI https://example.com | head -n 1cPanel 仪表盘侧边栏也能帮您快速确认:证书就位后,状态会从 Inactive 变为 Active。
AutoSSL 无法签发证书时
如果域名纳入后仍然没有证书,请逐一排查以下原因:
- 域名未解析到您的账户。AutoSSL 通过 HTTP 获取文件来验证您对域名的控制权,因此如果域名指向其他地方或仍在生效中,验证就会失败。检查域名使用的是哪些域名服务器。
- 域名受出口限制。根据美国出口法律,Sectigo 无法为某些司法管辖区的域名签发证书。Let's Encrypt 没有此类限制;您可以在 SSL/TLS Status 中将其选为证书提供商。
- 您需要通配符证书。AutoSSL 只为单个主机名签发证书。如需
*.example.com,请使用 cPanel 中的 Let's Encrypt™ SSL 工具。通配符证书通过 DNSTXT记录进行验证:如果您的 DNS 托管在 cPanel 中,该过程是自动完成的;如果托管在 Cloudflare 或域名注册商处,则需要手动操作。请参阅使用 Let's Encrypt 安装通配符证书。 - 它是别名域名下的服务子域名。cPanel 不会为别名(停放)域名创建
mail.或cpanel.,因此 AutoSSL 没有可保护的对象。请在邮件客户端中改用主域名的mail.主机名;邮箱地址不必与服务器主机名一致。请参阅AutoSSL 为何会跳过部分服务子域名。
先装证书,再设重定向 如果在没有可用证书的域名上强制 HTTPS,每位访客看到的将是浏览器安全警告,而不是您的网站。在开启任何重定向之前,请直接访问 https://example.com 并确认其正常工作。
第 2 步:强制 HTTPS
安装证书并不会自动将访客引导至网站的安全版本,这需要单独设置。
使用 cPanel 开关
对几乎所有网站来说,这都是最佳选择。它在 Web 服务器层面生效,早于任何应用代码运行,而且日后迁移主机时也无需撤销任何设置。
- 在 cPanel 中,打开 Domains。
- 在列表中找到您的域名。
- 开启 Force HTTPS Redirect。
更改会立即生效。如需同时更改多个域名,请在左侧列中勾选这些域名,然后选择表格上方的 Enable Force HTTPS Redirect。
同步更新 WordPress 设置
WordPress 会保存自己的网址。如果其中仍是 http://,它就会继续生成 HTTP 链接,导致访客被来回跳转。
- 在 WordPress 中,前往 设置 → 常规。
- 将 WordPress 地址(URL)和站点地址(URL)都设置为
https://example.com。 - 选择保存更改。
仅在需要条件规则时使用 .htaccess
如果您需要开关无法实现的行为,例如只对某个子目录强制 HTTPS 而不对另一个子目录强制,请将以下内容添加到文档根目录中 .htaccess 文件的最顶部,置于所有现有重写规则之前。每条指令单独占一行;如果写在一起,Apache 会拒绝执行。
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]请使用 R=301,而不是单独的 R:永久重定向能让搜索引擎将 HTTPS 地址视为规范地址。请使用 %{HTTP_HOST},而不是写死的域名,这样该规则就能适用于账户中的所有域名和子域名。
检查重定向
curl -sI http://example.com | head -n 3您应看到 HTTP/1.1 301 Moved Permanently,以及指向 https:// 地址的 Location: 标头。如果显示 302,则说明该重定向是临时的。更多详情请参阅为网站强制启用 HTTPS。
避免重定向循环
重定向循环几乎总是因为在多个地方同时强制了 HTTPS,常见情况是 cPanel 开关、.htaccess 规则和插件同时启用。请只保留其中一种,删除其余的。
如果使用 Cloudflare,Flexible SSL 模式也会导致同样的循环:Cloudflare 通过 HTTP 请求您的网站,服务器又重定向到 HTTPS,如此往复。请将 Cloudflare 的 SSL 模式设置为 Full (strict),该模式可与您的 AutoSSL 证书配合使用。请参阅让网站接入 Cloudflare。
第 3 步:修复混合内容警告
如果重定向已生效,但浏览器仍显示不安全、锁形图标异常,或页面缺少样式,说明页面正在通过普通 HTTP 加载图片、样式表或脚本。这就是混合内容。浏览器会直接拦截脚本和样式表,并对图片发出警告。
找出有问题的资源
打开浏览器控制台:在 Chrome、Edge 或 Firefox 中,右键单击页面并选择检查,然后切换到控制台。在 Safari 中,需要先在高级偏好设置中启用开发菜单。保持控制台打开并刷新页面。每条警告都会列出一个以 http:// 开头的 URL,这就是您需要修复的清单。
修复问题
- WordPress:确认设置 → 常规中的两个地址都以
https://开头,然后安装 Really Simple SSL 插件,它会在页面输出时重写http://引用。如需彻底解决,请使用 Better Search Replace 替换数据库中的 URL。它能正确处理序列化数据,而普通的 SQL 查找替换则会破坏这些数据。 - 手写代码的网站:将每处引用改为相对路径(例如
/logo.png)或绝对https://URL。相对路径不受协议或域名影响,始终有效。 - 第三方资源:如果外部网站提供 HTTPS URL,请改用该地址。如果没有,请将文件托管到自己的服务器上;除此之外别无他法安全加载。
完整指南请参阅修复混合内容警告。
在无痕窗口中测试 页面的缓存副本可能仍会呈现旧的效果。请清除缓存插件的缓存;如果使用 Cloudflare,也请清除其缓存,并检查多个页面,而不仅仅是首页。
快速回顾
将所有域名纳入 AutoSSL 并运行。确认 https:// 能够正常加载。只在一个地方开启 Force HTTPS Redirect,并同步更新 WordPress 设置。然后借助浏览器控制台清除剩余的 http:// 资源,直到每个页面都重新显示锁形图标。
常见问题
SSL 证书需要多少钱?
完全免费。在共享主机和经销商主机上,WebGee 会在账户存续期间免费签发并续期 AutoSSL 证书。
我需要手动续期证书吗?
不需要。AutoSSL 证书有效期为 90 天,并会在到期前自动续期。域名一旦纳入 AutoSSL,后续续期无需您再做任何操作。
为什么 AutoSSL 没有为我的域名签发证书?
最常见的两个原因是:域名仍被排除在 AutoSSL 之外,或者域名尚未解析到您的账户。这两种情况在界面上看起来完全一样,因此请先检查排除设置,再检查域名使用的是哪些域名服务器。
AutoSSL 可以签发通配符证书吗?
不可以。AutoSSL 只为单个主机名签发证书。如需 *.example.com,请使用 cPanel 中的 Let's Encrypt SSL 工具,它通过 DNS TXT 记录验证通配符证书。