[英]OkHttp Certificate pinning Error or default behavior?
最近在測試OkHttp提供的證書pinning實現,使用版本4.9.0 + Retrofit 2.9.0; 而且我注意到 hash 檢查不是連接的,而是分離的。
根據示例實現publicobject.com的證書鏈:
Peer certificate chain:
sha256/afwiKY3RxoMmLkuRW1l7QsPZTJPwDS2pdDROQjXw8ig=: CN=publicobject.com, OU=PositiveSSL
sha256/klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY=: CN=COMODO RSA Secure Server CA
sha256/grX4Ta9HpZx6tSHkmCrvpApTQGo67CYDnvprLg5yRME=: CN=COMODO RSA Certification Authority
sha256/lCppFqbkrlJ3EcVFAkeip0+44VaoJUymbnOaEUk7tEU=: CN=AddTrust External CA Root
如果我們更改證書並且我們使用與以前相同的提供者和/或 root 執行此操作,我們將得到如下內容:
Peer certificate chain:
sha256/dklfnskvAAQFvandjfjASAFjvjvg45nbwskdvur5548=: CN=publicobject.com, OU=PositiveSSL
sha256/klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY=: CN=COMODO RSA Secure Server CA
sha256/grX4Ta9HpZx6tSHkmCrvpApTQGo67CYDnvprLg5yRME=: CN=COMODO RSA Certification Authority
sha256/lCppFqbkrlJ3EcVFAkeip0+44VaoJUymbnOaEUk7tEU=: CN=AddTrust External CA Root
只有第一個 hash 發生了變化,我自然會假設與站點的通信應該停止工作,因為我們的實現現在有一個不正確的 hash,但事實並非如此,因為其他三個與以前相同。
創建新證書時是我的錯誤嗎? 這是正確的行為還是錯誤? 有沒有辦法檢查鏈中的所有哈希是否正確?
該特定握手涉及 4 個證書,如果其中任何一個與您的簽名匹配,OkHttp 會很高興。
這意味着您可以在以下任一操作事件中幸存下來:
但是,如果您更改證書頒發機構並獲得新的公鑰,則客戶端將在您更新其 pin 之前無法連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.