前言
用途:加速網站存取速度、提高安全性,並防止網路威脅,如 DDoS 攻擊,提升網站表現與穩定性。
在目前的網路環境中,網站安全性和存取速度已成為不可或缺的關鍵要素,SSL 憑證不僅能確保資料傳輸的安全性,更是建立使用者信任的基礎,而 CDN 服務則能大幅提升網站的存取速度和穩定性,Cloudflare 作為業界領先的網路服務供應商,提供了免費的 SSL 憑證和 CDN 服務,讓網站管理者無需投入大量資源,就能享有企業級的安全防護和效能優化方案。
本教學將介紹如何透過 Cloudflare 啟用 SSL 憑證,實現 HTTPS 安全連線,並善用其全球 CDN 網路,為您的網站打造安全且高效能的存取環境。
註冊專屬域名
請參閱下列教學說明:
🔗自建免費域名(US.KG)、託管和實做 Cloudflare DDNS – 教學
🔗Cloudflare 付費網域購買、託管和透過 API 實做 DDNS – 教學
託管到 Cloudflare
- 進入 Cloudflare 官網,點選右上角「登入」
- 點選左側的「網站」,輸入 US.KG 免費域名:bugtest.us.kg,點選「快速掃描 DNS 記錄」,再點選「繼續」
- 點選「免費」方案,再點選「繼續」
- 點選「繼續以啟用」
- 點選「確認」
- 複製下方的 Cloudflare 名稱伺服器(兩個),再點選下方的「繼續」
junade.ns.cloudflare.com
norah.ns.cloudflare.com
- 貼到網域供應商「Name Server」(名稱伺服器) 的設定欄位
Cloudflare 設定檢查
- 點選左側的「網站」,再點選右側的域名
- 上方域名的狀態顯示「使用中」,表示已經成功將您的域名託管到 Cloudflare
- 將右邊的功能下拉到底下,點選「從 Cloudflare 中移除」可以刪除已託管的域名
- 點選「移除」會刪除已託管的域名
Cloudflare DNS 是否要開啟 Proxy 呢?
「Cloudflare DNS 設定」是否需要開啟 Proxy(雲端代理)取決於您的需求:
開啟 Proxy:
-
- 如果您希望 Cloudflare 給您提供 CDN、網站加速、SSL 和 DDoS 防護,則需要開啟 Proxy。
- 此時,Cloudflare 會代理您的網站,並管理 SSL 和安全性。
- Nginx 和 Cloudflare 之間的 HTTP/HTTPS 通訊會經過 Cloudflare 的 CDN 中轉。
- 如果您的網站使用了 Cloudflare 的憑證和 SSL 設定,開啟 Proxy 是必要的。
關閉 Proxy:
-
- 如果不開啟 Proxy,您將無法使用 Cloudflare 的 SSL、CDN 加速、DDoS 防護等服務。
- DNS 設定仍然會指向 Cloudflare,但 HTTP/HTTPS 將不會被 Cloudflare 管理,會直接對接 Nginx。
建議:
-
- 如果您使用了 Cloudflare 的「原點憑證」(Origin Certificate),並希望透過 Cloudflare 提供的 SSL 和安全服務,那麼 Proxy 應該開啟。
- 如果您希望簡單的 DNS 設定(不需要 Cloudflare CDN、SSL 加速等),可以關閉 Proxy。
Cloudflare DNS 設定
- 點選左側的「網站」,再點選右側的域名
- 點選左側的「DNS」
- 點選右側的「新增記錄」
- 使用瀏覽器開啟下列網址,查詢自己的「外部IP位址」
- 類型:A﹑名稱:@﹑IPv4 位址:外部IP﹑Proxy 狀態:向右啟用,接著點選「儲存」
- 出現一筆自己域名的 A記錄:bugtest.us.kg
- 再次點選右側的「新增記錄」
- 類型:A﹑名稱:www﹑IPv4 位址:外部IP﹑Proxy 狀態:向右啟用,接著點選「儲存」
- 出現一筆 A記錄:www
- 測試網頁 index.htm
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>
- 測試您的伺服器,在瀏覽器輸入 http://您的域名
- 測試您的伺服器,在瀏覽器輸入 https://您的域名
Cloudflare 預設已經啟用 SSL 憑證,可以透過 https 連線伺服器
- 點選左側的「SSL/TLS」,可以看到預設的加密模式「彈性」
- 點選右方的「編輯」可以編輯 DNS 記錄
- 修改 DNS 內容後,再點選右下角的「儲存」
- 「勾選」一筆或多筆記錄後點選「刪除記錄」可以將 DNS 記錄刪除
- 輸入「刪除」後點選下方的「刪除」即可將 DNS 記錄刪除
Cloudflare SSL 設定
DNS 記錄查詢

- 查詢外部IP
curl ipinfo.io/ip && echo
-
dig(Domain Information Groper)是一個用於查詢 DNS(域名系統)記錄的命令行工具,常用於診斷網路問題或檢查域名的 DNS 設定。
dig <域名>
Cloudflare 預設的 SSL 模式:彈性 (Flexible)
Cloudflare 預設使用「彈性」(Flexible) 模式的 SSL 憑證,讓網站可以快速啟用 HTTPS,而無需對主機進行額外設定,以下是這種模式的運作方式和適用情況:
-
- 前半段加密:瀏覽器到 Cloudflare
當用戶使用瀏覽器存取網站時,請求會先經過 Cloudflare 的「反向代理」(Reverse Proxy),在這個階段,Cloudflare 會自動加密傳輸,保障前半段的資料安全。 - 後半段未加密:Cloudflare 到主機
在「彈性」(Flexible) 模式下,從 Cloudflare 到網站主機的傳輸是未加密的,這對某些情境來說是一種安全風險。
- 前半段加密:瀏覽器到 Cloudflare
適用情境與風險
- 適用於靜態網站
如果網站是純靜態內容,且沒有敏感資料傳輸(例如會員登入或付款資訊),「彈性」(Flexible) SSL 模式已經足夠,能快速替網站啟用 HTTPS。 - 不適用於動態網站
如果網站有會員系統或需要輸入密碼的登入頁面,使用「彈性」(Flexible) 模式會使敏感資料在未加密的後半段傳輸中暴露,存在極大的安全風險。
建議:使用「完整 (嚴格)」Full (strict) 模式
為了提升網站安全性,建議將 SSL 模式設定為「完整 (嚴格)」Full (strict),確保:
- 從瀏覽器到 Cloudflare 的傳輸經過完整加密。
- 從 Cloudflare 到主機的傳輸同樣使用有效的 SSL 憑證進行加密。
建置步驟
- 點選左側的「網站」,再點選右側的域名
- 點選左側的「SSL/TLS」,接著點選下方的「原始伺服器」(Origin Server),再點選右側的「建立憑證」(Create Certificates)
- 金鑰類型(Private key type) 選擇使用 Cloudflare 產生私密金鑰和 CSR 私密金鑰類型 「RSA (2048)」,選項有 RSA (2048)、ECC
主機名稱(Hostnames) 預設會帶入:您的域名和*.您的域名
憑證有效期限(Certificate Validity):預設是15年,選項有 7天、30天、90天、1年、2年、3年、15年
完成後點選下方的「建立」(Create)
- 金鑰格式(Key Format) 選擇「PEM」,選項有 PEM、PKCS#7、DER
複製「原點憑證」(Origin Certificate) 的內容後存檔成 server.pem
複製「私密金鑰」(Private Key) 的內容後存檔成 server.key
完成後點選下方的「好」(OK)
- 建立憑證之後可以「下載」(Download) 或「撤銷」(Revoke) 憑證
下載憑證
注意:這裡只有「原點憑證」,沒有「私密金鑰」,建議在上面的步驟就將「原點憑證」和「私密金鑰」的內容複製後進行存檔
- 將兩個憑證檔上傳到主機上
「原點憑證」(Origin Certificate) :server.pem
「私密金鑰」(Private Key) : server.key資料夾結構
www/ │ ├── docker-compose.yml # Docker Compose 設定檔 │ └── nginx/ # Nginx 設定目錄 ├── conf/ # Nginx 虛擬主機設定檔 │ └── default.conf # Nginx 設定檔 │ ├── html/ # 靜態資源目錄 │ ├── index.html # 預設靜態網頁 │ └── assets/ # 其他資源 (CSS, JS, 圖片等) │ ├── logs/ # Nginx 日誌目錄 │ ├── access.log # 存取日誌 │ └── error.log # 錯誤日誌 │ └── ssl/ # SSL 憑證目錄 ├── server.pem # Cloudflare 原點憑證 └── server.key # Cloudflare 私密金鑰
docker-compose.yml 範例
services: nginx: image: nginx:alpine container_name: nginx ports: - "80:80" # HTTP - "443:443" # HTTPS volumes: - ./nginx/conf:/etc/nginx/conf.d # Nginx 虛擬主機配置 - ./nginx/html:/usr/share/nginx/html # 靜態資源 - ./nginx/logs:/var/log/nginx # Nginx 日誌 - ./nginx/ssl:/etc/nginx/ssl # Cloudflare 憑證 restart: always
Nginx 設定檔:default.conf 範例
# 主域名的 HTTP 設定 server { listen 80; server_name bugtest.us.kg; return 301 https://$host$request_uri; # 將 HTTP 請求導向到 HTTPS } # 主域名的 HTTPS 設定 server { listen 443 ssl; server_name bugtest.us.kg; # Cloudflare SSL 憑證設定 ssl_certificate /etc/nginx/ssl/server.pem; # Cloudflare原點憑證 ssl_certificate_key /etc/nginx/ssl/server.key; # Cloudflare私密金鑰 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; # 靜態資源設定 location / { root /usr/share/nginx/html; # 指向靜態資源目錄 index index.html index.htm; try_files $uri $uri/ =404; } # 防止存取敏感文件 location ~ /\.(ht|git|svn|env) { deny all; } }
- 將 SSL 模式切換成「完整 (嚴格)」Full (strict)
點選左側的「SSL/TLS」→「概觀」(Overview),再點選右側的「設定」(Configure)
- 點選「自訂 SSL/TLS」下方的「選取」
- 在「自訂 SSL/TLS」模式中點選「完整 (嚴格)」Full (strict),再點選下方的「儲存」
- 設定完成,「SSL/TLS 加密」模式變成「完整 (嚴格)」Full (strict)
- 啟用「一律使用 HTTPS」(Always Use HTTPS) 功能
點選左側的「SSL/TLS」→「邊緣憑證」(Edge Certificates),右方「一律使用 HTTPS」(Always Use HTTPS):向右啟用
用途:將所有 HTTP 請求自動導向到 HTTPS,無需在伺服器設定中再額外處理導向。
- 啟用「自動改寫 HTTPS」(Automatic HTTPS Rewrites) 功能
點選左側的「SSL/TLS」→「邊緣憑證」(Edge Certificates),右方「自動改寫 HTTPS」(Automatic HTTPS Rewrites) :向右啟用
用途:自動將網站中所有 HTTP 的資源連結(例如圖片、CSS、JS)重寫為 HTTPS,解決「混合內容」問題。
- 如果可以正常瀏覽您的網站,代表「完整 (嚴格)」Full (strict) 模式已經成功啟用了
測試您的伺服器,在瀏覽器輸入 https://您的域名
Cloudflare 預設已經啟用 SSL 憑證,可以透過 https 連線伺服器
- 憑證有效期限:15年
Cloudflare CDN
CDN 的主要功能
- 加速內容傳遞
- 將網站的靜態資源(如圖片、CSS、JavaScript 和影片)緩存到全球的節點伺服器中,用戶請求會被自動導向到最近的伺服器,減少網路延遲。
- 減少伺服器負載
- CDN 會分擔原始伺服器的流量,降低單一伺服器的壓力,尤其在高流量時效果更明顯。
- 提升可靠性
- 如果某個節點出現故障,CDN 可以自動將流量切換到其他節點,確保網站的持續可用性。
- 增強安全性
- CDN 能夠提供額外的安全層,例如 DDoS 攻擊緩解、WAF(Web Application Firewall 網頁應用防火牆)等保護功能,幫助防範惡意流量。
- 全球內容傳遞
- CDN 將內容緩存於全球多個地點,讓來自不同國家或地區的用戶都能快速存取網站。
知名的 CDN 服務商
- Cloudflare:提供免費和高級的 CDN 服務,還有安全增強功能。
- AWS CloudFront:亞馬遜的 CDN 服務,適合使用 AWS 基礎架構的用戶。
- Akamai:高效能的企業級 CDN。
- Google Cloud CDN:Google 提供的全球分佈式網路。
- Fastly:專注於即時更新和快速內容分發。
網站測試
Cloudflare 會將網站的靜態內容複製並緩存在 CDN 節點伺服器上,當用戶存取網站時,請求會被路由到距離最近的 CDN 節點,避免因地理位置或網路擁堵導致的延遲。
- 網站外部IP
- Cloudflare 代理 IP
- Cloudflare 代理 IP
使用 Firefox 瀏覽器打開自己的網站(http://bugtest.us.kg)和「網頁開發者工具」,可以看到網站背景圖(tree.jpg)的來源是「Cloudflare 代理 IP」,不是網站主機的「實際外部 IP」,代表「Cloudflare CDN」已經成功啟用了。
網站主機 DNS 設定
- 在自己的網站主機上修改設定檔
將 DNS 指向 Cloudflare 的 DNS 伺服器sudo vim /etc/netplan/50-cloud-init.yaml
- 增加 DNS 設定
找到 nameservers,將 addresses 設定成 Cloudflare 的 DNS 伺服器- 1.1.1.1 是 Cloudflare 的 DNS 主要伺服器
- 1.0.0.1 是 Cloudflare 的 DNS 備用伺服器
network: ethernets: eth0: dhcp4: true dhcp6: false nameservers: addresses: - 1.1.1.1 - 1.0.0.1 version: 2
- 套用網路設定
sudo netplan apply
- DNS 伺服器修改設定
# 備份舊設定檔 sudo cp /etc/resolv.conf /etc/resolv.conf.bak # 使用軟連結替換,將 /etc/resolv.conf 指向 Systemd-resolved 完整的DNS設定檔 sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf # 驗證設定 cat /etc/resolv.conf # 重啟網路服務 sudo systemctl restart systemd-resolved
結語
透過本文的完整教學,可以為網站啟用 Cloudflare 的 SSL 憑證和 CDN 服務,在安全性方面,採用「完整(嚴格)」SSL 模式確保了資料傳輸的端對端加密,而自動 HTTPS 重寫功能則解決了混合內容的問題。
在效能方面,Cloudflare 的全球 CDN 網路不僅加速了靜態資源的傳遞,更提供了 DDoS 防護等進階安全功能,這些免費且強大的應用,讓個人網站也能擁有企業級的安全防護和效能優化,透過正確的設定,您的網站不僅會更安全,還能為全球各地的訪客提供更快速且穩定的瀏覽體驗。