閱讀426 返回首頁    go 阿裏雲 go 技術社區[雲棲]


CDN的HTTPS相關問題及處理思路

相比於HTTP協議,HTTPS加入了SSL協議保證傳輸的可靠性。因此在線上的使用環境中為了避免劫持的情況經常需要使用HTTPS協議進行加密傳輸。而CDN同樣也提供HTTPS協議保證客戶端與CDN節點直接的網絡具體加密可靠性,但在使用過程中用戶經常遇到各類問題導致HTTPS訪問異常,本文對相關問題及處理思路進行總結,希望對大家排查問題有所幫助。

問題一:配置證書沒有生效

用戶在CDN上配置了SSL證書後發現仍然無法正確獲取證書或者獲取證書不可信,大家應依次從解析-->設置-->調度域幾個方麵依次排查。

解析問題

現象
CDN上配置完成證書後訪問加速域名證書出現不可信的狀態,具體查看訪問到的證書發現並沒有識別正確的證書,而是alicdn.com、oss-cn-${regionname}.aliyuncs.com等其他域名的證書(如圖一所示)。這種問題一般是由於加速域名的解析有問題導致的。
                                                    image
                                                                        圖1. 域名證書為alicdn.com的證書


分析
CDN初始化操作所述,CDN加速生效是需要將加速域名解析到正確的CNAME域名,並且加速域名和CNAME域名是一一對應的(除了泛域名加速)。同樣的需要CDN配置的SSL證書生效也同樣是需要正確解析到CDN的CNAME域名上的,這個是能夠正常獲取證書的前提。這裏經常出現客戶解析到源站、OSS以及非正確的CNAME域名。常見查看域名解析狀態可以通過dig或者nslookup命令查看。
                image
                                                                        圖2. nslookup命令查看域名解析狀態
            image
                                                                        圖3. dig命令查看域名解析狀態

證書設置問題

現象
用戶通過上述解析以及證書添加操作後查看加速域名訪問在全部或者部分瀏覽器訪問出現證書不可信,但與之前問題相比可查看證書已是用戶配置的證書。如圖4所示即是訪問加速域名出現不可信,查看其證書詳細內容確實是加速域名的證書。而瀏覽器報錯:“There are issues with the site's certificate chain”。
            image
                                                                        圖4. 加速域名證書報錯


分析
從上麵的截圖中可以查看到證書配置已經生效,說明解析和調度域都是正常的。但是瀏覽器在發起SSL握手的時候發現證書錯誤,證書鏈存在問題。這種錯誤一般有以下可能:
1. 證書與加速域名不匹配。一般CA機構頒發的證書包括泛域名證書和一般證書;泛域名證書顧名思義即是適用於多個域名,而一般證書即是針對於某個具體的子域名。該信息用戶可以從CA機構或者可以通過如下兩個地方查看到:
            image
                                                                        圖5 查看證書頒發給的域名是否含有通配符*
            image
                                                                        圖6 查看證書的使用者備用名稱是否包括多個域名


2. 證書是通過中級CA機構申請得到的證書,而證書鏈不完整導致的。中級CA機構頒發的公鑰證書一般包括多段證書鏈([-----BEGIN CERTIFICATE-----, -----END CERTIFICATE-----]段落),如果僅有一個段落說明該客戶僅配置了服務器證書而沒有配置中間證書。這時就需要用戶手動對證書進行拚接:服務器證書放第一份,中間證書放第二份,中間不要有空行。
:經常遇到用戶測試沒有配置中間證書時在Chrome瀏覽器中仍然是可以識別的,但其他瀏覽器出現問題,其原因是由於Chrome瀏覽器會自動補全中間證書。
另外客戶經常獲取的證書內容如圖7所示,該證書是CA機構根據服務器的類別提供了對應配置的證書。CDN服務器是通過tengine實現的因此需要使用for Nginx的證書(此類證書CA機構已經幫助拚接完成,可以直接設置)。
            image
                                                                        圖7 CA機構提供的區分服務器類別證書

SNI信息

現象
客戶測試反饋在正常的瀏覽器中測試證書正常,但是在一些低版本係統中的低版本瀏覽器中訪問出現證書不可信,查看證書詳細信息查看是uc.cn域名下的一個證書,如圖8所示。
image
                                                                        圖8 CDN加速域名訪問到uc證書


分析
CDN的證書都是采用SNI技術進行配置的。SNI主要是為了解決一個服務器上配置多個域名和對應的SSL證書的問題。在低版本的瀏覽器SSL握手的時候沒有帶SNI信息就會導致證書報錯。暫時該問題還沒有較好的解決方案,僅能夠建議用戶升級瀏覽器版本使用。SNI兼容性請參考:SNI瀏覽器兼容性

調度域問題

現象
在檢查完成上述的各方麵問題均正常仍然出現證書沒有生效的情況,就需要從調度域和訪問節點來分析。
分析
CDN正常情況下在添加HTTPS證書後CDN會將域名切換至SNI調度域(調度域:CDN節點中為客戶該域名分配的所有節點),而SNI調度域和之前的調度域會有訪問IP的差別,如果出現用戶確認解析正確但是解析到的證書仍然是alicdn.com的證書的話就可能是該問題,客戶可以手動在本地刷新下DNS緩存後進行測試是否恢複。如仍然沒有恢複請提交工單谘詢售後工程師。

問題二:更新證書沒有生效

生效時間問題

現象
在控製台上新添加HTTPS證書未生效或者更新證書後發現獲取到的仍然是之前配置的舊證書。
分析
CDN配置HTTPS證書大約需要分鍾級別的延遲完成全調度域的部署。
另外,CDN控製台上更新證書內容和秘鑰內容是需要一個小時的時間同步到調度域中的各個節點上的,因此這一個小時期間查看到的仍然是之前的證書,建議用戶在如果業務條件允許的話可以直接先關閉“證書狀態”然後重新開啟並配置新的證書,這些大概需要十分鍾的時間同步完成。

問題三:https協議跟隨設置

現象:客戶開通https協議跟隨按鈕後回源到源站測試無法正常訪問,並且錯誤錯誤是源站拋出的。如下圖,用戶設置加速域名回源到OSS的圖片處理的域名的80端口,直接訪問圖片處理的域名訪問是正常的,但是通過CDN訪問訪問出現503的報錯,通過Via可以查看到該503的錯誤是二級節點回源到OSS返回的503。
分析:協議跟隨的意義是指如果客戶端使用https方式請求資源,當節點上未緩存該資源時,會使用相同的https方式回源獲取資源;同理類似http協議的請求。協議跟隨的設置可以在神農鼎上查看到(如下圖),因此在上麵的問題中由於OSS的圖片處理的域名不支持https,而用戶開啟協議跟隨的話使用https訪問加速域名回源也就將使用https協議,因此出現了對應的報錯。因此開啟協議跟隨按鈕一定要客戶設置的源站要同時支持http和https協議的。

問題四:http/https跳轉問題


  現象:客戶對於自己的站點常有以下兩種跳轉需求:1)所有的http請求跳轉為https請求或者https請求跳轉為http請求;2)部分資源可以將http請求跳轉到https或者https跳轉為http請求。
  分析:這兩種需求對於第一種需求CDN是可以直接完成該需求的,可以直接在https的信息中直接添加對應的跳轉設置(如下圖)。而對於第二種需求CDN現在無法實現,需要用戶的源站實現對應的rewrite功能,而為了保證每次請求都可以觸發源站的重定向設置就需要用戶針對於特定的資源設置在CDN上不緩存(可以在CDN控製台設置緩存0秒或者源站設置no-cache等禁止CDN緩存的頭信息)。

最後更新:2017-06-30 23:03:32

  上一篇:go  OSS Web直傳方案在iOS中上傳視頻時需要注意的一個小坑
  下一篇:go  安全組規則批量添加授權對象