421 잘못된 요청


11

때때로 다음과 같은 421 오류가 발생합니다.

잘못된 요청

요청 된 호스트 이름이이 연결에 사용중인 SNI (Server Name Indication)와 일치하지 않으므로 클라이언트는이 요청에 대한 새 연결이 필요합니다.

그러나 브라우저를 새로 고치면 오류가 해결되고 페이지가 정상적으로로드됩니다. 다음에 페이지를로드하면 오류가 발생하지 않으므로 패턴이 무작위로 보입니다. 내가 볼 수있는 유일한 패턴은 header ( "Location :". $ url);를 사용하여 페이지를 리디렉션 할 때 이런 일이 발생할 수 있다는 것입니다.

Comodo의 PositiveSSL 다중 도메인 인증서가 있습니다. 내 서버는 공유 웹 호스팅 서비스의 Apache이므로 구성에 액세스 할 수 없습니다.

한 도메인에서 페이지를로드하고 페이지 내에 인증서의 두 번째 도메인에 대한 링크가 있습니다.

이 오류와 관련하여 읽은 모든 것은이 문제가 다중 도메인 인증서와 관련이 있음을 나타냅니다.

내가 알고 싶은 것은 웹 페이지 (php) 코딩 측면 에서이 문제를 일으킬 수있는 문제가 있거나 (고정 될 수있는) 구성 오류이거나 서버 오류 일 수 있고 호스팅 서비스 만 할 수있는 것입니다 고치세요.

내 호스팅 서비스는 지금까지 아무것도 제공 할 수 없었으며 다음에 일어날 정확한 시간을 조사하여 그들이 조사 할 수 있도록 요청했습니다. 그들이 이것을 알아낼 수 있다고 지나치게 확신하지 못하므로 도움을 주시면 감사하겠습니다.

업데이트 확인은, 년의 거의 두 나중에 그것을 다루는라고 판단했습니다. 이미지와 자바 스크립트를 제공하는 정적 도메인을 제거하여 대부분의 문제를 해결할 수있었습니다. 그러나 나는 여전히이 내용 중 일부에 두 번째 도메인을 사용하고 있었고 특히 Safari에서 여전히 문제가 발생했습니다.

나는 더 많은 연구를했고 여기에 관한 다른 기사를 발견했다 . @Kevin이 정확히 설명하는 것. 기사는 Safari에서 발생했음을 확인했습니다. 따라서 조언을 받아 각 도메인마다 별도의 인증서를 얻는 방법을 설정했습니다. 나는 공유 호스트 (Webhostinghub)에 있으며 이제 자동 갱신되는 무료 SSL (AutoSSL)을 제공한다는 것을 알았습니다. 사실이 좋았다. 그들은 5 개의 무료 인증서를 설정했습니다. 여태까지는 그런대로 잘됐다. 정적 도메인을 다시 활성화하여 테스트하려고 할 수도 있습니다. 이 모든 것이 효과가 있다면 보너스로 부팅하기 위해 $를 절약하고 7 월에 Comodo 인증서가 만료되도록 할 것입니다.


동일한 Apache 서버에서 여러 웹 사이트를 호스팅하고 동일한 SSL 인증서를 사용하고 있으며 이러한 도메인 이름간에 전환 할 때 오류가 발생합니까?
John Hanley

대답이 예이면 각 도메인의 IP 주소가 동일한 가상 서버에 매핑되는지 확인하십시오. 예인 경우 두 가지를 선택할 수 있습니다 (생각할 수 있음). 1) 각 도메인 이름에 대해 별도의 SSL 인증서를 발급합니다. 2) 각 도메인의 웹 서버를 다른 서버 (다른 IP 주소)로 이동하십시오. 공유 호스팅 상태 인 경우 옵션 1이 최상의 솔루션 일 수 있습니다. Let 's Encrypt를 사용하여이 솔루션을 테스트하여 다른 웹 서버에 설치할 무료 인증서를 여러 개 발급 할 수 있습니다.
John Hanley

mod_http2를 비활성화 할 수 있는지 호스팅 제공 업체에 문의하십시오.
John Hanley

@JohnHanley-re # 1, 예. 6 개의 도메인이있는 동일한 SSL입니다. 언제 오류가 발생했는지 정확하게 말하기는 쉽지 않습니다. 주요 시나리오는 한 도메인에서 다른 두 도메인에서 콘텐츠 (이미지 및 js)를 가져 오는 것입니다. 다시 # 2 : IP 주소는 동일합니다. 각 도메인 이름이 상당히 비싸다는 별도의 인증서를 발급합니다. Let 's Encrypt를 살펴 보았지만 제공자가 지원하지 않습니다. 내 공급자는 지난 6 개월 동안 무료 인증서를 제공 했으므로 이번 달에 갱신이 이루어지면 전환하여 어떻게되는지 확인할 것입니다. 다시 # 3-그들은 mod_http2를 비활성화 할 수 없습니다. 감사합니다
mseifert 2016 년

실제로 모든 공급자는 구체적으로 차단하지 않는 한 Let 's Encrypt를 지원합니다. SSL 인증서는 어디서 구 하든지 동일합니다. 유일한 차이점은 유효성 검사 유형 (DV, OV, EV)과 파일 패키징 / 형식입니다. 아파치 (Apache)는 매우 인기가있어서 모두가 그들을 지원합니다. 공급 업체가 자신의 인증서 (인증서 및 개인 키) 업로드를 지원하는 한 DNS 유효성 검사를 사용하여 문제를 해결할 수 있습니다. 그들이 당신의 자신의 인증서 업로드를 지원하지 않으면, 나는 공급 업체를 전환합니다.
John Hanley

답변:


14

다음과 같은 일련의 이벤트가 발생합니다.

  1. 서버와 클라이언트는 모두 HTTP / 2를 지원하고 사용합니다.
  2. 클라이언트가에서 페이지를 요청합니다 foo.example.com.
  3. TLS 협상 중에 서버는 모두 유효한 인증서를 제시 foo.example.com하고을 bar.example.com(클라이언트는 그것을 받아 들인다). 와일드 카드 인증서 또는 SAN 인증서를 사용하여 수행 할 수 있습니다.
  4. 클라이언트는 연결을 재사용하여에 대한 요청을 bar.example.com합니다.
  5. 서버가 도메인 간 연결 재사용을 지원할 수 없거나 지원하지 않을 것입니다 (예 : SSL을 다르게 구성 하고 Apache가 TLS 재협상을 강요하려고하기 때문에 ). HTTP 421을 제공합니다.
  6. 클라이언트는 새로운 연결로 자동 재 시도하지 않습니다 (예 : 수정 된 Chrome 버그 # 546991 참조 ). 관련 RFC는 클라이언트가되지는 SHOULD 또는 MUST 것을 시도 수도 있다고 말한다. 재시도 실패는 특히 사용자에게 친숙하지는 않지만 디버깅 도구 또는 HTTP 라이브러리에 바람직 할 수 있습니다.

이벤트 # 6은 제어 할 수 없지만 서버의 소프트웨어에 따라 # 5는 수정 가능할 수 있습니다. 서버가 HTTP 421을 전송하는 방법과시기에 대한 자세한 정보는 서버의 HTTP / 2 문서를 참조하십시오. 또는 각 도메인에 대해 별도의 인증서를 발행 할 수 있지만 더 많은 관리 오버 헤드가 발생하여 가치가 없을 수 있습니다. HTTP / 2를 완전히 끌 수도 있지만 대부분의 경우 너무 과잉 일 수 있습니다.


Comodo PositiveSSL 다중 도메인 인증서가 있습니다. 실제로 단일 SSL 인증서입니다. 별도의 인증서를 사용하는 것은이 시점에서 상당한 노력 및 / 또는 비용입니다. 주요 문제는 쿠키를 사용하지 않는 정적 도메인을 사용하여 내 이미지를 제공하려고 시도하는 데 발생했습니다. 내가 얻는 421s의 가치가 없었습니다. 당분간 정적 도메인을 비활성화했습니다. 도메인간에 리소스를 일부 공유하고 있지만 421 개의 수가 급격히 떨어졌습니다. 현재 예상되는 가치가 없습니다. 언젠가 시간이 더 있으면 추천을 테스트 해 보겠습니다.
mseifert

자세한 설명 감사합니다. 이것은 꽤 성가신 문제이지만 (Safari를 사용할 때만 눈에
띄게 나타납니다

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

Apache와 함께 Debian 10을 사용하는 일부 웹 사이트에서 Safari (데스크톱 및 iPhone)와 동일한 문제가 관찰되었습니다.

소프트웨어:

  • 데비안 10
  • HTTP / 2를 사용하는 Apache2 2.4.38-3 + deb10u3
  • php-fpm을 사용하는 PHP 7.3.14-1 ~ 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 특정 디렉토리에 복사하기 전에 이로 인해 Safari에서만 잘못된 요청 동작 이 발생합니다 .

불행히도, 나는 왜 당신을 설명 할 수 없습니다 :-( (Apache2 버그? Safari 버그? Safari 기능?)


-1

나는 같은 문제가 있었다. 두 개의 단일 슬롯 SSL로 전환하는 것이 트릭이었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.