Technology sharing

Explicatio Okhttp hostnameVerifier

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Methodus introductionis

Hoc blog stipes resolvitur per Okhttp 4.6.0hostnameVerfierUt nomen sonat, principale munus huius methodi est cognoscerehostnname legalium. Okhttp configurare possumus ipsi in initializationhostnameVerfier

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();

sedEst multum informationes online aboutverfiyRevera vera directe valde periculosa est.Utique, si verificare redit fasle, significat verificationem hostname et deesse et http petitio impetrare non potest. Exempli gratia, si petitionem cum inscriptione diarii incipiam, error nuntius hoc modo est:
Insert imaginem descriptionis hic

{http errorCode=-500, mErrorMsg=Hostname yanchen.blog.csdn.net not verified:
    certificate: sha256/tlnf6pbfeu257hnJ9e6j4A1ZWH3vVMzn3Zn3F9kLHdg=
    DN: CN=*.blog.csdn.net
    subjectAltNames: [*.blog.csdn.net]}

De loco ubi vertify supplicium est inRealConnectionIntus, post supplicium.
Insert imaginem descriptionis hic

Praeter customizationhostnameVerfierPraeterea, Okhttp praebet exsecutionem defaltam. Nunc principia interna resolvere.

Core principia

OkHostnameVerifier aedificatur in Okhttp, et haec methodus transitsession.peerCertificates[0] as X509CertificateAccipere libellum object

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() -