प्रौद्योगिकी साझेदारी

Okhttp hostnameVerifier इत्यस्य विस्तृतव्याख्यानम्

2024-07-08

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

विधि परिचय

अस्य ब्लॉग्-पोस्ट्-विश्लेषणं Okhttp 4.6.0 इत्यस्य उपयोगेन कृतम् अस्तिhostnameVerfierयथा नाम सूचयति, अस्य पद्धतेः मुख्यं कार्यं परिचयः एवhostnname वैधानिकतायाः । आरम्भीकरणस्य समये वयं स्वयमेव Okhttp विन्यस्तुं शक्नुमःhostnameVerfier

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

किन्तुअत्र बहुधा सूचनाः अन्तर्जालद्वारा अस्तिverfiyप्रत्यक्षतया सत्यं प्रत्यागन्तुं अतीव भयङ्करं भवति।अवश्यं, यदि vertify fasle प्रेषयति, तर्हि तस्य अर्थः अस्ति यत् hostname सत्यापनम् विफलं भवति तथा च http अनुरोधः सफलः न भवितुम् अर्हति उदाहरणार्थं, यदि अहं मम ब्लॉग-सङ्केतेन http अनुरोधं आरभते तर्हि त्रुटिसन्देशः निम्नलिखितरूपेण भवति ।
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

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

यत्र verify निष्पादितं भवति तत् स्थानं अत्र अस्तिRealConnection इतिअन्तः, निष्पादनानन्तरं ।
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

अनुकूलनस्य अतिरिक्तंhostnameVerfierतदतिरिक्तं Okhttp पूर्वनिर्धारितं कार्यान्वयनम् अयच्छति अधुना आन्तरिकसिद्धान्तानां विश्लेषणं कुर्मः ।

मूलसिद्धान्ताः

OkHostnameVerifier Okhttp मध्ये निर्मितम् अस्ति, एषा विधिः च गच्छतिsession.peerCertificates[0] as X509Certificateप्रमाणपत्रवस्तुं प्राप्नुवन्तु

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