bg-tutorials

如何在PrestaShop上安装SSL证书并启用HTTPS

让 PrestaShop 商店启用 HTTPS 分三步:在服务器上安装 SSL 证书,在店铺参数中打开两个设置项,然后重定向旧的 HTTP 流量。中间这一步最容易让人出错,因为 PrestaShop 有两个 SSL 设置项而不是一个,第二个在第一个保存之前一直处于锁定状态。

快速答案:在服务器上已配置好可用证书的情况下,打开店铺参数 > 常规,点击检查商店是否支持 HTTPS 的链接,将启用 SSL设为“是”,然后将在所有页面启用 SSL设为“是”,滚动到页面底部并点击保存。如果第二个开关是灰色不可用状态,说明第一个开关还没有保存。

SSL(Secure Sockets Layer 的缩写,尽管现在发行的证书全部使用TLS)正是让商店地址栏出现锁形图标、支付网关得以运作的关键。如果你想先了解背景知识,请阅读什么是 SSL 证书。以下步骤适用于PrestaShop 8PrestaShop 9

哪种方法适合你的 PrestaShop 环境

你的环境如何获取证书大致耗时
带有 AutoSSL 的托管主机或 cPanel 主机在面板中签发免费证书,然后在 PrestaShop 中启用 SSL10 分钟
自有 VPS,没有主机面板使用 Certbot 获取 Let’s Encrypt 证书20 分钟
付费证书(OV、EV 或通配符)生成 CSR,手动安装30 分钟加上验证时间
商店前端使用 Cloudflare在源服务器上安装证书,Cloudflare 设为 Full (strict)15 分钟

开始之前请先备份商店和数据库。如果是正在运营的商店,请在非高峰时段操作:结账功能每中断一分钟,都意味着可能丢失一笔订单。

PrestaShop 商店应该使用哪种 SSL 证书?

免费证书的加密效果与付费证书完全相同,对于小型商店来说,免费证书往往就是正确的选择。PrestaShop SSL 证书之间的差异在于证书颁发机构在签发证书前进行了哪些验证,以及出现问题时有哪些保障措施。

类型CA 检查的内容签发时间适合场景
域名验证 (DV)确认你拥有该域名的控制权数分钟小型商店,使用托管支付页面的商店
组织验证 (OV)域名以及你注册的公司信息1 至 3 个工作日成熟商店、B2B 场景,以及买家需要核实付款对象的场合
扩展验证 (EV)对公司进行全面的法律和运营审核1 至 3 个工作日订单金额较高、金融行业,以及直接处理银行卡数据的商店

电商网站在免费证书与付费证书的选择上,与博客网站的考量方式不同。付费证书附带保修,如果证书本身出现问题会赔偿相应损失,还附带可以在结账页面展示的站点信任标志。免费证书没有这两项,而且只提供域名验证级别的认证,无法证明商店的运营者身份。

还有两点是 PrestaShop 特有的。如果你在多个子域名上运行多店铺,一张通配符证书就能一次性覆盖所有子域名,而不必为每个商店单独申请证书。无论选择哪种证书,HTTPS 在这里都不是可选项:支付网关不会处理通过普通 HTTP 传输的实时交易,而且 PCI DSS 要求在任何传输银行卡数据的页面上使用强加密(实际上就是 TLS 1.2 或更高版本)。如果你不确定应该选择哪种类型,SSL 向导可以帮你缩小选择范围。

将证书安装到服务器上

PrestaShop 本身不安装证书。这一步要先在服务器上完成,而且在你能够通过 HTTPS 访问后台之前,PrestaShop 甚至不会显示启用 SSL开关。

  • 通过主机面板。 查找 SSL/TLS、Let’s Encrypt 或 AutoSSL 选项。在 cPanel 中,该选项位于安全栏目下。请同时为主域名和 www 版本签发证书。
  • 在 VPS 上。 使用Certbot,它可以通过命令行签发证书,并自动设置续期定时任务。
  • 付费证书。 使用我们的CSR 生成器CSR 指南生成 CSR,完成验证后,安装证书、私钥和中间证书。在 cPanel 中,该操作位于SSL/TLS > Manage SSL sites,详见cPanel 安装指南。其他平台的安装方法请参见SSL 安装指南

Let’s Encrypt 证书有效期为90 天,并会在到期前约 30 天自动续期。当这个自动化流程失效时,商店会持续运行数周,然后毫无预警地变为不安全状态,而这往往正好发生在销售旺季。请确认自动续期功能已开启,并在预期的首次续期日期之后,使用SSL 检测工具检查证书状态。

有一个陷阱在商店场景下比在其他任何场景下都更重要:如果安装证书时没有附带中间证书,浏览器仍会显示锁形图标,因为桌面浏览器会缓存之前在别处见过的中间证书。但你的支付网关不会。一个看起来正常运行、却在支付回调环节失败的商店,往往就是证书链不完整造成的。

如何在 PrestaShop 中启用 SSL

PrestaShop 有两个SSL 设置项,而不是一个,操作顺序很关键:

  • 启用 SSL只保护结账页面和账户页面。这是 PrestaShop 早期的默认做法,源于当时商店大部分页面通过 HTTP 提供服务,只对敏感页面进行加密。
  • 在所有页面启用 SSL会保护整个商店。这个选项在启用 SSL被打开并保存之前一直处于灰色不可用状态。

你需要同时启用这两项。完整操作步骤如下:

  1. 在后台打开店铺参数 > 常规。 针对 PrestaShop 1.6 编写的教程会将其称为偏好设置 > 常规;该菜单在 1.7 版本中被重命名,但设置项本身是相同的。
  2. 点击“请点击此处检查您的商店是否支持 HTTPS”链接。 该链接会通过 HTTPS 重新加载后台。只有当你正在通过普通 HTTP 查看后台时,PrestaShop 才会显示这个链接,所以如果你已经通过 HTTPS 管理商店,就不会看到它,可以直接进行下一步。
  3. 将启用 SSL 设为“是”。
  4. 将在所有页面启用 SSL 设为“是”。
  5. 滚动到页面底部。
  6. 点击保存。 不点击保存,任何设置都不会生效。
PrestaShop 店铺参数中的启用 SSL 和在所有页面启用 SSL 设置

以上说明适用于PrestaShop 8PrestaShop 9。截至 2026 年 6 月,当前版本为 9.1.4 和 8.2.7。PrestaShop 1.7 的操作方式相同,但其维护已在 PrestaShop 9.0 于 2025 年 6 月发布时终止,因此不再接收安全补丁,升级应列入你的待办事项。1.6 版本使用的是旧版菜单名称。

为什么启用 SSL 开关是灰色不可用状态

这是最常见的 PrestaShop SSL 问题。在做其他任何操作之前,先确认你遇到的具体是这两种症状中的哪一种。

如果启用 SSL选项根本没有出现在页面上,说明你正在通过普通 HTTP 查看后台。PrestaShop 只在安全连接下显示该开关,所以在 http:// 后台中,你看到的会是 HTTPS 检测链接而不是开关。通过点击该链接或直接输入地址,用 https:// 地址访问后台,开关就会出现。

如果在所有页面启用 SSL选项可见但呈灰色不可用状态,请按顺序排查以下三个原因。

1. 你还没有保存

这是迄今为止最常见的原因。你打开了启用 SSL,然后查看在所有页面启用 SSL,发现它仍是灰色不可用状态,于是以为出了故障。其实没有:第二个设置只有在第一个设置被保存之后才会解锁。滚动到页面底部,点击保存,页面重新加载后第二个开关就会激活。PrestaShop 自己的问题追踪系统中就有一条标题为“Enabling Https/ssl is quite confusing”(启用 Https/ssl 相当令人困惑)的记录,所以如果你也被这一点卡住,绝不是只有你一个人。

2. HTTPS 检测失败

如果后台完全无法通过 HTTPS 加载,或者加载时浏览器发出警告,问题出在证书本身,而不是 PrestaShop。常见原因包括:证书尚未安装、证书覆盖的是 www 而你正在访问主域名(或反过来),或者证书安装时没有附带中间证书。使用SSL 检测工具针对你商店网址中的确切域名进行检测,修复检测结果中报告的问题后再返回后台。

3. 直接在数据库中设置

如果已经确认证书工作正常,但开关仍然无法切换,两个设置项都存储在ps_configuration表中,可以直接设置。在 phpMyAdmin 或任何 SQL 客户端中执行:

UPDATE ps_configuration SET value = 1 WHERE name = 'PS_SSL_ENABLED';
UPDATE ps_configuration SET value = 1 WHERE name = 'PS_SSL_ENABLED_EVERYWHERE';

如果你的表前缀不是默认的ps_,请相应调整,然后清除缓存。要撤销这一操作(例如因为证书出错导致你被锁在自己的后台之外),只需将同样的两条语句中的 1 改为 0 再执行一次。

在 PrestaShop 中将 HTTP 重定向到 HTTPS

在两个设置都保存之后,PrestaShop 已经会对前台页面的 HTTP 请求返回 301 重定向到对应的 HTTPS 地址,因此旧链接和已被搜索引擎收录的网址不会失效。不过它只处理真正到达 PrestaShop 的请求。直接从磁盘提供的文件,例如图片、PDF 以及位于/img//upload/目录下的任何内容,不会被重定向,POST 请求同样不会被重定向。在服务器层级设置规则可以覆盖所有这些情况,而且这种重定向不需要每次都启动 PHP。

在你修改任何内容之前,请先阅读这段说明。 PrestaShop 会自动生成.htaccess文件,保存店铺参数 > 流量与 SEO > SEO 与网址会重写这个文件。它不会清空整个文件。PrestaShop 只会替换两个标记注释# ~~start~~# ~~end~~之间的内容块,并保留位于它们上方或下方的任何内容——这一点标记行本身就已经说明了。所以只要把你的规则放在这个内容块之外,它们就能在每次重新生成时保留下来。粘贴在这个内容块内部的任何内容,在你下次保存该页面时都会消失。

在 Apache 上,将以下内容添加到商店根目录下的.htaccess文件中,放在# ~~start~~这一行之上:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

条件必须写成off,意思是“当请求尚未使用安全连接时进行重定向”。R=301标记使这个重定向成为永久重定向;如果没有它,你得到的将是临时重定向,这种重定向不会告诉搜索引擎网址已经迁移。

在 Nginx 上没有.htaccess文件,需要改为编辑服务器配置块:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

使用nginx -t测试配置,然后使用systemctl reload nginx重新加载。

修复切换后遗留的问题

清除 PrestaShop 缓存。 首先完成这一步。被缓存的前台页面会继续提供包含 HTTP 标记的内容,让一次原本已经完成的切换看起来像是出了故障。如果你使用了 CDN,也要一并清除其缓存。

修复混合内容问题。 一个通过 HTTPS 提供的页面,如果仍通过 HTTP 加载图片、脚本或样式表,就属于混合内容。浏览器会悄悄升级部分资源(主要是图片和媒体文件),但会直接拒绝加载其他资源,这就是为什么受影响的页面可能会出现样式丢失的情况。在 PrestaShop 中,常见的混合内容来源包括 CMS 页面中硬编码的网址、模块配置,以及从别处粘贴过来的产品描述。浏览器控制台会指出具体的问题文件。我们关于如何修复混合内容的指南对诊断过程有详细说明。

重新生成站点地图,使其列出 https 网址,并检查是否还有模块在向邮件或发票中写入 http 链接。

排查 PrestaShop SSL 问题

症状原因解决方法
启用 SSL 后出现无限重定向循环Cloudflare 加密模式设为 Flexible,导致它向源服务器发送 HTTP 请求,而源服务器又将其重定向到 HTTPS将 Cloudflare 设为Full (strict),并确保源服务器上有有效证书
被锁定在后台之外证书损坏或缺失时启用了 SSLps_configuration中的两个键都设为 0,修复证书后再重试
只有产品页面缺少锁形图标混合内容,通常是产品图片或某个模块的资源文件在浏览器控制台中查找 HTTP 资源
商店在几周后变为不安全状态Let’s Encrypt 证书因续期出错而过期重新签发证书,然后确认自动续期功能已开启。参见中间证书过期
浏览器正常,但结账或支付回调失败证书链不完整安装完整的 CA 证书包,再用 SSL 检测工具重新检测
www 或主域名出现名称不匹配证书只覆盖了两者中的一个名称重新签发覆盖两者的证书。参见通用名称无效

如果证书已安装但商店仍显示为不安全,SSL 错误指南可以帮助你处理具体的浏览器错误代码。

切换之后:SEO 检查清单

  • 在 Google Search Console 中添加 HTTPS 资源。 HTTP 资源不会报告 HTTPS 网址的数据。添加新的资源,或者使用可同时覆盖两者的域名资源。
  • 重新提交站点地图,使用 https 网址。
  • 检查规范标签是否在所有产品页面和分类页面中都指向 https 地址。
  • 更新 Merchant Center 数据源、分析工具以及任何存储你商店网址的市场平台集成。 含有 http 链接的产品数据源是一个常被忽略的问题。

预计会出现一些波动。Google 会将从 HTTP 切换到 HTTPS 视为网址发生变化的站点迁移,因此在一段时间内,展示次数会分散到你的两个 Search Console 资源中,排名也会在几周内出现波动。只要每个网址都能正常访问,并且 301 重定向已经设置到位,就不需要额外处理。

一旦 HTTPS 稳定运行一段时间后,可以考虑启用HSTS,它会告诉浏览器拒绝以普通 HTTP 方式访问你的域名。一开始先不要启用预加载指令,因为该设置一旦启用,撤销起来会很慢。

常见问题

如何在 PrestaShop 中启用 SSL?

先在服务器上安装证书,然后在后台打开店铺参数 > 常规,点击检查商店是否支持 HTTPS 的链接,将启用 SSL设为“是”,将在所有页面启用 SSL设为“是”,并在页面底部点击保存。PrestaShop 本身不签发证书。

为什么 PrestaShop 中的启用 SSL 按钮是灰色不可用状态?

首先确认开关是灰色不可用状态还是完全没有显示。如果启用 SSL没有出现,说明你正在通过普通 HTTP 查看后台,而 PrestaShop 只在安全连接下显示该开关,所以请通过 https:// 地址重新加载后台。如果在所有页面启用 SSL呈灰色不可用状态,按可能性从高到低排列,有三个原因。你还没有滚动到底部并保存,所以第二个设置还没有解锁。或者 PrestaShop 的 HTTPS 检测失败,因为证书缺失、没有覆盖你正在使用的域名,或者安装时没有附带中间证书。或者设置卡住了,这种情况下你可以直接在ps_configuration表中将PS_SSL_ENABLEDPS_SSL_ENABLED_EVERYWHERE设为 1。

启用 SSL 和在所有页面启用 SSL 有什么区别?

启用 SSL只保护结账页面和客户账户页面,这是商店其他部分都通过 HTTP 提供服务时的标准做法。在所有页面启用 SSL会保护整个商店。第二个选项在第一个被启用并保存之前无法使用。在任何现代商店中,你都应该同时启用这两项。

PrestaShop 中的 SSL 设置在哪里?

在后台的店铺参数 > 常规中。针对 PrestaShop 1.6 编写的旧教程将同一个界面称为偏好设置 > 常规,因为该菜单在 1.7 版本中被重命名了。

如何在 PrestaShop 中禁用 SSL?

店铺参数 > 常规中将两个开关都设回“否”并保存。如果损坏的证书已将你锁在后台之外,请执行上文所示的两条ps_configuration语句,将其中的 1 改为 0,然后清除缓存。关闭 SSL 只是修复证书期间的临时措施,并不是最终解决方案:没有 HTTPS,支付网关是无法正常工作的。

PrestaShop 商店需要付费 SSL 证书吗?

严格来说不需要。免费的域名验证证书在加密结账流程方面与付费证书效果完全相同,也能满足支付网关的要求。付费证书额外提供的是:证书出现问题时的赔偿保修,用于结账页面的站点信任标志,通过 OV 或 EV 验证并写入证书的公司信息,以及在你跨子域名运行多店铺时更便捷的通配符覆盖。

这些步骤适用于哪些 PrestaShop 版本?

适用于 PrestaShop 8 和 PrestaShop 9,截至 2026 年 6 月,当前版本为 9.1.4 和 8.2.7。PrestaShop 1.7 在同一位置使用相同的设置项,但自 PrestaShop 9.0 于 2025 年 6 月发布后,1.7 版本已不再获得维护。PrestaShop 1.6 将该界面称为“偏好设置 > 常规”,而不是“店铺参数 > 常规”。

正在将其他平台迁移到 HTTPS,或者想了解通用的操作流程?请参阅我们关于如何将网站从 HTTP 切换到 HTTPS的指南。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.