您好,登錄后才能下訂單哦!
今天小伙伴突然告訴我,他的電腦上打不開網頁了,然后把以下截圖給我發了過來:
了解到他是用shadowsocks訪問谷歌的時候網頁打不開,之前是都是OK的。簡單讓他做了下網絡連通性測試:ping域名,telnet網站的80和443端口,發現網絡是OK的。然后仔細看了下他的報錯信息:
NET::ERR_CERT_COMMON_NAME_INVALID,詳情頁里可以看到是“因為此網站使用了HSTS”,于是讓他嘗試清理下Chrome上HSTS安全設置策略,清理后恢復正常,具體操作如下:
在Chrome瀏覽器中輸入:chrome://net-internals/#hsts:
找到相應的"delete domain security policies",輸入訪問有問題的網站域名,然后點擊刪除(delete):
找到"Query HSTS/PKP domain",輸入剛才刪除的域名,查詢結果返回“Not Found”,代表已經刪除成功:
之后再重新訪問之前的頁面,此時網頁能夠正常打開。
問題雖然已經解決,那么我們本著知其然,且知其所以然的原則,我們總結一下:
報錯是HSTS的問題,那么我們嘗試清理HSTS的設定,重新獲取一下即可。那么什么是HSTS呢:
HSTS is HTTP Strict Transport Security: a way for sites to elect to always use HTTPS. See https://www.chromium.org/hsts, 是國際互聯網工程組織IETF正在推行一種新的Web安全協議,HSTS的作用是強制客戶端(如瀏覽器)使用HTTPS與服務器創建連接。
采用HSTS協議的網站將保證瀏覽器始終連接到該網站的HTTPS加密版本,不需要用戶手動在URL地址欄中輸入加密地址。
該協議將幫助網站采用全局加密,用戶看到的就是該網站的安全版本。
HSTS的作用是強制客戶端(如瀏覽器)使用HTTPS與服務器創建連接。服務器開啟HSTS的方法是,當客戶端通過HTTPS發出請求時,在服務器返回的超文本傳輸協議響應頭中包含Strict-Transport-Security字段。非加密傳輸時設置的HSTS字段無效。
比如,https://xxx 的響應頭含有Strict-Transport-Security: max-age=31536000; includeSubDomains。這意味著兩點:
在接下來的一年(即31536000秒)中,瀏覽器只要向xxx或其子域名發送HTTP請求時,必須采用HTTPS來發起連接。比如,用戶點擊超鏈接或在地址欄輸入 http://xxx/ ,瀏覽器應當自動將 http 轉寫成 https,然后直接向 https://xxx/ 發送請求。
在接下來的一年中,如果 xxx 服務器發送的TLS證書無效,用戶不能忽略瀏覽器警告繼續訪問網站。
進入瀏覽器的inspeck模式,我們可以看到Response Headers如下:
小伙伴的電腦很可能是因某些原因導致待訪問網站的HSTS失效了,所以清理之后,重新認證一下即恢復正常。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。