那麼問題到底發生在哪裏?linux
HPKP 公鑰固定所攜帶的是中級證書或者根證書的哈希值,並與終端瀏覽器約定此哈希一般會在 1 年左右失效。nginx
例如藍點網目前使用的是 TrustAsia(中級 CA)提供的證書,咱們已經將 TrustAsia 的中級證書哈希進行固定。瀏覽器
server { listen 443 ssl http2; ssl on; ssl_certificate /usr/local/nginx/conf/vhost/crt/www.landiannews.com.crt; ssl_certificate_key /usr/local/nginx/conf/vhost/crt/www.landiannews.com.key; # 啓用嚴格安全傳輸HSTS add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; # 啓用 HPKP 公鑰固定 add_header Public-Key-Pins 'pin-sha256="IiSbZ4pMDEyXvtl7Lg8K3FNmJcTAhKUTrB2FQOaAO/s="; pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; max-age=2592000; includeSubDomains'; ssl_session_timeout 5m; }
若是 1 年後藍點網再也不使用 TrustAsia 簽發的證書而換成其餘,這會形成實際使用證書與固定的證書哈希不一樣。那麼瀏覽器就會直接攔截用戶與藍點網服務器之間的鏈接,瀏覽器會認爲新更換的 CA 多是想進行惡意劫持。緩存
由此可引起非安全方面的拒絕訪問攻擊安全
安全研究員斯科特稱攻擊者可劫持用戶訪問並返回惡意 HPKP 頭,這種操做並不會形成用戶的數據發生泄露。但惡意 HPKP 頭在被瀏覽器接收後會阻止用戶正常訪問網站,由於瀏覽器校驗到的 HPKP 頭與真實服務器不一樣。所以惡意攻擊者能夠利用 HPKP 公鑰固定策略無差異的對全部 HTTPS 網站發起這種有點另類的拒絕訪問攻擊。服務器
雖然網站全部者始終沒有丟失對網站和服務器的控制權, 但因爲固定哈希已經被接收所以沒有辦法清除緩存。session
撰寫該標準的谷歌工程師稱 HPKP 很可怕dom
參與撰寫和制定該標準(RFC 7469)的谷歌工程師稱公鑰固定變得很是可怕,該標準會對生態形成嚴重危害。除了惡意攻擊者能夠僞造 HPKP 頭進行拒絕訪問攻擊外,若是證書發生泄露須要進行吊銷也會引起較大問題。由於吊銷舊證書後再請求籤發新證書只能選擇此前固定的 CA 機構,你不能再選擇新的 CA 機構爲你簽發證書。網站
基於此方面考慮 HPKP 標準在制定時已要求網站至少固定兩份哈希,如藍點網固定的是 TrustAsia 和 Comodo。server
所以最終更換證書時我只能繼續選擇由 TrustAsia 或 Comodo 簽發的證書, 其餘的證書瀏覽器則會拒絕接受。
Google Chrome v67 版開始棄用 HPKP
目前已經支持 HPKP 公鑰固定的瀏覽器有 Google Chrome 瀏覽器、Mozilla Firefox 瀏覽器以及 Opera 瀏覽器。既然做爲標準參與制定的谷歌都決定放棄支持,Mozilla Firefox 和 Opera 勢必也會在後續中止支持公鑰固定。
谷歌去年 8 月的數據顯示全球啓用 HPKP 的站點僅只有 375 個,這個數字對於整個互聯網來講真的是微不足道。同時因爲不少網站使用 CDN 或者如 CloudFlare 類的 DDoS 防禦,此類服務自己就沒準備支持 HPKP 公鑰固定。
最終谷歌會在 2018 年 5 月份發佈的 Chrome v67 版中正式棄用 HPKP,使用該標準的網站能夠提早撤銷固定了。
更多Linux諮詢請查看www.linuxprobe.com