2016-11-18 4 views
0

Ich habe eine App, die eine Website-Zertifikat-Hash-Abonnenten mit OkHttp3 ähnlich dem Verfahren hat erwähnt hereHandle Site-Zertifikat Ablauf mit OkHttp Zertifikat auf Android Pinning

Die Site-Zertifikat über bald abläuft und obwohl ich, dass ich erkannte, Ich muss in der Lage sein, ein neues Site-Zertifikat zu unterstützen, sobald ich das Update auf der Site ändere, und lasse das aktuelle noch bis dahin laufen. Gibt es eine Möglichkeit, zwei Zertifikate für die gleiche Site anzubringen, so dass beide nahtlos unterstützt werden (d. H. Wenn die aktuelle abläuft und eine nicht mehr gültig ist, sowie die neue, sobald sie aktualisiert wird)?

TIA

+1

Anruf 'add()' mehr als einmal, basierend auf dem 'CertificatePinner' API. – CommonsWare

+0

cool! Ich hatte gehofft, dass das funktionieren würde, war mir aber nicht sicher. Hast du das zufällig probiert und hast es für deine Apps funktioniert? –

+0

"Haben Sie das zufällig versucht" - nein. Daher meine "basierend auf dem' CertificatePinner' API-Kommentar. :-) Davon abgesehen, klingt es nach meinem Lesen der 'CertificatePinner'-JavaDocs sicher, dass es mit diesem Szenario umgehen sollte. Wenn dies nicht der Fall ist, reiche eine Verbesserungsanfrage mit ein OkHttp. – CommonsWare

Antwort

1

Dies ist das dokumentierte Verhalten von CertificatePinner. Fügen Sie also nur Pins für Ihr aktuelles und altes Zertifikat hinzu.

http://square.github.io/okhttp/3.x/okhttp/okhttp3/CertificatePinner.html#check-java.lang.String-java.util.List-

bestätigt, dass verstiftet peerCertificates mindestens eines der Zertifikate für den Hostnamen in . Nichts, wenn keine Zertifikate für Hostname gepinnt sind. OkHttp ruft dies nach einem erfolgreichen TLS-Handshake auf, aber bevor die Verbindung genutzt wird.

n.b. Da der Ablauf Ihrer Zertifikate möglicherweise vor der Aktualisierung alter Clients erfolgt, wird in der Regel empfohlen, auch für die von Ihnen verwendete Zertifizierungsstelle eine PIN festzulegen, die wahrscheinlich für alte und neue Zertifikate konsistent ist. Dies stellt sicher, dass Sie selbst dann, wenn Ihr aktuelles und nächstes Zertifikat abläuft oder widerrufen wird, in der Lage wären, sich mit einem neuen generierten Zertifikat und älteren Clients zu authentifizieren.

https://community.letsencrypt.org/t/hpkp-best-practices-if-you-choose-to-implement/4625