域名、DNS 與 HTTPS
前言
當你在瀏覽器輸入 www.google.com 並按下 Enter,背後發生了什麼? 這個看似簡單的動作,背後涉及域名解析、DNS 查詢、TLS 加密交握等一系列精密的協作過程。理解這些機制,是每個開發者的必修課——它直接關係到你的網站能不能被存取、資料會不會被竊取。
這篇文章會帶你學什麼?
學完這章後,你將獲得:
- DNS 原理:理解域名如何被翻譯成 IP 位址的完整過程
- 記錄類型:掌握 A、CNAME、MX 等常見 DNS 記錄的用途
- HTTPS 機制:理解 TLS 交握如何建立安全連線
- 憑證體系:了解數位憑證的信任鏈和驗證機制
- 安全意識:明白為什麼 HTTPS 是現代 Web 的底線要求
| 章節 | 內容 | 核心概念 |
|---|---|---|
| 第 1 章 | DNS 解析 | 遞迴查詢、迭代查詢 |
| 第 2 章 | DNS 記錄 | A、CNAME、MX、TXT |
| 第 3 章 | HTTPS 與 TLS | 交握過程、加密通訊 |
| 第 4 章 | 憑證信任鏈 | CA、根憑證、中間憑證 |
| 第 5 章 | HTTP vs HTTPS | 明文 vs 加密、安全對比 |
0. 全景圖:從域名到安全連線
網際網路的通訊基於 IP 位址(如 142.250.80.46),但人類記不住這些數字。於是我們發明了域名系統(DNS)——網際網路的「電話簿」,把人類可讀的域名翻譯成機器可讀的 IP 位址。
但光能找到伺服器還不夠。如果通訊內容是明文傳輸的,任何中間人都能竊聽、竄改你的資料。HTTPS 就是解決這個問題的——它在 HTTP 之上加了一層 TLS 加密,確保資料在傳輸過程中的機密性和完整性。
一次完整的網頁存取
- 域名解析:瀏覽器問 DNS「www.google.com 的 IP 是多少?」,DNS 回答「142.250.80.46」
- TCP 連線:瀏覽器與伺服器建立 TCP 三次交握
- TLS 交握:雙方協商加密演算法、驗證憑證、交換金鑰
- 加密通訊:所有 HTTP 資料透過加密通道傳輸
1. DNS 解析:網際網路的「電話簿」
DNS(Domain Name System)的工作原理就像查電話簿:你知道對方的名字(域名),需要查到對方的電話號碼(IP 位址)。但網際網路的「電話簿」不是一本,而是一個分層的分散式系統。
🔍 DNS Resolution Simulator
DNS 解析的四個步驟
- 瀏覽器快取:先查本機快取,如果之前存取過這個域名,直接用快取的 IP
- 遞迴解析器:快取沒命中,請求發給 ISP 的遞迴解析器(如 8.8.8.8)
- 逐級查詢:遞迴解析器依次詢問根域名伺服器 → 頂級域伺服器(.com)→ 權威域名伺服器(google.com)
- 回傳結果:權威伺服器回傳最終 IP,遞迴解析器快取結果並回傳給瀏覽器
| 層級 | 伺服器 | 職責 | 數量 |
|---|---|---|---|
| 根域 | Root Server | 知道所有頂級域的位址 | 全球 13 組 |
| 頂級域 | TLD Server | 管理 .com、.cn、.org 等 | 每個後綴一組 |
| 權威域 | Authoritative | 儲存具體域名的 DNS 記錄 | 每個域名至少 2 個 |
| 遞迴解析器 | Resolver | 代替使用者完成整個查詢過程 | ISP 或公共 DNS |
2. DNS 記錄類型:域名背後的「設定表」
DNS 不只是把域名翻譯成 IP。透過不同類型的 DNS 記錄,你可以控制郵件投遞、域名跳轉、服務發現等多種行為。理解這些記錄類型,是設定域名和排查網路問題的基礎。
📋 DNS Record Type Cheatsheet
Maps a domain name to an IPv4 address. This is the most common DNS record type and is ultimately what browsers need when visiting a site.
example.com. IN A 93.184.216.34- Point a website domain to a server IP
- Point subdomains to different servers
- Return multiple IPs for load balancing
| 記錄類型 | 用途 | 範例 |
|---|---|---|
| A | 域名 → IPv4 位址 | example.com → 93.184.216.34 |
| AAAA | 域名 → IPv6 位址 | example.com → 2606:2800:220:1:... |
| CNAME | 域名 → 另一個域名(別名) | www.example.com → example.com |
| MX | 指定郵件伺服器 | example.com → mail.example.com |
| TXT | 儲存文字資訊 | SPF 驗證、域名所有權驗證 |
| NS | 指定權威域名伺服器 | example.com → ns1.example.com |
實際場景中的 DNS 設定
- 部署網站:添加 A 記錄指向伺服器 IP,或 CNAME 指向 CDN 域名
- 設定郵箱:添加 MX 記錄指向郵件伺服器,TXT 記錄設定 SPF/DKIM 防垃圾郵件
- 驗證域名所有權:雲服務商要求你添加特定 TXT 記錄來證明你擁有這個域名
- 負載均衡:同一域名設定多條 A 記錄,DNS 輪詢分發流量
3. HTTPS 與 TLS:給資料穿上「防彈衣」
HTTP 協定的資料是明文傳輸的——就像寄明信片,郵遞員(中間人)可以隨意閱讀內容。HTTPS 在 HTTP 之上加了一層 TLS(Transport Layer Security)加密,相當於把明信片裝進了密封信封。
TLS 交握是建立安全連線的關鍵步驟,它在正式傳輸資料之前,完成身份驗證和金鑰協商。
🤝 TLS Handshake Demo
TLS 1.3 交握的核心步驟
- Client Hello:用戶端傳送支援的加密演算法清單和一個隨機數
- Server Hello:伺服器選擇加密演算法,回傳數位憑證和隨機數
- 憑證驗證:用戶端驗證伺服器憑證是否可信(檢查 CA 簽章、有效期、域名匹配)
- 金鑰交換:雙方透過 ECDHE 演算法協商出一個共享金鑰(不在網路上傳輸金鑰本身)
- 加密通訊:後續所有資料使用協商好的對稱金鑰加密傳輸
| 特性 | TLS 1.2 | TLS 1.3 |
|---|---|---|
| 交握手往返次數 | 2-RTT | 1-RTT(首次)/ 0-RTT(恢復) |
| 金鑰交換 | RSA 或 ECDHE | 僅 ECDHE(前向安全) |
| 加密演算法 | 支援較多舊演算法 | 僅保留安全演算法 |
| 效能 | 較慢 | 更快 |
4. 憑證信任鏈:憑什麼相信這個網站?
TLS 交握中最關鍵的一步是「憑證驗證」。瀏覽器怎麼判斷一個網站的憑證是真的,而不是攻擊者偽造的?答案是憑證信任鏈——一個層層背書的信任體系。
🔗 Certificate Trust Chain
Click each certificate layer to inspect its details and role in the trust chain.
憑證信任鏈的三層結構
- 根憑證(Root CA):由受信任的憑證頒發機構簽發,預裝在作業系統和瀏覽器中。這是信任的「錨點」。
- 中間憑證(Intermediate CA):由根 CA 簽發,用於簽發終端憑證。根 CA 不直接簽發網站憑證,是為了安全隔離。
- 終端憑證(Leaf Certificate):你的網站實際使用的憑證,由中間 CA 簽發,包含域名、公鑰、有效期等資訊。
| 憑證類型 | 驗證級別 | 頒發速度 | 適用場景 |
|---|---|---|---|
| DV(域名驗證) | 僅驗證域名所有權 | 分鐘級 | 個人網站、部落格 |
| OV(組織驗證) | 驗證組織身份 | 數天 | 企業官網 |
| EV(延伸驗證) | 嚴格驗證組織 | 數週 | 銀行、金融機構 |
| 萬用字元憑證 | 覆蓋所有子域名 | 視類型而定 | 多子域名場景 |
5. HTTP vs HTTPS:為什麼加密是底線?
2024 年,全球超過 95% 的網頁流量已經透過 HTTPS 傳輸。Chrome 瀏覽器會對 HTTP 網站標記「不安全」警告,搜尋引擎也會降低 HTTP 網站的排名。HTTPS 不再是「可選項」,而是現代 Web 的底線要求。
🔐 HTTP vs HTTPS Data Transfer
password=MySecret123&user=zhangsan| Item | HTTP | HTTPS |
|---|---|---|
| Port | 80 | 443 |
| Data encryption | None (plaintext) | TLS symmetric encryption |
| Identity verification | None | CA certificate verifies server identity |
| Data integrity | No guarantee | MAC check prevents tampering |
| SEO impact | Search engines may rank it lower | Preferred by search engines |
| Performance cost | No extra overhead | TLS handshake adds about 1-2 RTT |
| 維度 | HTTP | HTTPS |
|---|---|---|
| 資料傳輸 | 明文,可被竊聽 | 加密,無法被竊聽 |
| 身份驗證 | 無,無法確認伺服器身份 | 有,透過憑證驗證伺服器 |
| 資料完整性 | 無保護,可被竄改 | 有保護,竄改會被偵測 |
| 連接埠 | 80 | 443 |
| SEO 影響 | 搜尋排名降低 | 搜尋排名加分 |
| 瀏覽器表現 | 顯示「不安全」警告 | 顯示鎖圖示 |
免費取得 HTTPS 憑證
Let's Encrypt 是一個免費、自動化的憑證頒發機構,讓任何網站都能零成本啟用 HTTPS。搭配 Certbot 工具,可以一鍵申請和自動續期憑證。大多數雲平台和 CDN 服務商也提供免費的 SSL 憑證。
總結
域名、DNS 和 HTTPS 是網際網路基礎設施的三大支柱。DNS 讓我們用人類可讀的名字存取網站,HTTPS 確保通訊過程安全可信。
回顧本章的關鍵要點:
- DNS 是分層系統:根域 → 頂級域 → 權威域,逐級查詢,快取加速
- 記錄類型各有用途:A 記錄指向 IP,CNAME 做別名,MX 管郵件,TXT 做驗證
- TLS 交握建立信任:憑證驗證 + 金鑰協商,TLS 1.3 只需 1-RTT
- 憑證信任鏈:根 CA → 中間 CA → 終端憑證,層層背書
- HTTPS 是底線:免費憑證(Let's Encrypt)讓加密零門檻
延伸閱讀
- How DNS Works - 漫畫形式講解 DNS 工作原理
- Let's Encrypt 文件 - 免費 SSL 憑證申請指南
- Cloudflare Learning Center - DNS 和網路安全系統教學
- TLS 1.3 RFC 8446 - TLS 1.3 協定規範
- SSL Labs - 線上偵測網站 HTTPS 設定品質