# 域名 DNS 與 HTTPS 原理

::: tip 前言
**當你在瀏覽器輸入 `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 加密，確保資料在傳輸過程中的機密性和完整性。

::: tip 一次完整的網頁存取
1. **域名解析**：瀏覽器問 DNS「www.google.com 的 IP 是多少？」，DNS 回答「142.250.80.46」
2. **TCP 連線**：瀏覽器與伺服器建立 TCP 三次交握
3. **TLS 交握**：雙方協商加密演算法、驗證憑證、交換金鑰
4. **加密通訊**：所有 HTTP 資料透過加密通道傳輸
:::

---

## 1. DNS 解析：網際網路的「電話簿」

DNS（Domain Name System）的工作原理就像查電話簿：你知道對方的名字（域名），需要查到對方的電話號碼（IP 位址）。但網際網路的「電話簿」不是一本，而是一個分層的分散式系統。

<DnsResolutionDemo />

::: tip DNS 解析的四個步驟
1. **瀏覽器快取**：先查本機快取，如果之前存取過這個域名，直接用快取的 IP
2. **遞迴解析器**：快取沒命中，請求發給 ISP 的遞迴解析器（如 8.8.8.8）
3. **逐級查詢**：遞迴解析器依次詢問根域名伺服器 → 頂級域伺服器（.com）→ 權威域名伺服器（google.com）
4. **回傳結果**：權威伺服器回傳最終 IP，遞迴解析器快取結果並回傳給瀏覽器
:::

| 層級 | 伺服器 | 職責 | 數量 |
|------|-------|------|------|
| 根域 | Root Server | 知道所有頂級域的位址 | 全球 13 組 |
| 頂級域 | TLD Server | 管理 .com、.cn、.org 等 | 每個後綴一組 |
| 權威域 | Authoritative | 儲存具體域名的 DNS 記錄 | 每個域名至少 2 個 |
| 遞迴解析器 | Resolver | 代替使用者完成整個查詢過程 | ISP 或公共 DNS |

---

## 2. DNS 記錄類型：域名背後的「設定表」

DNS 不只是把域名翻譯成 IP。透過不同類型的 DNS 記錄，你可以控制郵件投遞、域名跳轉、服務發現等多種行為。理解這些記錄類型，是設定域名和排查網路問題的基礎。

<DnsRecordTypeDemo />

| 記錄類型 | 用途 | 範例 |
|---------|------|------|
| 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` |

::: tip 實際場景中的 DNS 設定
- **部署網站**：添加 A 記錄指向伺服器 IP，或 CNAME 指向 CDN 域名
- **設定郵箱**：添加 MX 記錄指向郵件伺服器，TXT 記錄設定 SPF/DKIM 防垃圾郵件
- **驗證域名所有權**：雲服務商要求你添加特定 TXT 記錄來證明你擁有這個域名
- **負載均衡**：同一域名設定多條 A 記錄，DNS 輪詢分發流量
:::

---

## 3. HTTPS 與 TLS：給資料穿上「防彈衣」

HTTP 協定的資料是明文傳輸的——就像寄明信片，郵遞員（中間人）可以隨意閱讀內容。HTTPS 在 HTTP 之上加了一層 TLS（Transport Layer Security）加密，相當於把明信片裝進了密封信封。

TLS 交握是建立安全連線的關鍵步驟，它在正式傳輸資料之前，完成身份驗證和金鑰協商。

<HttpsHandshakeDemo />

::: tip TLS 1.3 交握的核心步驟
1. **Client Hello**：用戶端傳送支援的加密演算法清單和一個隨機數
2. **Server Hello**：伺服器選擇加密演算法，回傳數位憑證和隨機數
3. **憑證驗證**：用戶端驗證伺服器憑證是否可信（檢查 CA 簽章、有效期、域名匹配）
4. **金鑰交換**：雙方透過 ECDHE 演算法協商出一個共享金鑰（不在網路上傳輸金鑰本身）
5. **加密通訊**：後續所有資料使用協商好的對稱金鑰加密傳輸
:::

| 特性 | TLS 1.2 | TLS 1.3 |
|------|---------|---------|
| 交握手往返次數 | 2-RTT | 1-RTT（首次）/ 0-RTT（恢復） |
| 金鑰交換 | RSA 或 ECDHE | 僅 ECDHE（前向安全） |
| 加密演算法 | 支援較多舊演算法 | 僅保留安全演算法 |
| 效能 | 較慢 | 更快 |

---

## 4. 憑證信任鏈：相信這個網站的信任基礎

TLS 交握中最關鍵的一步是「憑證驗證」。瀏覽器怎麼判斷一個網站的憑證是真的，而不是攻擊者偽造的？答案是**憑證信任鏈**——一個層層背書的信任體系。

<CertificateChainDemo />

::: tip 憑證信任鏈的三層結構
1. **根憑證（Root CA）**：由受信任的憑證頒發機構簽發，預裝在作業系統和瀏覽器中。這是信任的「錨點」。
2. **中間憑證（Intermediate CA）**：由根 CA 簽發，用於簽發終端憑證。根 CA 不直接簽發網站憑證，是為了安全隔離。
3. **終端憑證（Leaf Certificate）**：你的網站實際使用的憑證，由中間 CA 簽發，包含域名、公鑰、有效期等資訊。
:::

| 憑證類型 | 驗證級別 | 頒發速度 | 適用場景 |
|---------|---------|---------|---------|
| DV（域名驗證） | 僅驗證域名所有權 | 分鐘級 | 個人網站、部落格 |
| OV（組織驗證） | 驗證組織身份 | 數天 | 企業官網 |
| EV（延伸驗證） | 嚴格驗證組織 | 數週 | 銀行、金融機構 |
| 萬用字元憑證 | 覆蓋所有子域名 | 視類型而定 | 多子域名場景 |

---

## 5. HTTP vs HTTPS：加密是底線的動機

2024 年，全球超過 95% 的網頁流量已經透過 HTTPS 傳輸。Chrome 瀏覽器會對 HTTP 網站標記「不安全」警告，搜尋引擎也會降低 HTTP 網站的排名。HTTPS 不再是「可選項」，而是現代 Web 的底線要求。

<DnsHttpsComparisonDemo />

| 維度 | HTTP | HTTPS |
|------|------|-------|
| 資料傳輸 | 明文，可被竊聽 | 加密，無法被竊聽 |
| 身份驗證 | 無，無法確認伺服器身份 | 有，透過憑證驗證伺服器 |
| 資料完整性 | 無保護，可被竄改 | 有保護，竄改會被偵測 |
| 連接埠 | 80 | 443 |
| SEO 影響 | 搜尋排名降低 | 搜尋排名加分 |
| 瀏覽器表現 | 顯示「不安全」警告 | 顯示鎖圖示 |

::: tip 免費取得 HTTPS 憑證
**Let's Encrypt** 是一個免費、自動化的憑證頒發機構，讓任何網站都能零成本啟用 HTTPS。搭配 Certbot 工具，可以一鍵申請和自動續期憑證。大多數雲平台和 CDN 服務商也提供免費的 SSL 憑證。
:::

---

## 總結

域名、DNS 和 HTTPS 是網際網路基礎設施的三大支柱。DNS 讓我們用人類可讀的名字存取網站，HTTPS 確保通訊過程安全可信。

回顧本章的關鍵要點：

1. **DNS 是分層系統**：根域 → 頂級域 → 權威域，逐級查詢，快取加速
2. **記錄類型各有用途**：A 記錄指向 IP，CNAME 做別名，MX 管郵件，TXT 做驗證
3. **TLS 交握建立信任**：憑證驗證 + 金鑰協商，TLS 1.3 只需 1-RTT
4. **憑證信任鏈**：根 CA → 中間 CA → 終端憑證，層層背書
5. **HTTPS 是底線**：免費憑證（Let's Encrypt）讓加密零門檻

## 延伸閱讀

- [How DNS Works](https://howdns.works/) - 漫畫形式講解 DNS 工作原理
- [Let's Encrypt 文件](https://letsencrypt.org/docs/) - 免費 SSL 憑證申請指南
- [Cloudflare Learning Center](https://www.cloudflare.com/learning/dns/what-is-dns/) - DNS 和網路安全系統教學
- [TLS 1.3 RFC 8446](https://datatracker.ietf.org/doc/html/rfc8446) - TLS 1.3 協定規範
- [SSL Labs](https://www.ssllabs.com/ssltest/) - 線上偵測網站 HTTPS 設定品質
