指南

什么是 HTTPS 和 SSL?安全网站如何工作,通俗讲解

HTTPS 是 HTTP 的安全版本,而 HTTP 是浏览器与网站通信所用的协议。它使用 TLS(传输层安全协议)把每一次请求和响应都包裹在加密连接中,因此访问者与网站之间的任何人都无法读取或篡改所传输的内容。SSL 是同一理念的旧称,即 TLS 所取代的原始协议,这也是人们仍然说“SSL 证书”的原因。

用 AI 构建时为什么需要 HTTPS

任何你发布的应用都应当通过 HTTPS 提供服务。这不仅是良好的做法:

  • 浏览器要求它。 使用明文 HTTP 的网站会被标记为“不安全”,而且一些浏览器功能,例如位置信息访问、摄像头和麦克风,以及用于离线应用的 Service Worker,通常只能在安全的(HTTPS)页面上工作。
  • 登录与表单。 没有 HTTPS,密码、会话 Cookie 和表单数据都会以可读文本的形式传输。同一个咖啡馆 Wi-Fi 上的人都有可能截获它们。
  • 支付与第三方服务。 支付服务商、OAuth 登录以及许多 API 都要求使用 HTTPS 的重定向和回调地址。
  • 信任与搜索。 访问者会注意到警告,而且谷歌已表示会把 HTTPS 作为排名信号。

好消息是,在大多数现代托管平台上,HTTPS 都是自动配置的。你主要需要理解其中的各个组成部分,以便在自定义域名或混合内容警告出问题时能够修复。

一个日常类比

通过明文 HTTP 发送数据,就像寄一张明信片:经手的每位邮递员都能读到内容,甚至有人可以改写信息。

HTTPS 则像寄出一个密封且防篡改的信封,并且先核对收件人的官方身份证件。证书就是这张身份证件,由受信任的机构(即证书颁发机构)签发,该机构已核实网站确实控制着这个域名。加密则是那个密封的信封。身份证件证明你写信的地址是正确的;信封则保证内容的私密性。

HTTPS 如何工作(简要说明)

当浏览器打开 https://shop.example.com 时:

  1. 打招呼。 浏览器连接服务器,并告知自己支持哪些加密方法。
  2. 证书。 服务器发送它的证书,证书声明“此密钥属于 shop.example.com”,并由证书颁发机构签名。
  3. 核验。 浏览器用它已信任的颁发机构核对签名,检查证书是否已过期,并确认域名相符。
  4. 密钥。 浏览器与服务器为本次会话商定一把全新的密钥,且从未在明文中传送它。
  5. 加密通信。 所有请求和响应(页面、表单数据、Cookie)现在都以加密形式传输。

这个 TLS 握手 只需几毫秒,并且自动完成。访问者只会看到小锁图标(或在某些浏览器中是中性的网站信息图标)。

HTTPS 保护什么,不保护什么

能保护的不能保护的
浏览器与服务器之间传输中的数据数据一旦到达你的服务器或数据库之后
防止公共 Wi-Fi 上的窃听防止恶意或诈骗网站
防止途中有人篡改页面防止你的应用中的错误,例如缺失的权限检查
传输过程中的 Cookie 和密码防止弱密码或泄露的 API 密钥

HTTPS 加密的是请求的内容,包括页面路径和查询字符串。但你访问的域名通常对沿途的网络仍然可见。这也是为什么无论如何都不要在网址中放入个人数据的原因之一:网址同样会进入日志和浏览器历史记录。

实例:连接自定义域名

假设你发布了一个预约应用,想把它放在 book.myyogastudio.com 上:

  1. 你添加一条 DNS 记录,将 book.myyogastudio.com 指向你的主机。参见域名与 DNS 如何工作。
  2. 主机向证书颁发机构证明它控制着该域名,通常是通过在该域名上响应一个验证挑战,然后获得证书。
  3. 主机安装证书,并在证书过期前自动续期。证书的有效期刻意设计得很短,因此自动续期非常重要。
  4. 访问 http://book.myyogastudio.com 的访问者会被重定向到 https://。

如果第 1 步出错,例如记录指向了别处,或者中间有代理,第 2 步就可能失败,访问者会看到证书错误。这是人们连接自定义域名时最常遇到的 HTTPS 问题。

关键术语

术语含义
TLS传输层安全协议,即 HTTPS 背后的加密协议。
SSL安全套接层,是 TLS 已过时的前身。这个名称仍在沿用。
证书(Certificate)一个经过签名的文件,将域名与公钥关联起来。
证书颁发机构(CA)浏览器信任、用于签发证书的机构,例如 Let's Encrypt。
域名验证(DV)证明你控制该域名的证书,几乎所有网站都使用这种证书。
通配符证书覆盖一级子域名,例如 *.example.com。
混合内容一个 HTTPS 页面通过明文 HTTP 加载了部分资源。浏览器会阻止或警告这种情况。
HSTS一个响应头,告诉浏览器从此以后始终使用 HTTPS 访问你的网站。
443 端口HTTPS 的标准端口(HTTP 使用 80 端口)。

常见误解

  • “小锁图标代表网站值得信任。” 它只表示连接是私密的,且域名相符。诈骗者同样能获得证书。
  • “只有支付页面才需要 HTTPS。” 任何带有登录、表单或 Cookie 的页面都需要它,而这几乎是每个应用的情况。直接在所有页面上使用就好。
  • “证书很贵。” 免费且受信任的证书是标准配置,大多数主机都会替你管理。
  • “HTTPS 能让我的应用安全。” 它只保护连接本身。你的应用仍然需要服务端的权限检查、妥善的密钥管理和输入验证。参见AI 构建应用的安全清单。
  • “HTTPS 会让网站变慢。” 现代 TLS 带来的开销很小,而且像 HTTP/2 这类能让网站更快的功能,通常在浏览器中要求使用 HTTPS。

解决常见的 HTTPS 问题

症状可能的原因
“您的连接不是私密连接”证书不覆盖该确切域名、已过期,或尚未签发
www. 可以访问,但裸域名不行(或反过来)只有一个名称配置了 DNS 和证书
小锁消失,部分页面显示“不安全”混合内容:图片、脚本或字体通过 http:// 加载
连接域名后立即出现证书错误DNS 仍在生效中,或前面的代理阻止了证书验证

向 AI 构建器提出的请求

  • “确保每张图片、每个脚本和每种字体都通过 HTTPS 或相对地址加载,不要使用 http:// 链接。”
  • “把所有 HTTP 流量重定向到 HTTPS。”
  • “为会话 Cookie 设置 Secure 和 HttpOnly 标志。”
  • “所有 OAuth、支付和 Webhook 回调地址都使用 https://。”
  • “我的自定义域名显示证书错误,主机期望的是哪条 DNS 记录?”

Mythex 中的 HTTPS

在 Mythex 上连接自定义域名(Pro 功能)时,你需要添加一条 CNAME 记录,指向 Mythex 显示给你的 slug.mythex.ai 目标地址,然后点击 验证(Verify),Mythex 会自动为该域名签发 HTTPS。文档中说明了两个最常见的问题:如果你的 DNS 托管在 Cloudflare 上,请把记录设置为“仅 DNS”(灰色云朵),而不是代理模式,这样 Mythex 才能签发证书;另外,DNS 可能在 HTTPS 完全配置好之前就通过验证,因此请等待几分钟后再次验证。参见文档中的自定义域名,以及我们关于连接自定义域名的指南。

常见问题

HTTP 和 HTTPS 有什么区别?

HTTP 在浏览器和网站之间以可读的文本形式传输数据。HTTPS 则是通过加密的 TLS 连接传输的 HTTP,因此同一网络上或传输路径上的人无法读取或篡改所发送的内容,浏览器也能确认自己连接的是真正的网站。

SSL 和 TLS 是同一回事吗?

TLS 是 SSL 的现代继任者。所有版本的 SSL 都已过时且不安全,如今安全的网站都使用 TLS。人们出于习惯仍然说“SSL 证书”,但这些证书实际上是与 TLS 配合使用的。

小锁图标代表网站是安全的吗?

不代表。小锁图标表示连接已加密,并且证书与域名相符。诈骗网站同样可以拥有有效证书。它只能说明没有人能窥探这段连接,并不能说明网站所有者是值得信任的。

SSL 证书需要付费吗?

通常不需要。Let's Encrypt 等免费的自动化证书颁发机构所签发的证书,是浏览器信任的;大多数托管平台会为你获取并续期证书。付费证书主要增加的是技术支持或额外的身份验证。

为什么我的网站显示“不安全”?

常见原因包括:通过 http:// 而不是 https:// 访问网站;证书已过期,或不覆盖该确切域名;页面通过明文 http:// 加载图片或脚本(混合内容)。

Mythex · Pricing · 用 AI 构建任何东西 · 网站和应用模板 · Mythex 对比 · AI 应用构建术语表 · 免费的 AI 应用构建工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 繁體中文(香港) 繁體中文(台灣)