簡體   English   中英

OkHttp 證書固定錯誤或默認行為?

[英]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 會很高興。

這意味着您可以在以下任一操作事件中幸存下來:

  • 更改您的證書頒發機構(您的組織公鑰保持不變)
  • 丟失您的公鑰並將其關閉(CA 保持不變)

但是,如果您更改證書頒發機構並獲得新的公鑰,則客戶端將在您更新其 pin 之前無法連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM