阿里雲帳號快速辦理 阿里雲伺服器怎麼配置SSL證書

阿里雲國際 / 2026-08-13 14:22:29

{ "description": "本文以阿里雲伺服器為場景,帶你從申請與準備 SSL 憑證開始,說明在不同部署方式下如何完成綁定:包含雲上安全加固、負載均衡或反向代理環境設定、證書安裝、HTTP 轉 HTTPS、連線測試與常見錯誤排查。文章用直觀步驟串起「為什麼要做」與「怎麼做得正確」,讓你能在一小時內完成可用的安全加密配置。", "content": "

第一章:先把問題想清楚——SSL 到底要解決什麼

\n

很多人第一次做 SSL(Secure Sockets Layer,現已由 TLS 取代)時,直覺是「把證書上傳就行」。但在實務上,SSL 配置要同時解決幾件事:第一,讓瀏覽器與你的網站之間的通訊能被加密;第二,讓使用者確定自己連的是你的網站,而不是中間人;第三,讓證書鏈完整且有效,避免因為缺少中間憑證或域名不匹配而被瀏覽器警告。

\n

在阿里雲上做 SSL 配置,你的關鍵不在於“阿里雲怎麼點”,而在於你到底把網站跑在什麼架構裡:是直接在 ECS 上跑 Nginx/Apache?還是用雲上負載均衡(SLB)或 WAF?亦或你其實是反向代理層層轉發?不同架構會決定你應該把證書綁在哪一層。

\n

下面我會用「最常見、也最容易踩坑」的幾種情況來講清楚。你可以照著做,也能用文末的排查清單快速定位問題。

\n\n

第二章:準備工作——證書、域名與環境要先對上

\n

2.1 準備必要資訊

\n

在開始綁定之前,先確定你已經有以下資料(不同供應商名稱略有差異,但本質相同):

\n
    \n
  • 站點域名:例如 www.example.com、或根網域 example.com。證書會綁定域名,不能亂填。
  • \n
  • 阿里雲帳號快速辦理 證書檔:通常有 CRT / PEM 形式。
  • \n
  • 私鑰檔:通常是 KEY / PEM,而且要保管好,不能丟。
  • \n
  • 中間憑證鏈(CA Bundle / Intermediate):有些工具會讓你一起拿到;有些則要你自己補齊。
  • \n
\n

如果你用的是阿里雲證書服務,通常會給你一套可以直接部署的內容;如果是第三方 CA(如 DigiCert、Let’s Encrypt 等),你同樣要能拿到完整鏈與私鑰。

\n\n

2.2 確認你的服務端口與網路可達性

\n

SSL 綁定的本質是「讓某個服務在 443 端口啟用 TLS」。因此你要先確認:你的網站實際跑在哪裡,Nginx/Apache 監聽的是什麼端口,安全組(Security Group)是否開放 443。

\n

最常見的失敗原因之一,是你以為自己“部署好了證書”,但其實外網根本連不到 443。你會看到瀏覽器卡住或逾時,伺服器端也未必有 TLS 相關日誌。

\n\n

2.3 匹配憑證與域名(非常重要)

\n

證書通常會寫在 SubjectSubject Alternative Name(SAN) 裡。你拿到的是“通配符證書”還是“單域名證書”,會影響你的部署效果。

\n

例如:

\n
    \n
  • 單域名證書:只對 example.com 生效,www.example.com 可能不行。
  • \n
  • 通配符證書:例如 *.example.com 對子域名有效,但有時根網域仍需另外證書。
  • \n
\n

如果你部署到一個域名卻用錯證書,瀏覽器會直接警告“憑證不匹配”。

\n\n

第三章:在 ECS 上直接部署——以 Nginx 為例

\n

如果你的網站是直接在 ECS 上跑 Nginx,這是最常見的情況。下面我用可操作的步驟說明你要做什麼。

\n\n

3.1 準備目錄並上傳證書內容

\n

常見做法是把證書與私鑰放到固定路徑,例如:

\n
    \n
  • /etc/nginx/ssl/your_domain/
  • \n
\n

你會放入:

\n
    \n
  • your_domain.crt
  • \n
  • your_domain.key
  • \n
  • ca_bundle.crt(如果有中間鏈)
  • \n
\n

注意私鑰權限:至少要讓 Nginx 能讀,但其他人不要能隨便讀。

\n\n

3.2 編輯 Nginx 的 server 區塊

\n

你通常需要兩個 server block:一個在 80 端口負責跳轉到 HTTPS,另一個在 443 端口提供 HTTPS 服務。

\n

下面是一個典型範例(請根據你的站點域名、根目錄、反向代理目標自行調整):

\n

server { \n listen 80; \n server_name www.example.com example.com; \n return 301 https://$host$request_uri; \n}\n\nserver { \n listen 443 ssl http2; \n server_name www.example.com example.com; \n\n ssl_certificate /etc/nginx/ssl/example.com/your_domain.crt; \n ssl_certificate_key /etc/nginx/ssl/example.com/your_domain.key; \n ssl_trusted_certificate /etc/nginx/ssl/example.com/ca_bundle.crt; \n\n # 建議的安全配置(可按需要微調)\n ssl_protocols TLSv1.2 TLSv1.3; \n ssl_session_cache shared:SSL:10m; \n\n # 如有需要,避免舊配置\n ssl_prefer_server_ciphers on;\n\n root /var/www/html; \n index index.html index.htm;\n}\n

\n

幾個點要特別注意:

\n
    \n
  • ssl_certificatessl_certificate_key 對應正確文件。
  • \n
  • 阿里雲帳號快速辦理 ssl_trusted_certificate 並不是所有人都需要,但在你提供中間鏈時可以幫助完整驗證;如果你的 CRT 已經包含完整鏈,可能不必額外指定。
  • \n
  • server_name 必須與證書覆蓋的域名一致。
  • \n
  • 如果你網站不是靜態檔,而是反向代理到後端(例如 127.0.0.1:8080),那就要在 443 server block 裡用 proxy_pass,並把 location 配對好。
  • \n
\n\n

3.3 若你的服務是反向代理:在 443 加上 proxy 設定

\n

例如你的後端是 127.0.0.1:8080(或 Docker 映射出來的端口),你可以在 443 的 server block 內加入:

\n

location / {\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n\n proxy_pass http://127.0.0.1:8080;\n}\n

\n

這些 header 很關鍵,因為很多應用依賴它們生成正確的跳轉連結、判斷使用者是否透過 HTTPS 造訪。沒有設定好,有時候你會看到“登入後跳轉成 http”或“某些資源混合內容(Mixed Content)”的問題。

\n\n

3.4 檢查設定與重載

\n

阿里雲帳號快速辦理 在正式重載前,先檢查配置語法是否正確:

\n
    \n
  • 執行 Nginx 的 config 檢查
  • \n
  • 確認沒有語法錯誤
  • \n
  • 再重載或重啟服務
  • \n
\n

你會發現很多問題其實不是證書本身,而是 Nginx 配置路徑寫錯、文件不存在或權限不足。

\n\n

3.5 開放安全組與確認 443 可達

\n

部署完成後,務必回到阿里雲安全組確認入方向規則:是否允許 TCP 443。若你只開了 80,HTTPS 將永遠連不上。

\n

此外,如果你使用了 NACL 或本地防火牆(如 ufw、firewalld),也要同步確認。

\n\n

第四章:使用 SLB(負載均衡)/ 反向代理層——證書綁在哪裡

\n

如果你的網站不是直接對外的 ECS,而是經由 SLB 或其他層轉發,那你需要想清楚:TLS 是在第幾層終止(terminate)。常見有兩種:

\n
    \n
  • SLB 在外層終止 TLS:證書綁在 SLB 上,後端到 ECS 之間可能是 HTTP。
  • \n
  • 由 ECS 終止 TLS:外層(SLB)只做 TCP/轉發,真正的 HTTPS 在 ECS 的 Nginx/Apache 上。
  • \n
\n

你要根據你的架構選擇。因為證書不是“放哪都行”,放錯層就會導致你看到奇怪的錯誤:例如後端是 HTTP 卻被當成 HTTPS,或反之亦然。

\n\n

4.1 證書綁在 SLB:流程核心是“上傳憑證 + 指定監聽端口”

\n

若你的網站前面有 SLB,通常你要在 SLB 的 HTTPS 監聽器(Listener)上選擇證書,並指定 443 端口對應的協定。後端的規則則指定轉發到哪個 ECS 的哪個端口。

\n

這種方式的優點是集中管理:多台 ECS 共享同一個入口證書,更新時也更方便。

\n

但缺點是你要確保 SLB 到 ECS 的協議設定正確。例如你在 SLB 設定的後端是 HTTP,那你後端就不要期待 TLS;反之亦然。

\n\n

4.2 SLB 到後端的協議要一致:避免“連上了但不對”的錯覺

\n

很多人以為“證書都在那裡了,所以應該沒問題”。實際上,SSL 只是入口的加密,SLB 到後端的連線協議仍需一致。如果你後端 Nginx 仍在 https 上監聽但 SLB 用 http 去轉發,後端可能返回 400/502,或者 Nginx 日誌出現握手相關錯誤。

\n\n

第五章:讓 HTTPS 真正生效——HTTP 轉 HTTPS、HSTS、混合內容排查

\n

只把證書掛上去還不夠,你要確保使用者端會穩定使用 HTTPS。這裡分三層來做。

\n\n

5.1 HTTP 轉 HTTPS:最直接、也最必要

\n

你已經在第三章看到用 301 方式跳轉。這是最常見的做法。建議用 301(永久重定向)而不是 302,因為域名在一段時間後會固定使用 HTTPS。

\n

注意:如果你使用了某些第三方 callback(例如支付、登入回調),它們可能仍需要 http 或特定域名。做轉換前最好先確認回調流程不會因此被破壞。

\n\n

5.2 HSTS:提升安全,但要謹慎啟用

\n

HSTS(HTTP Strict Transport Security)可以告訴瀏覽器:未來一律用 HTTPS。你可以在 HTTPS 的回應中加上:

\n

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

\n

但要謹慎,因為一旦設定錯,使用者會被強制使用 HTTPS,你的測試環境若切換失敗,會造成較長時間的影響。通常建議先不啟用或先用較短 max-age 測試。

\n\n

5.3 混合內容(Mixed Content)排查:HTTPS 下仍可能出錯

\n

阿里雲帳號快速辦理 即使主頁是 HTTPS,如果頁面內還引用了 HTTP 資源(圖片、腳本、iframe),瀏覽器仍可能警告或阻止。你會看到控制台訊息類似“Mixed Content”。

\n

排查方法很簡單:用瀏覽器開發者工具看網頁加載資源,找出哪些 URL 是 http,把它們改成 https 或使用相對路徑。

\n\n

第六章:測試與驗證——不要只看瀏覽器是否“正常打開”

\n

6.1 確認證書鏈與有效期

\n

有時候你會看到瀏覽器沒有紅字,但證書其實鏈不完整或中間憑證缺失。最終在某些環境(特別是企業網路或舊系統)仍可能出問題。

\n

建議至少做以下驗證:

\n
    \n
  • 確定網址打開後顯示鎖頭,且證書顯示的域名正確
  • \n
  • 確定沒有憑證鏈錯誤
  • \n
  • 注意有效期,不要把到期日忽略
  • \n
\n\n

6.2 檢查 TLS 版本與加密套件

\n

現在多數情況你會用 TLSv1.2/1.3。若你設得太激進(例如只開 TLSv1.3),極老舊瀏覽器可能無法連線。實務上保留 TLSv1.2 會更穩。

\n

如果你在 Nginx 里用了 ssl_protocols,請確保你的目標客群不會因此被排除。

\n\n

6.3 用工具看握手細節:快速定位問題來源

\n

當你遇到錯誤時,不要只看“連不上”。你要看是哪一步出了問題:DNS 解析?端口?TLS 握手?憑證?重定向循環?

\n

阿里雲帳號快速辦理 常用的檢查思路是:

\n
    \n
  • 先確定 443 是否對外可連
  • \n
  • 再看 TLS 握手是否成功
  • \n
  • 最後看 HTTP 層是否正常(例如 301/200/502)
  • \n
\n

阿里雲帳號快速辦理 把問題縮小到層級,你就能更快解決。

\n\n

第七章:常見錯誤排查——把坑一次踩平

\n

7.1 瀏覽器顯示“憑證不受信任”

\n

最常見原因是中間憑證鏈不完整或證書文件放錯。解法通常是確認你上傳/配置的 CRT 是否包含完整鏈,或你是否正確指定了 ca_bundle。

\n

第二個常見原因是證書其實不是為該域名簽發的(SAN 不匹配)。這會在證書詳情中清楚看到域名不一致。

\n\n

7.2 警告“NET::ERR_CERT_COMMON_NAME_INVALID”

\n

這就是域名不匹配。你需要核對:

\n
    \n
  • 使用者輸入的網址(例如 www vs 不帶 www)
  • \n
  • 證書覆蓋的域名(SAN)
  • \n
  • Nginx/SLB 的 server_name 是否與證書對應
  • \n
\n

很多人其實只對 example.com 有證書,卻讓使用者直接訪問 www.example.com。解法是拿對證書或加上對應域名配置(含 DNS 指向)。

\n\n

7.3 連線中斷或 502/504:多半是服務端口或反向代理配置錯

\n

如果 TLS 其實握手成功,但後端回 502,常見原因是反向代理目標端口不對、後端服務未啟動、或權限/防火牆擋住了容器或本地端口。

\n

你要看 Nginx 的 error log,最能反映到底是 upstream 不存在、連線拒絕,還是超時。

\n\n

7.4 301/302 反覆跳轉(重定向循環)

\n

阿里雲帳號快速辦理 這類問題往往是 HTTP 與 HTTPS 轉換策略互相打架。例如某層已經在跳轉,另一層又在根據 header 重新判斷協議,導致循環。

\n

排查方式:

\n
    \n
  • 看瀏覽器重定向鏈是否在 http/https 之間來回
  • \n
  • 檢查應用是否信任 X-Forwarded-Proto
  • \n
  • 檢查 Nginx 的轉發 header 是否正確
  • \n
\n\n

7.5 證書到期:現在就該把續期流程想好

\n

阿里雲帳號快速辦理 SSL 不是一次性事件。你至少要建立兩件事:提醒到期時間、更新後重載或重新部署。

\n

如果你用的是自動續期(例如某些證書服務),你還要確認更新後服務是否自動重載。很多人續期成功了,但 Nginx 沒 reload,導致仍然提供舊證書。

\n\n

第八章:把配置做得更穩——小建議但很有用

\n

8.1 統一網域(選定帶 www 或不帶 www)

\n

你可以在 DNS 和重定向策略上統一使用者入口。否則你會遇到兩個入口各自用不同證書或不同策略,最後排查起來會很痛苦。

\n\n

8.2 盡量把證書管理集中

\n

無論是直接 ECS 還是 SLB,證書檔案都應該有固定管理方式。不要讓團隊每個人用各自的路徑和方式更新。集中管理能降低“更新後只有一台正常”的風險。

\n\n

8.3 為未來留備份與可回滾

\n

更新證書時,最好保留上一版的檔案,並確保你知道如何回退。尤其在你啟用 HSTS 後,一旦出問題回滾會更棘手。

\n\n

第九章:結語——你做的是安全,也是在做可運維的穩定

\n

阿里雲伺服器配置 SSL,看似是“把證書上傳”,實際是在完成一套完整鏈路:網路入口(443 可達)、TLS 終止位置(綁哪一層)、證書正確性(域名與鏈完整)、站點行為(HTTP 轉 HTTPS、避免混合內容)、以及最後的驗證與排錯流程。

\n

當你把這幾件事串起來,你就不會只是在做一次性的設定,而是在把網站做成一個能長期穩定運行的服務。下次證書更新,你也會知道該在哪裡動、動完怎麼驗證,不會把風險留到臨界點才發現。

\n

如果你願意,我也可以根據你目前的架構(ECS + Nginx 還是 SLB?後端是靜態還是反向代理?用的是哪個證書型別?域名是否帶 www?)把配置段落改成更貼近你環境的可直接套用版本。

" }
Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系