全部產品
Search
文件中心

CDN:HTTPS相關常見問題

更新時間:Jul 07, 2026

HTTPS是以安全為目標的HTTP通道,為CDN的網路內容傳輸提供了更好的保障。用戶端在極速訪問內容的同時,可以更安全有效地瀏覽網站內容。本文為您介紹關於HTTPS的常見問題。

什麼是HTTPS?

超文本傳輸安全性通訊協定HTTPS(Hypertext Transfer Protocol Secure),是一種在HTTP協議基礎上進行傳輸加密的安全性通訊協定,能夠有效保障資料轉送的安全。HTTP協議以明文方式發送內容,不提供任何方式的資料加密。HTTPS協議是以安全為目標的HTTP通道,簡單來說,HTTPS是HTTP的安全版,即將HTTP用SSL或TLS協議進行封裝,HTTPS的安全基礎是SSL或TLS協議。HTTPS提供了身分識別驗證與加密通訊方法,被廣泛用於全球資訊網上安全敏感的通訊,例如交易支付。當您在阿里雲CDN上配置HTTPS時,需要提供網域名稱對應的認證,並將認證部署在全網CDN節點,實現全網資料加密傳輸。

常見的HTTP攻擊類型有哪些?

HTTPS只是安全訪問的其中一環,如需全面保證網路安全,則還需要接入WAF、DDoS等防禦能力,以下為常見的HTTP攻擊類型:

  • SQL注入:利用現有應用程式,可以將惡意的SQL命令注入到後台資料庫引擎中並執行。也可以通過在Web表單中輸入惡意SQL語句得到一個存在安全性漏洞的網站上的資料庫,而不是按照設計者意圖去執行SQL語句。

  • 跨站指令碼攻擊:跨站指令碼攻擊XSS(Cross-site scripting)是最常見和基本的攻擊Web網站的方法。攻擊者在網頁上發布包含攻擊性代碼的資料。當瀏覽者看到此網頁時,特定的指令碼就會以瀏覽者使用者的身份和許可權來執行。通過XSS可以較容易地修改使用者資料、竊取使用者資訊。

  • 跨站請求偽造攻擊:跨站請求偽造CSRF(Cross-site request forgery)是另一種常見的攻擊。攻擊者通過各種方法偽造一個請求,模仿使用者提交表單的行為,從而達到修改使用者的資料或者執行特定任務的目的。為了假冒使用者的身份,CSRF攻擊和XSS攻擊通常會相互配合,但也可以通過其它手段,例如誘使使用者單擊一個包含攻擊的連結。

  • Http Headers攻擊:使用瀏覽器查看任何Web網站,無論您的Web網站採用何種技術和架構,都用到了HTTP協議。HTTP協議在Response header和content之間有一個空行,即兩組CRLF(0x0D 0A)字元,這個空行標誌著headers的結束和content的開始,攻擊者可以利用這一點。只要攻擊者有辦法將任一字元注入到Headers中,這種攻擊就可以發生。

  • 重新導向攻擊:一種常用的攻擊手段是“釣魚”。釣魚攻擊者通常會發送給受害者一個合法連結,當您訪問連結時,會被導向一個非法網站,從而達到騙取使用者信任、竊取使用者資料的目的。為防止這種行為,我們必須對所有的重新導向操作進行審核,以避免重新導向到一個危險的地方。常見解決方案是白名單,將合法的要重新導向的URL添加到白名單中,非白名單上的網域名稱重新導向時拒絕。第二種解決方案是重新導向token,在合法的URL上加上token,重新導向時進行驗證。

網站只有登入才需要HTTPS嗎?

不是。您需要從以下幾個方面來分析:

  • 從安全方面來看:一些頁面為HTTP,一些頁面為HTTPS,當通過HTTP或不安全的CDN服務載入其他資源(例如JS或CSS檔案)時,網站也存在使用者資訊暴露的風險,而全站HTTPS是防止這種風險最簡單的方法。

  • 從效能方面來看:當網站存在HTTPS和HTTP兩種協議時,跳轉需對伺服器進行大量的重新導向,當這些重新導向被觸發時會減慢頁面的載入速度。

  • 從全網來看:瀏覽器對HTTPS的支援會更友好,搜尋引擎也對HTTPS的收錄有更好的支援。

配置HTTPS時,需要配置哪些認證?

如果您僅需要加密用戶端至CDN節點的請求,在CDN上配置HTTPS認證即可。

如果您需要配置全鏈路HTTPS訪問,需要在CDN上配置HTTPS認證並在來源站點上配置HTTPS認證,詳情請參見:什麼是HTTPS加速

開啟CDN的HTTPS加速後會額外收費嗎?

會額外收費。開啟CDN的HTTPS加速,實際開啟的是用戶端到CDN邊緣節點這段鏈路的HTTPS。因為SSL協議的握手和內容解密都需要計算,所以會增加CDN伺服器的CPU資源損耗,但不會增加您來源站點伺服器的資源損耗,因為CDN邊緣節點到您來源站點這段鏈路使用的仍然是HTTP協議,不會額外增加您來源站點的損耗。

如果您購買不同類型的認證,則需要額外付費。您也可以登入阿里雲數位憑證管理服務控制台申請個人測試認證(免費版)。個人測試認證(免費版)等級為DV,每個加速網域名稱可以申請一個個人測試認證(免費版),認證有效期間為3個月,到期後可以免費自動續簽。設定好HTTPS認證後,該網域名稱在CDN上的所有HTTPS請求數會收費。

IP黑白名單、User-Agent 黑名單、請求返回403/404時,HTTPS請求數是否會被計費?

HTTPS請求數會被計費,當命中某些策略規則,返回403和404的狀態代碼時,該請求是被正確響應了的,所以會被記一次HTTPS請求數;該請求由於不攜帶任何的資源內容,所以請求的流量會非常小,計費流量也極小。

來源站點已經配置了HTTPS,CDN上還需要配置HTTPS嗎?

HTTPS是用戶端和服務端的互動,未使用CDN之前,用戶端是直接和來源站點互動,因此來源站點需要配置HTTPS。使用CDN之後,是用戶端和CDN互動,如果您需要以HTTPS的形式訪問CDN,則必須在CDN上配置HTTPS認證。在CDN上配置HTTPS認證的方法,請參見配置HTTPS認證

開啟HTTPS加速會消耗更多資源或降低訪問速度嗎?

當來源站點開啟HTTPS時,相比於來源站點通過HTTP訪問,計算資源的消耗會有所增加,主要來自於HTTPS握手過程中對非對稱加解密的消耗,尤其在高並發情況下資源消耗增長明顯。對稱加解密消耗與HTTP基本一致,因此需要增加Session複用率,但直接通過HTTPS訪問來源站點相比於直接通過HTTP訪問來源站點耗時更長。

通過全站加速進行全鏈路HTTPS訪問時,SSL握手的平均時間會有所縮短,在高並發情況下,來源站點Session複用率會明顯的提高,來源站點資源消耗會有所降低。

  • 對於靜態內容:通過邊緣分發的方式,在增加握手時間消耗的同時,減少了傳輸時間的消耗,因此整體訪問上會有所減少,且靜態資源無需回源,減少了來源站點的互動,可以降低來源站點的資源消耗。

  • 對於動態內容:在直接選取上比通過傳統公網訪問更加可控且路徑最優,動態請求必須回源,通過全站加速的網路回源,可以增加Session複用率,整體傳輸速度會有所提升。由於動態請求必須回源,因此非對稱加解密是必不可少,來源站點的資源消耗會有所增加。但通過全站加速回源形成了全鏈路HTTPS訪問的方式,整體資源消耗上是最優。

如何配置HTTPS認證?

您可以在CDN控制台中配置HTTPS認證,具體操作請參見配置HTTPS認證

為新增的CDN網域名稱部署認證時,為什麼在資源清單中找不到已持有的認證?

萬用字元認證已部署到其他CDN網域名稱後,新增網域名稱如需複用同一認證,預設認證列表無法直接選擇。需通過自訂上傳方式在CDN控制台完成部署,之後才可使用認證控制台的雲產品部署功能。

排查步驟如下:

  1. 確認網域名稱已添加到CDN。登入CDN控制台,進入網域名稱管理頁面,檢查目標網域名稱是否在列表中。認證服務的關聯網域名稱列表僅顯示已添加到CDN的網域名稱,新網域名稱未添加時列表為空白。

  2. 確認認證綁定的網域名稱包含加速網域名稱。萬用字元認證(如*.example.com)可覆蓋所有同級子網域名稱。認證綁定的網域名稱與加速網域名稱不匹配時,認證不會出現在可選列表中。

  3. 按順序操作:先在CDN控制台為網域名稱配置HTTPS認證(選擇已有認證或自訂上傳),完成後再通過認證控制台的雲產品部署進行後續管理。認證控制台的雲產品部署依賴CDN控制台側的配置,必須先完成CDN控制台的認證配置。

  4. 萬用字元認證已部署到其他CDN網域名稱時,新增網域名稱可通過自訂上傳方式複用該認證,也可在認證控制台建立部署任務部署至CDN。

配置HTTPS認證的具體操作,請參見配置HTTPS認證

上傳HTTPS認證,提示認證重複怎麼辦?

當您上傳自訂上傳(認證+私密金鑰)類型的認證時,如果系統提示認證重複,您需要修改認證名稱後再重新上傳。

上傳第三方認證時,有多個.crt認證,如何上傳認證?

中級機構頒發的認證檔案包含多份認證,您需要將伺服器憑證與中間認證拼接成一份完整的認證後再上傳。

通過文字編輯器開啟所有*.PEM格式的認證檔案,將伺服器憑證放在第一位,中間認證放在第二位,認證之間不能有空行。通常情況下,憑證授權單位頒發認證時會有對應的說明,請注意查閱規則說明。

拼接後的認證如下所示。

-----BEGIN CERTIFICATE-----
MIIE/DCCA+SgAwIBAgIUOWvvEj41j5OamNabjVbGY42BBcQwDQYJKoZIhvcNAQEL
BQAwgYIxCzAJBgNVBAYTAnNuMRIwEAYDVQQIDALHdWFuZORvbmcxETAPBgNVBAcM
CFNgZWS6aGVuMQ8wDQYDVQQKDAZIdWF3ZWkxCzAJBgNVBAsMAklMS4wLAYDVQQD
DCVIdWF3ZWkgV2ViIFN1Y3VyaXR5IEJOQ1NBIFJvb3QgQ0EgVjMxCzAJBgNVBAYT
ODAwNDAO1oXDTE4MTAxODAwNDAO1owGZoxCzAJBgNVBAYTAkNOMRAwDgYDVQQI
DAdqeWFuZ3N1M1MRAwDgYDVQQHDAdUYW5qeWFuZzELMAkGA1UECgwCVzGxGzAYBgNVBAsMEVdl
dHdhcmVGVjG5bG93Z2oxCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAd5dWEwZ3N1M9
9wOBAAEFAOCAQ8AMIIBCgKCAQEA1hC5fG6J2OX5F/YW7bo6130yzgaWVGLEX8t
1dQ1JAus93xMC2Jr6UOXmXR6WaRu51ZxpPfLT/IV6UnvMLnxJQBavqeUykCSkadW
stYA9ttTI/FYq+MR1XKbNzqK/ADhRfmR4ovS/3w1wxvdpwySfR2+V/D6TjxHZCjc
+81SmUuLxsgoUe79B/ruccY1ufuqr3v0TToaNn4c37kwjJeKf+b2F/IqO/KF+9zF
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMBIGA1UdEQQ7MDmCE3d3dy5odWF3ZW1j
bG91ZC5jb22CESouaHVhd2VpY2xvdWQuY29tgg9odWF3ZW1jbG91ZC5jb20wDQYJ
KoZIhvcNAQELBQADggEBAcsLP7Hj+4KY1ES38On0UuvQ3st8axvhDD9jZGoninzW
JSGpdm04NEsh1vwSFdEHpjy/xKSLCIqg5Ue8tTI8zoF13U0R0nMeHSKsxJG6zc8X
h/3N217oBygFgvpmc6YX66kvuXmkA7KRniiYS0nmCi2KUyngSBv4dsk21dj1lqQ3b
HI+1o26Q9odLsmhsKOsFUC0vDKoMIJz0Socy7Cq1+tFWF9S79MI4QjxaXEVvpIEg
QLEze3BXSsoiWRkdfasdDB9s+UtdWeJyOHMh/otvUQCtB6areV2+CPthmDENA+A8
-----END CERTIFICATE-----
IK6GzHyp/mgrzwKdDh97aQ42ARreAv4KVFAiJGZO2LOY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIID2TCCAsSgAwIBAgIJALQPO9xFFzmA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD
VQQGEwJjbjESMBAGA1UECAwJR3Vhbm1dEb2SnMREwDwYDVQQHDAhTaGVuemhlbjEP
MA0GA1UECgwGSHVhd2VpMQswCQYDVQQLDAJJVDEuMCwGA1UEAwwlSHVhd2VpIFdl
YiBTZWN1cmUgSW50ZXJuZXQgR2F0ZXdheSBDQSBWMzELMAkGA1UEBhMCQ04xEjAQ
BgNVBAgMCUd1YW5nZG9uZzERMA8GA1UEBwwIU2hlbnpoZW4xDzANBgNVBAoMBkh1
YWdlaTELMAkGA1UECwwCSVQxLjAsBgNVBAMMJUh1YXdlaSBXZWIgU2VjdXJpdHkg
RUJDU0EgUm9vdCBDQSBWMzELMAkGA1UEBhMCQ04wHhcNMTgxMDE4MDAwMDAwWhcN
MREwDwYDVQQHDAhTaGVuemhlbjEPMA0GA1UECgwGSHVhd2VpMQswCQYDVQQLDAJJ
VDEuMCwGA1UEAwwlSHVhd2VpIFdlYiBTZWN1cmUgSW50ZXJuZXQgR2F0ZXdheSBD
QSBWMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL
IwQYMBaFDB6DZZX4Am+isCoa48e42drAXpsMAwGA1UdEwQFMAMBAf8wDQYJKoZI
hvcNAQELBQADggEBAKN9k5jRX56jw2Ku5Mn3gZu/kQQw+mLkIuJEeDwS6LMjWOHv
313x1v/Uxv4hQmo6OXqg2OM4dfIJoVVKgiLlBCpXv0/X600rq3UPediEMaXkmM+F
tuJnoPCXmew7QvvQQwis+0xmhpRPgON6xIK01vIbAV69TkpwJW3duj1FuRgSvn
Rab4gVi14x+bUgTbGHCvDH99PhAdvXOuI1mk5Kb/JhCNbhRAHezyfLrvimxI0Ky
2KWZitN+M1UWvSYG8j3mtDm+/FuA93V1yEzRjKj92egCgM1u671liddt7zzzzqW+U
QLUOevUmUHQsV5mk62v1e8sRViHB1B2HJ3DU5gE=
-----END CERTIFICATE-----

配置HTTPS認證時報錯怎麼辦?

在 CDN 控制台上傳自訂 SSL 憑證時可能遇到多種報錯。常見的報錯類型包括:

  • 認證格式錯誤:CDN 僅支援 PEM 格式的認證。請確認認證內容以 -----BEGIN CERTIFICATE----- 開頭、以 -----END CERTIFICATE----- 結尾,且通常每行 64 個字元。如果您的認證是 DER、P7B 或 PFX 格式,需要先轉換為 PEM 格式。

  • 私密金鑰格式錯誤:私密金鑰檔案的 header 推薦使用 -----BEGIN RSA PRIVATE KEY-----。如果顯示私密金鑰格式錯誤,需要轉換後再上傳。此外,私密金鑰不能帶有密碼保護。

  • 認證與私密金鑰不匹配:上傳的認證和私密金鑰必須是同一對。RSA認證檢查:使用 openssl x509 -noout -modulus -in your_cert.pem | openssl md5openssl rsa -noout -modulus -in your_key.pem | openssl md5 命令比對兩者的 modulus 是否一致。

  • 認證網域名稱不匹配:認證的 CN 或 SAN 必須包含加速網域名稱。檢查命令:openssl x509 -in cert.pem -noout -text | grep -A1 "Subject:|Subject Alternative Name"

  • 認證/密鑰過長:檢查憑證鏈結是否包含多餘空行、不可見字元或 BOM 頭,或者誤粘貼了根CA。

  • 認證已到期:使用 openssl x509 -in your_cert.pem -noout -dates 命令檢查認證有效期間。

具體格式要求和轉換方法,請參見認證格式與轉換

來源站點的HTTPS認證更新了,CDN上需要同步更新嗎?

不需要。來源站點的HTTPS認證更新後不會影響CDN上的HTTPS認證,當您在CDN上配置的HTTPS認證將要到期或者已經到期時,您才需要在CDN上更新HTTPS認證。具體操作請參見配置HTTPS認證

配置HSTS時,開啟包含子網域名稱後,子網域名稱上是否需要開啟HSTS?

子網域名稱上無需開啟HSTS,開啟“包含子網域名稱”後,HSTS策略將在全部子網域名稱中生效,請確保各子網域名稱支援正常HTTPS訪問,否則子網域名稱將無法訪問。

已經配置了HTTPS,為什麼用戶端還是HTTP訪問?

用戶端是以HTTP訪問還是HTTPS訪問完全是用戶端的行為,如果您希望用戶端強制使用HTTPS訪問,可以在CDN上開啟強制HTTPS跳轉。具體操作請參見配置協議重新導向

為什麼大多數裝置能夠順利訪問通過HTTPS協議加速的網域名稱,但是一些裝置卻無法訪問?

這主要是因為CDN在處理HTTPS請求時依賴於SNI。SNI是TLS協議的一個擴充,它允許用戶端在發起HTTPS串連請求時指定想要訪問的主機名稱。

然而,某些較舊或特定配置的用戶端(例如,老舊版本的Android或iOS作業系統、Java 6及以下版本、以及一些物聯網IoT裝置等),可能不支援SNI或者在發起HTTPS請求時不會發送SNI資訊。這種情況下,CDN節點無法確定用戶端想要訪問的確切網站,從而不能提供正確的SSL/TLS認證。結果就是HTTPS串連嘗試失敗,表現為使用者無法訪問網站內容。

為了改善這一狀況,建議採取以下措施:

  • 升級用戶端系統:確保使用的作業系統和軟體都是最新版本,以獲得對SNI的支援。

  • 更新IoT裝置韌體:對於物聯網裝置,定期檢查並安裝廠商提供的最新韌體更新。

私密金鑰檔案如何去除密碼保護?

  1. 確認密鑰是否帶有密碼保護

    如果確定私密金鑰存在密碼保護並且清楚私密金鑰的加密方式,可以直接參考步驟2進行解密。不清楚私密金鑰是否存在密碼保護或者不清楚私密金鑰的加密方式,請參考以下步驟處理:

    1. RSA演算法加密的私密金鑰

      使用OpenSSL運行以下命令,如果私密金鑰是加密的,OpenSSL 會提示你輸入密碼:Enter pass phrase for <加密的私密金鑰檔案>:;如果私密金鑰未加密,OpenSSL 不會要求輸入密碼,則會直接顯示私密金鑰資訊;如果出現 error 報錯資訊,則說明該私密金鑰不是RSA加密的檔案。

      openssl rsa -in <加密的私密金鑰檔案> -text -noout
    2. ECC/SM2演算法加密的私密金鑰

      使用OpenSSL運行以下命令,如果私密金鑰是加密的,OpenSSL 會提示你輸入密碼:Enter pass phrase for <加密的私密金鑰檔案>:;如果私密金鑰未加密,OpenSSL 不會要求輸入密碼,則會直接顯示私密金鑰資訊;如果出現 error 報錯資訊,則說明該私密金鑰不是ECC或SM2加密的檔案。

      openssl ec -in <加密的私密金鑰檔案> -text -noout
  2. 解密方案

    • 認證的密碼編譯演算法為 RSA 時,您需要在安裝了 OpenSSL或 BabaSSL的電腦上執行以下命令來解密私密金鑰。

      openssl rsa -in <加密的私密金鑰檔案> -passin pass:<私密金鑰密碼> -out <解密的私密金鑰檔案>
    • 認證的密碼編譯演算法為 ECC或SM2 時,您需要在安裝了 OpenSSL或 BabaSSL的電腦上執行以下命令來解密私密金鑰。

      openssl ec -in <加密的私密金鑰檔案> -passin pass:<私密金鑰密碼> -out <解密的私密金鑰檔案>