421 गलत अनुरोधित


11

मुझे कभी-कभी निम्न 421 त्रुटि मिलती है:

गलत अनुरोध किया गया

क्लाइंट को इस अनुरोध के लिए एक नए कनेक्शन की आवश्यकता है क्योंकि अनुरोधित होस्ट नाम इस कनेक्शन के लिए उपयोग में सर्वर नाम संकेत (SNI) से मेल नहीं खाता है।

हालाँकि, ब्राउज़र को रीफ्रेश करने से त्रुटि साफ हो जाती है और पेज सामान्य रूप से लोड हो जाता है। अगली बार पेज लोड करने पर उत्पादन और त्रुटि नहीं होगी और जैसा कि पैटर्न बहुत यादृच्छिक लगता है। केवल एक ही पैटर्न मैं देख सकता हूं कि यह तब हो सकता है जब मैं हेडर ("स्थान:"। $ url) का उपयोग करके किसी पृष्ठ को पुनर्निर्देशित कर रहा हूं;

मेरे पास कोमोडो से पॉजिटिवएलएल मल्टी-डोमेन सर्टिफिकेट है। मेरे सर्वर एक साझा वेब होस्टिंग सेवा पर अपाचे हैं इसलिए मुझे कॉन्फ़िगरेशन तक पहुंच नहीं है।

मैं पृष्ठों को एक डोमेन से लोड करता हूं और पृष्ठ के भीतर प्रमाणपत्र पर दूसरे डोमेन के लिंक होते हैं।

इस त्रुटि के बारे में मैंने जो कुछ भी पढ़ा है वह इस समस्या को इंगित करता है कि यह एक बहु-डोमेन प्रमाणपत्र से संबंधित है।

मैं जानना चाहूंगा कि क्या वेब पेज (php) पर कुछ भी है जो चीजों के कोडिंग पक्ष है जो इसका कारण बन सकता है (और तय किया जा सकता है) या यदि यह एक कॉन्फ़िगरेशन त्रुटि है या संभवतः एक सर्वर त्रुटि है और केवल मेरी होस्टिंग सेवा हो सकती है इसे ठीक करो।

मेरी होस्टिंग सेवा अब तक कुछ भी प्रदान करने में असमर्थ रही है और अनुरोध किया गया है कि यह ठीक उसी समय के साथ हो सकता है जब यह अगली बार होता है इसलिए वे इसे शोध कर सकते हैं। किसी भी मदद की सराहना की जाएगी क्योंकि मुझे विश्वास नहीं है कि वे यह पता लगा सकते हैं।

अद्यतन ठीक है, लगभग दो साल बाद और तय किया गया कि इससे निपटने का समय आ गया है। मैं अपने स्थिर डोमेन को हटाकर ज्यादातर समस्याओं को हल करने में सक्षम था जो छवियों और जावास्क्रिप्ट की सेवा करते थे। हालाँकि, मैं अभी भी इस सामग्री में से कुछ के लिए एक दूसरे डोमेन का उपयोग कर रहा था और विशेष रूप से सफारी अभी भी मुझे समस्याएं दे रहा था।

मैंने अधिक शोध किया और एक अन्य लेख के बारे में आया जो यहां इसके बारे में बात करता है । वास्तव में @ केविन क्या वर्णन करता है। लेख ने पुष्टि की कि यह सफारी में होता है। इसलिए सलाह लेते हुए, मैंने प्रत्येक डोमेन के लिए अलग प्रमाण पत्र प्राप्त करने के बारे में निर्धारित किया। मैं एक साझा होस्ट (वेबहोस्टिंगहब) पर हूं और उन्होंने पाया कि अब वे मुफ्त एसएसएल (ऑटोएसएसएल) की पेशकश करते हैं जो ऑटो नवीनीकरण करता है। यह सच होने के लिए अच्छा लग रहा था। उन्होंने मुझे 5 निःशुल्क प्रमाण पत्र दिए। अब तक सब ठीक है। मैं परीक्षण करने के लिए स्थिर डोमेन को फिर से सक्षम करने का भी प्रयास कर सकता हूं। अगर यह सब काम करता है, तो मैं $ को एक बोनस के रूप में बूट करने के लिए बचाऊंगा और जुलाई में अपने कोमोडो प्रमाणपत्रों को समाप्त कर दूंगा।


क्या आप एक ही Apache सर्वर पर कई वेबसाइटों की मेजबानी कर रहे हैं और उसी SSL प्रमाणपत्र का उपयोग कर रहे हैं और इन डोमेन नामों के बीच स्विच करते समय त्रुटि होती है?
जॉन हैनली

यदि उत्तर हां है, तो जांचें कि क्या प्रत्येक डोमेन मैप के लिए आईपी पता उसी वर्चुअल सर्वर पर है। यदि हां, तो आपके पास दो विकल्प हैं (कि मैं सोच सकता हूं): 1) प्रत्येक डोमेन नाम के लिए अलग एसएसएल प्रमाणपत्र जारी करें। 2) प्रत्येक डोमेन के लिए वेब सर्वर को अलग-अलग सर्वर (अलग-अलग आईपी पते) पर ले जाएं। यह देखते हुए कि आप साझा होस्टिंग पर हैं, विकल्प 1 शायद सबसे अच्छा समाधान है। आप अन्य वेब सर्वर पर स्थापित करने के लिए कई नि: शुल्क प्रमाण पत्र जारी करने के लिए एनक्रिप्ट एनक्रिप्ट का उपयोग करके इस समाधान का परीक्षण कर सकते हैं।
जॉन हैनले

अपने होस्टिंग प्रदाता से पूछें कि क्या वे mod_http2 को अक्षम कर सकते हैं।
जॉन हैनली

@ जोहानले - री # 1, हाँ यह वही SSL है जिसमें 6 डोमेन हैं। त्रुटि कब होती है यह ठीक-ठीक बताना आसान नहीं है। मुख्य परिदृश्य यह है कि मैं एक डोमेन पर दो अन्य डोमेन से सामग्री (चित्र और js) खींच रहा हूं। # 2 पुन: आईपी पते निश्चित रूप से एक ही है - मैं अलग प्रमाण पत्र जारी करने इकट्ठा प्रत्येक डोमेन नाम काफी अधिक महंगा होगा। मैंने लेट्स एनक्रिप्ट में देखा लेकिन यह मेरे प्रदाता द्वारा समर्थित नहीं है। मेरे प्रदाता के पास पिछले 6 महीनों में मुफ्त प्रमाण पत्र दिए गए हैं, इसलिए जब इस महीने नवीनीकरण होगा, तो मैं स्विच करूंगा और देखूंगा कि क्या होता है। री # 3 - वे mod_http2 को अक्षम नहीं कर सकते। धन्यवाद
mseifert

दरअसल, जब तक वे विशेष रूप से इसे ब्लॉक नहीं करते हैं, तब तक सभी प्रदाता लेट्स एनक्रिप्ट का समर्थन करते हैं। एसएसएल सर्टिफिकेट वही हैं जो आपको मिलते हैं। एकमात्र अंतर सत्यापन का प्रकार (डीवी, ओवी, ईवी) और फ़ाइल पैकेजिंग / प्रारूप है। अपाचे इतना लोकप्रिय है कि हर कोई उनका समर्थन करता है। जब तक आपका विक्रेता आपको अपना स्वयं का प्रमाण पत्र (प्रमाण पत्र और निजी कुंजी) अपलोड करने का समर्थन करता है, तब तक आप उनके चारों ओर पाने के लिए DNS सत्यापन का उपयोग कर सकते हैं। यदि वे आपके स्वयं के प्रमाणपत्र को अपलोड करने का समर्थन नहीं करते हैं, तो मैं विक्रेताओं को बंद कर दूंगा।
जॉन हैनली

जवाबों:


14

यह घटनाओं के निम्नलिखित अनुक्रम के कारण होता है:

  1. सर्वर और क्लाइंट दोनों HTTP / 2 का समर्थन और उपयोग करते हैं।
  2. क्लाइंट एक पेज पर अनुरोध करता है foo.example.com
  3. टीएलएस बातचीत के दौरान सर्वर ने ऐसा प्रमाणपत्र है जो दोनों के लिए मान्य है प्रस्तुत करता है foo.example.comऔर bar.example.com(और ग्राहक यह स्वीकार करता है)। यह वाइल्डकार्ड प्रमाणपत्र या सैन प्रमाणपत्र के साथ किया जा सकता है।
  4. क्लाइंट कनेक्शन के लिए अनुरोध करने के लिए पुन: उपयोग करता है bar.example.com
  5. सर्वर क्रॉस-डोमेन कनेक्शन का पुन: उपयोग करने में असमर्थ या अनिच्छुक है (उदाहरण के लिए क्योंकि आपने उनके एसएसएल को अलग तरीके से कॉन्फ़िगर किया है और अपाचे टीएलएस रीनेगोशिएशन को मजबूर करना चाहता है), और HTTP 421 परोसता है।
  6. ग्राहक स्वचालित रूप से एक नए कनेक्शन के साथ पुन: प्रयास नहीं करता है (उदाहरण के लिए Chrome बग # 546991 , अब ठीक किया गया है)। प्रासंगिक आरएफसी का कहना है ग्राहक पुन: प्रयास कर सकते हैं, नहीं यह होना चाहिए या चाहिए। रिट्रीट करने में असफल होना विशेष रूप से उपयोगकर्ता के अनुकूल नहीं है, लेकिन डिबगिंग टूल या HTTP लाइब्रेरी के लिए वांछनीय हो सकता है।

इवेंट # 6 आपके नियंत्रण से बाहर है, लेकिन सर्वर के सॉफ़्टवेयर के आधार पर, # 5 निश्चित हो सकता है। HTTP 421 को कैसे और कब भेजता है, इस बारे में अधिक जानकारी के लिए अपने सर्वर के HTTP / 2 प्रलेखन से परामर्श करें। वैकल्पिक रूप से, आप प्रत्येक डोमेन के लिए अलग प्रमाण पत्र जारी कर सकते हैं, लेकिन यह अधिक प्रशासनिक ओवरहेड बनाता है और इसके लायक नहीं हो सकता है। आप HTTP / 2 को पूरी तरह से बंद भी कर सकते हैं, लेकिन यह ज्यादातर मामलों में ओवरकिल है।


मेरे पास कोमोडो पॉज़िटिवएलएल मल्टी-डोमेन प्रमाणपत्र है - जो वास्तव में एक एसएसएल प्रमाणपत्र है। अलग-अलग प्रमाणपत्रों पर जाना इस बिंदु पर एक महत्वपूर्ण प्रयास और / या खर्च है। मेरी छवियों की सेवा के लिए स्थिर कुकियललेस डोमेन रखने के प्रयास के साथ मुख्य समस्याएं आ रही थीं। यह 421 की संख्या के लायक नहीं था जो मुझे मिल रहा था। कुछ समय के लिए, मैंने स्थैतिक डोमेन को निष्क्रिय कर दिया है। मेरे पास अभी भी डोमेन के बीच संसाधनों का कुछ हिस्सा है, लेकिन 421 की संख्या में भारी गिरावट आई है। वर्तमान में माना दक्षता के लायक नहीं है। किसी दिन, जब मेरे पास अधिक समय होगा, तो मैं आपकी सिफारिश का परीक्षण करूँगा।
mseifert

विस्तृत विवरण के लिए धन्यवाद। हालांकि यह काफी कष्टप्रद समस्या है (और आप सफारी का उपयोग करते समय केवल इसे नोटिस करते हैं, बड़े पैमाने पर), मुझे उन घटनाओं की श्रृंखला मिलती है जो इस समस्या को काफी रोचक
बनाते हैं

1

शायद यह किसी के लिए मददगार होगा।

मुझे यह त्रुटि तब मिली जब मैंने अपने अपाचे वर्चुअल होस्ट कॉन्फ़िगरेशन को HTTPS में बदलने की कोशिश की, लेकिन केवल 80 से 443 में पोर्ट बदल दिया और जोड़ना भूल गया

   SSLEngine on
   SSLCertificateFile "/opt/lampp/htdocs/localhost.crt"
   SSLCertificateKeyFile "/opt/lampp/htdocs/localhost.key"

कॉन्फ़िगरेशन के कारण त्रुटि 421:

<VirtualHost mydoamin.local:443>   <-- fistly I 
       DocumentRoot "/opt/lampp/htdocs/mydomain/"
       ServerName www.mydomain.local
</VirtualHost>

सही कॉन्फ़िगरेशन:

<VirtualHost mydoamin.local:443>
       DocumentRoot "/opt/lampp/htdocs/mydomain/"
       ServerName www.mydomain.local
       SSLEngine on
       SSLCertificateFile "/opt/lampp/htdocs/localhost.crt"
       SSLCertificateKeyFile "/opt/lampp/htdocs/localhost.key"
</VirtualHost>

0

हमने अपाचे के साथ डेबियन 10 का उपयोग करते हुए कुछ वेबसाइटों पर सफारी (डेस्कटॉप और आईफोन) के साथ एक ही मुद्दा देखा।

सॉफ्टवेयर:

  • डेबियन 10
  • Apache2 2.4.38-3 + deb10u3 HTTP / 2 के साथ
  • PHP 7.3.14-1 php-fpm के साथ deb10u1

डोमेन:

  • www.example.com
  • a.example.com
  • b.example.com
  • सभी डोमेन एक ही DocumentRoot को इंगित कर रहे हैं

प्रमाणपत्र:

  • सभी प्रयुक्त डोमेन के लिए एक प्रमाणपत्र
  • जारीकर्ता DFN PKI है

समाधान काफी आसान था लेकिन इसे खोजने के लिए बहुत प्रयास किए गए। अंत में यह एक त्रुटि थी।

कॉन्फ़िगरेशन के कारण त्रुटि 421:

    # in /etc/apache2/site-enabled/www.example.com.conf
    SSLCertificateFile      /etc/apache2/ssl/www.example.com/cert-123.pem
    SSLCertificateKeyFile   /etc/apache2/ssl/www.example.com/www.example.com.key

    # in /etc/apache2/site-enabled/a.example.com.conf
    SSLCertificateFile      /etc/apache2/ssl/a.example.com/cert-123.pem
    SSLCertificateKeyFile   /etc/apache2/ssl/a.example.com/www.example.com.key

    # in /etc/apache2/site-enabled/b.example.com.conf
    SSLCertificateFile      /etc/apache2/ssl/b.example.com/cert-123.pem
    SSLCertificateKeyFile   /etc/apache2/ssl/b.example.com/www.example.com.key

कार्य विन्यास:

    # in /etc/apache2/site-enabled/www.example.com.conf
    SSLCertificateFile      /etc/apache2/ssl/www.example.com/cert-123.pem
    SSLCertificateKeyFile   /etc/apache2/ssl/www.example.com/www.example.com.key

    # in /etc/apache2/site-enabled/a.example.com.conf
    SSLCertificateFile      /etc/apache2/ssl/www.example.com/cert-123.pem
    SSLCertificateKeyFile   /etc/apache2/ssl/www.example.com/www.example.com.key

    # in /etc/apache2/site-enabled/b.example.com.conf
    SSLCertificateFile      /etc/apache2/ssl/www.example.com/cert-123.pem
    SSLCertificateKeyFile   /etc/apache2/ssl/www.example.com/www.example.com.key

समाधान (हमारे मामले में): यह एक ही प्रमाण पत्र और निजी कुंजी को विभिन्न स्थानों पर कॉपी करने की अनुमति नहीं है!

इससे पहले कि हम एक VirtualHost विशिष्ट निर्देशिका में प्रमाण पत्र की नकल करें। यह केवल सफारी के साथ Misdirected अनुरोध व्यवहार में परिणाम है ।

दुर्भाग्य से, मैं आपको समझा नहीं सकता, क्यों :-( (Apache2 बग? सफारी बग? सफारी सुविधा?)


-1

मेरी भी यही समस्या थी। दो एकल-स्लॉट एसएसएल पर स्विच करने से चाल चली गई।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.