Google 크롬이 공통 기반을 가진 모든 URL을 SSL 연결로 처리하지 못하도록 방지

Google 크롬이 공통 기반을 가진 모든 URL을 SSL 연결로 처리하지 못하도록 방지

나는 ISP가 제공한 DNS 이름을 통해 여러 웹사이트를 호스팅하고 haproxy 설치를 사용하여 라우터의 포트 80 이상으로 웹사이트를 분할했습니다. 그 중 하나를 https로 변경할 때까지 내 고유한 웹 사이트(11개인 것 같습니다)에 매우 잘 작동했습니다.

이제 Google 크롬에서는 내 모든 웹사이트가 https라고 가정하고 https인 웹사이트에만 액세스할 수 있습니다. :-(

Chrome에서 이 작업을 수행하는 이유는 모든 웹사이트가 내 도메인 이름(myexampledomain.com)으로 시작하기 때문이라고 생각합니다. 예제 사이트 1은http://myexampledomain.com/website-one/main.html예제 사이트 2는 다음과 같습니다.https://myexampledomain.com/website-two/main.html어떤 이유로 Chrome이 https 링크에 성공적으로 액세스한 후 https가 아닌 링크는 자동으로 https로 액세스됩니다. http로 만들기 위해 s를 삭제하면 크롬이 다시 거기에 추가합니다.

Internet Explorer 9을 통해 내 웹 사이트에 액세스하면 모두 제대로 작동하거나 최소한 https로 자동 완성되는 연결 없이도 액세스할 수 있습니다. 아니요, 내 백엔드 어딘가에 http-to-https 리디렉션이 없습니다. 이것은 단지 크롬이 어리석은 것입니다. Chrome이 어리석은 이유와 Chrome에서 다른 사이트에 계속 액세스할 수 있는 방법이 있는지 아는 사람이 있나요? 나는 IE를 싫어하고 그것을 사용하면 신체적 고통을 겪습니다 ;-)

답변1

(우리의 토론을 적절한 답변으로 작성하기 위해 :)

Google Chrome(다른 모든 최신 브라우저와 함께)은 다음을 지원합니다.엄격한 운송 보안HTTP 헤더는 "이 사이트는 HTTPS를 통해서만 접속할 수 있으므로 앞으로는 사용자가 HTTP를 요청하더라도 대신 HTTPS를 제공하세요"라고 브라우저에 알리는 것입니다. HTTPS 사용이 점점 더 일반화됨에 따라 일반적으로 HTTPS가 설정된 경우(Strict-Transport-Security 헤더가 영향을 미치기 위해 필요함) 이 헤더를 보내는 것이 새로운 소프트웨어 및 프레임워크에서 기본값이 됩니다. , 모든 것에 사용하는 것이 바람직합니다. 발견한 바와 같이, 사용 중인 소프트웨어는 기본적으로 이러한 방식으로 작동하도록 구성되어 있습니다. Internet Explorer 9에서는 웹의 이 기능을 지원하기에는 너무 오래되었기 때문에 이러한 동작을 볼 수 없습니다.

두 가지 해결책은 (1) 모든 사용자가 HTTPS를 통해 이동하도록 강제하고 싶지 않기 때문에 헤더를 보내지 않도록 소프트웨어 구성을 변경하거나 (2) HTTPS를 통해 제대로 작동하도록 모든 사이트를 변경하는 것입니다. . 일반적으로 두 번째 옵션을 권장합니다. 일단 서버를 구성하고 작동하는 HTTPS 인증서를 사용하면 요즘 인터넷에서 암호화되지 않은 연결을 사용할 필요가 없기 때문입니다.

답변2

Peter Cooper Jr.의 논평 응답에 따르면 내 마음의 고통은 gitlab omnibus와 함께 번들로 제공되는 NGINX 설치로 인해 발생합니다. 이는 연결 클라이언트에게 통신할 때 항상 https만 사용해야 한다고 효과적으로 알려주며, Gitlab/NGINX의 경우 보안 통신 기간은 24개월로 설정되어 있습니다!

STS 헤더에 대한 정보:http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
Gitlab 설치 정보:https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md

관련 정보