2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Dieser Blogbeitrag wird mit Okhttp 4.6.0 analysierthostnameVerfier
Wie der Name schon sagt, besteht die Hauptfunktion dieser Methode in der Identifizierunghostnname
der Legalität. Wir können Okhttp während der Initialisierung selbst konfigurierenhostnameVerfier
:
new OkHttpClient.Builder()
.connectTimeout(20, TimeUnit.SECONDS)
.readTimeout(20, TimeUnit.SECONDS)
.writeTimeout(35, TimeUnit.SECONDS)
.hostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
//注意这里在生产环境中千万不要直接写死true
return true;
}
})
.build();
AberEs gibt online viele Informationen darüberverfiy
Die direkte Rückgabe von „true“ ist sehr gefährlich.Wenn vertify „fasle“ zurückgibt, bedeutet dies natürlich, dass die Überprüfung des Hostnamens fehlschlägt und die http-Anfrage nicht erfolgreich sein kann. Wenn ich beispielsweise eine http-Anfrage mit meiner Blog-Adresse initiiere, lautet die Fehlermeldung wie folgt:
{http errorCode=-500, mErrorMsg=Hostname yanchen.blog.csdn.net not verified:
certificate: sha256/tlnf6pbfeu257hnJ9e6j4A1ZWH3vVMzn3Zn3F9kLHdg=
DN: CN=*.blog.csdn.net
subjectAltNames: [*.blog.csdn.net]}
Der Ort, an dem Vertify ausgeführt wird, istEchte VerbindungDrinnen, nach der Hinrichtung.
Zusätzlich zur IndividualisierunghostnameVerfier
Darüber hinaus bietet Okhttp eine Standardimplementierung. Lassen Sie uns nun die internen Prinzipien analysieren.
OkHostnameVerifier ist in Okhttp integriert und diese Methode wird erfolgreich ausgeführtsession.peerCertificates[0] as X509Certificate
Holen Sie sich das Zertifikatobjekt
override fun verify(host: String, session: SSLSession): Boolean {
return try {
verify(host, session.peerCertificates[0] as X509Certificate)
} catch (_: SSLException) {
false
}
}
fun verify(host: String, certificate: X509Certificate): Boolean {
return when {
host.canParseAsIpAddress() -