標籤:https ssl sni 認證不匹配 認證不一致
記錄一次升級https過程中走過的坑
curl: (51) SSL: certificate subject name ‘mp3.xxx.com‘ does not match target host name ‘static.xxx.com‘
升級 http://mp3.xxx.com
http://static.xxx.com
為
https://mp3.xxx.com
https://static.xxx.com
因在一台伺服器上配置的兩個網域名稱都解析到本機,配置完後,發現頁面的靜態檔案都無法載入
於是F12看了下,發現載入的認證和瀏覽器地址欄的網域名稱竟然不一致。請求的static這個網域名稱,確加
載的mp3的認證。用curl也報錯,不能正常返回200,納悶了!
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/95/73/wKiom1kVUdShTRn_AAEWh3KimtM195.png-wh_500x0-wm_3-wmp_4-s_3822386825.png" title="認證使用者和地址欄網域名稱不一致" alt="wKiom1kVUdShTRn_AAEWh3KimtM195.png-wh_50" />
[[email protected] ~]# curl -I https://static.xxx.com/static/lib/less.min.js
curl: (51) SSL: certificate subject name ‘mp3.xxx.com‘ does not match target host name ‘static.xxx.com‘
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/95/73/wKiom1kVVTiBXarsAAAXOto0L40811.png-wh_500x0-wm_3-wmp_4-s_4011905730.png" title="QQ圖片20170512142201.png" alt="wKiom1kVVTiBXarsAAAXOto0L40811.png-wh_50" />
後來求助偉大的Google,發現原來是nginx的TLS SNI support功能沒開,SNI (伺服器名字指示)不開啟的話,一個IP只支援一個SSL認證,不支援多個認證,而伺服器是yum安裝的nginx,預設TLS SNI support是關閉的,重新編譯nginx並指定openssl庫後,TLS SNI support 開啟了,訪問就正常了
另外的一個問題是這種情況下用curl測試時,狀態代碼不能正常返回200,開啟LS SNI support後也依然報錯,不能正常返回200。看curl官網有人反饋,這好像是curl版本7.15.5的BUG,用比7.15.5新的curl 7.19.7版本測試就正常。
本文出自 “czwanga” 部落格,請務必保留此出處http://czwanga.blog.51cto.com/4840967/1925013
記錄一次升級https走過的坑