什麼是 HTTPS 與 SSL?白話解說安全網站如何運作
HTTPS 是 HTTP 的安全版本,而 HTTP 是瀏覽器與網站溝通所使用的通訊協定。它會使用 TLS(傳輸層安全協定,Transport Layer Security),把每一次請求與回應都包在加密的連線中,讓訪客與網站之間的任何人都無法讀取或竄改傳送的內容。SSL 是同一概念的舊名稱,也就是 TLS 所取代的原始協定,這也是大家仍習慣說「SSL 憑證」的原因。
用 AI 製作 App 時為什麼需要 HTTPS
你發佈的任何 App 都應該透過 HTTPS 提供服務。這不只是良好的做法:
- 瀏覽器會要求。 使用純 HTTP 的網站會被標示為「不安全」,而某些瀏覽器功能(例如位置存取、相機與麥克風,以及供離線 App 使用的 Service Worker)通常只能在安全的(HTTPS)頁面上運作。
- 登入與表單。 沒有 HTTPS,密碼、工作階段 Cookie 與表單資料都會以可讀取的文字傳輸。同一個咖啡廳 Wi-Fi 上的人都有可能擷取到它們。
- 付款與第三方服務。 金流服務、OAuth 登入與許多 API 都要求使用 HTTPS 的重新導向與回呼網址。
- 信任與搜尋。 訪客會注意到警告,而 Google 也曾表示會把 HTTPS 列為排名訊號。
好消息是,在大多數現代託管平台上,HTTPS 都會自動設定。你真正需要的,是把其中的各個部分理解到足以在自訂網域或混合內容警告出錯時修正的程度。
日常比喻
以純 HTTP 傳送資料,就像寄一張明信片:每個經手的郵務人員都能讀取內容,甚至可以改寫訊息。
HTTPS 則像是寄出一個密封、可防竄改的信封,而且在寄出前先確認收件人的官方身分證件。憑證就是那張身分證,由值得信任的權威機構(即憑證機構)核發,證明網站確實掌控該網域。加密則是那個密封的信封,身分證證明你寫信的地址沒錯,信封則讓內容保持私密。
HTTPS 運作方式簡述
當瀏覽器開啟 https://shop.example.com 時:
- 打招呼。 瀏覽器連線並告知它支援哪些加密方法。
- 憑證。 伺服器傳回它的憑證,上面寫著「這把金鑰屬於
shop.example.com」,並由憑證機構簽署。 - 檢查。 瀏覽器用它已信任的機構驗證簽章、確認憑證尚未過期,並檢查網域是否相符。
- 金鑰。 瀏覽器與伺服器為這次工作階段協商出一把全新的秘密金鑰,而且從不以明文傳送。
- 加密的對話。 之後所有請求與回應(頁面、表單資料、Cookie)都以加密方式傳輸。
這個 TLS 交握 只需要幾毫秒,而且會自動完成。訪客看到的只是鎖頭圖示(或在某些瀏覽器中,是一個中性的網站資訊圖示)。
HTTPS 保護什麼,又不保護什麼
| 會保護 | 不會保護 |
|---|---|
| 瀏覽器與伺服器之間傳輸中的資料 | 資料一旦存在你的伺服器或資料庫中之後的安全 |
| 防止公共 Wi-Fi 上的竊聽 | 惡意或詐騙網站 |
| 防止途中有人改寫頁面 | 你 App 本身的錯誤,例如缺少權限檢查 |
| 傳送過程中的 Cookie 與密碼 | 弱密碼或外洩的 API 金鑰 |
HTTPS 會加密請求的內容,包括頁面路徑與查詢字串。但你造訪的網域名稱通常仍會被途經的網路看見。這也是為什麼絕對不要把個人資料放在網址中的原因之一,因為網址同樣會出現在紀錄與瀏覽器歷史中。
實際範例:連結自訂網域
假設你發佈了一個預約 App,並希望它位於 book.myyogastudio.com:
- 你新增一筆 DNS 紀錄,把
book.myyogastudio.com指向你的主機。請參閱網域與 DNS 如何運作。 - 主機向憑證機構證明它掌控該名稱,通常是透過回應該網域上的一項挑戰,然後取得憑證。
- 主機會自動安裝並在憑證到期前續期。憑證刻意設計為短效期,因此自動續期非常重要。
- 造訪
http://book.myyogastudio.com的訪客會被重新導向到https://。
如果第 1 步出錯,例如紀錄指向其他地方,或中間有代理伺服器,第 2 步就可能失敗,訪客會看到憑證錯誤。這是人們連結自訂網域時最常遇到的 HTTPS 問題。
關鍵術語
| 術語 | 意義 |
|---|---|
| TLS | 傳輸層安全協定,是 HTTPS 背後的加密協定。 |
| SSL | 安全通訊端層,是 TLS 過時的前身。這個名稱仍被沿用。 |
| 憑證(Certificate) | 一個經過簽署的檔案,把網域與公開金鑰連結在一起。 |
| 憑證機構(CA) | 瀏覽器信任、負責核發憑證的組織,例如 Let's Encrypt。 |
| 網域驗證(DV) | 證明你掌控網域的憑證,幾乎所有網站都使用這種。 |
| 萬用字元憑證(Wildcard) | 涵蓋一層深度的所有子網域,例如 *.example.com。 |
| 混合內容(Mixed content) | 一個 HTTPS 頁面以純 HTTP 載入部分資源。瀏覽器會阻擋或發出警告。 |
| HSTS | 一個標頭,告訴瀏覽器今後都必須使用 HTTPS 存取你的網站。 |
| 連接埠 443 | HTTPS 的標準連接埠(HTTP 使用連接埠 80)。 |
常見迷思
- 「有鎖頭就代表網站值得信任。」 它只代表連線是私密的,而且網域相符。詐騙者也能取得憑證。
- 「只有付款頁面需要 HTTPS。」 任何有登入、表單或 Cookie 的頁面都需要它,而這幾乎是每個 App。直接全站使用即可。
- 「憑證很貴。」 免費且受信任的憑證已是標準,大多數主機都會替你管理。
- 「用了 HTTPS,我的 App 就安全了。」 它只保護連線。你的 App 仍需要伺服器端的權限檢查、妥善處理機密,以及輸入驗證。請參閱 AI 製作 App 安全檢查清單。
- 「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:// 載入圖片或指令碼(混合內容)。