ISP가 포트 80을 차단할 때 모든 HTTP 요청을 HTTPS로 리디렉션하려면 어떻게합니까?


2

집에서 HTTPS 웹 서버를 실행하고 있지만 한 가지 주요 결함이 있습니다. 포트 80을 사용하여 연결할 수 없습니다. ISP (Cox)가 포트 80을 차단 (수신)하지만 할 수있는 일은 없지만 운 좋게도 나를 위해 그들은 포트 443을 차단하지 않았습니다. 따라서 순수한 HTTPS 서버를 사용하기로 선택했지만 내 (HTTPS) 서버로 리디렉션하려는 몇 가지 사항이 있기 때문에 제대로 작동하지 않습니다.

http://www.example.com/ redirects to https://www.example.com/

http://example.com/ redirects to https://www.example.com/

https://example.com/ redirects to https://www.example.com/

마지막으로,로드 블록 : 은 내 동적 DNS 인 https://www.example.com/(CNAME)을 가리 킵니다 powe.ddns.net. 시도했지만 URL과 CNAME 레코드를 혼합하거나 CNAME을 IP의 단일 포트만 가리 키도록 만들 수 없습니다.

지금까지 모든 리디렉션을 https://ww2.example.com/홈 서버로 가져 와서 그 시점을 갖지만 HTTPS를 HTTPS로 리디렉션 할 수 없기 때문에 https://www.example.com/리디렉션 할 https://ww2.example.com/수 없습니다.

지금까지 내가 찾은 모든 솔루션은 열려 있지 않은 포트 80에 의존합니다. 그래서 내가 무엇을 할 수 있니? 가능한 솔루션으로는 HTTPS에서 HTTPS 로의 리디렉션, 포트 특정 DNS 및 From에서 HTTPS URL 전달이 있습니다 (HTTP에서 HTTP로 또는 HTTP에서 HTTPS로 URL 전달 만 찾았습니다). 감사합니다!


HTTP 서버에 연결할 때 애플리케이션이 예상하는 응답 유형은 HTTPS 서버가 제공하는 응답 유형과 매우 다릅니다. 따라서 포트 리디렉션을 통해 HTTP 요청을 HTTPS로 리디렉션하는 것만으로는 작동하지 않습니다. 저의 추천은 싼 VPS를 빌려서 해킹에 의존하지 않고 웹 컨텐츠를 올바르게 호스팅 할 수 있도록하는 것입니다. 이 경로를 사용하지 않으려면 잠재적 인 방문자에게 HTTPS를 통해 웹 서버에 액세스하도록 지시해야합니다. 그런 다음 웹 브라우저는 기본적으로 포트 443을 통해 요청을 자동으로 보냅니다.
Larssend

예, HSTS를 사용할 때 https : // ***를 강제 실행하면 나에게 큰 도움이됩니다. 내가 원하는 것은 사이트를 방문하는 사람들이 포트 80으로 이동하여 사이트의 https : // 버전으로 리디렉션되도록하는 것입니다. 리버스 프록시가 IP 주소 대신 포트를 사용하여 DNS가 수행하는 작업을 수행 할 수 있으므로 작동하지만 "역 프록시 제공 업체"는 알 수 없습니다.
BoomBoomPowe

답변:


1

글쎄, 가능하다는 것이 밝혀졌습니다. CloudFlare의 CDN을 사용하면 여기에 표시된 "Always Use HTTPS"기능을 사용하여 네트워크 수준에서 자동 HTTPS 리디렉션을 수행 할 수 있습니다.

Cloudflare HTTPS 다시 쓰기

요청이 서버에 도달하기 전에 발생 하며 프리 티어에 사용할 수 있습니다 . 매번 다시 쓰지 않으려면 HSTS를 켤 수도 있습니다.


1
당신이 그것을 작동하게되어 기쁘다. CloudFlare를 사용하지는 않았지만 CDN으로서 가능할 수 있습니다. 알아 둘만 한!
Anaksunaman

1
당신은 또한에서 재 작성 작업을 수행 할 수 있습니다 http://www.example.net/page_herehttp://www.example.net:8080/page_here당신이 원한다면,하지만 어느 쪽이든, 그것은 매우 유용합니다!
BoomBoomPowe

그들이 반대로 할 수있는 확률은 무엇입니까? 내 ISP는 80이 아니라 포트 443을 차단하고 있습니다.
Jersh

0

어쨌든 타사가 관여하지 않고 포트 80을 차단하면 일반적으로 자세히 설명하는 것이 불가능하므로 저렴한 호스팅을 조사하는 것이 좋습니다.

필수는 아니지만 사이트를 계속 호스팅 할 수 있지만 아래 두 가지 옵션 중 하나를 사용하는 것이 거의 확실합니다.

별도의 동적 DNS 공급자 하위 도메인과 함께 DNS 서비스 사용

게시물의 세부 사항에서 HTTP 요청을 HTTPS로 리디렉션하는 문제에 대해 example.com 의 DNS 공급자가 이를 용이하게 한다고 가정합니다 . 이것을 https://powe.ddns.net 으로 리디렉션한다고 가정하면 URL 리디렉션을 통해 직접 수행합니다.

    www.example.com --> https://powe.ddns.net

    example.com --> https://powe.ddns.net

추가 HTTPS 리디렉션이 필요하지 않습니다.

동적 DNS 공급자와 함께 직접 도메인 사용

하위 도메인을 할당하는 동적 DNS 서비스는 유용하지만 동적 DNS 클라이언트가 있고 도메인을 사용할 수있는 DNS 공급자 (현재 등록 기관 또는 타사)를 조사 할 수 있습니다 (예 : https : // example). co.kr ) 해당 서비스와 직접 연결됩니다.

HTTP 리디렉션에 대한 HTTPS, 80 포트를 사용할 수와 일반적으로 수 있지만 (예 : http://example.com -> https://example.com 귀하의 경우 것은) URL 리디렉션 기록하기 때문에, 타사의 개입없이 불가능하며 기본 DNS A 레코드는 주어진 항목에 대한 IP 주소와 관련된 문제를 생성합니다 (비 HTTPS URL을 사용하면 잘림).

업데이트 : OP 당 자체 응답으로 CloudFlare는 포트 80에 대한 요청을 가로 채서 포트 443으로 리디렉션합니다 . 동적 DNS 클라이언트도 있습니다.

CloudFlare 사용에 관계없이 일반적으로 어느 방식 으로든 도메인의 HTTPS 버전을 계속 사용할 수 있습니다.

CloudFlare를 사용하지 않고 https://example.comhttps://www.example.com으로 리디렉션하는 경우 솔루션은 서버 IP를 직접 가리키고 서버 자체에서 www가 아닌 ​​요청과 www 요청을 정렬하는 것 입니다.

아직 그렇게하지 않았다면 서버의 올바른 IP를 직접 가리키는 두 개의 A 레코드를 작성하십시오.

    example.com.   IN A   99.100.101.102

    www            IN A   99.100.101.102

HTTPS를 사용하여 액세스하십시오. 이 레코드의 정확한 형식에 대해서는 DNS 제공 업체에 문의하십시오.

동적 DNS 클라이언트가 두 항목 모두에 대해 IP를 업데이트 할 것임을 인식해야 할 수도 있습니다.

다음으로 Apache에서 https://example.comhttps://www.example.com으로 리디렉션 하십시오 . 간단하게하기 위해 다음을 사용할 수 있습니다.

    Redirect / https://www.example.com

https://example.com 의 HTTPS 가상 호스트 내부 , 특히 SEO 목적으로 다른 리디렉션 옵션 (예 : 301, 302)을 사용할 수 있습니다.

증명서

인증서에 대한 간단한주의로, 기억 https://www.example.com이 의 하위 도메인입니다 https://example.com은 당신이 브라우저 오류없이 모두 작업 할 경우, 당신은 필요 하나 :

자체 서명되지 않은 무료 인증서가 필요한 경우 Let 's Encrypt에서 발급 한 인증서를 선택할 수 있습니다 . 웹 사이트에는 인증서 요청 또는 관리를위한 직접 인터페이스가 없지만 ZeroSSL 에는 웹 인터페이스와 명령 줄 클라이언트 (Perl 스크립트 및 Windows 바이너리)가 있습니다. 사용 가능한 다른 클라이언트도 있습니다 .

Let 's Encrypt 인증서의 유일한 단점은 짧아서 (90 일만) 현재 와일드 카드 인증서를 발급하지 않는다는 것입니다. 인증서 발급에는 속도 제한이 있지만 현재는 상당히 합리적 입니다.

브라우저 내 URL

URL을 "마스킹"하여 브라우저 주소 표시 줄에서 전혀 변경되지 않을 수 있지만, 종종 프레임에 별도의 서버로드 컨텐츠가 필요하거나 숫자에 따라 작동하거나 작동하지 않을 수있는 mod_rewrite를 창의적으로 사용해야합니다. 요인.

HTTPS의 경우, 마스킹은 잠재적으로 (주로 보안을 위해) 의도 한대로 작동하는 HTTPS를 손상시킬 수 있습니다. 즉, URL을 최소한으로 변경하여 만족할 수 있다면 (예 : http : // https : //가되거나 https://example.comhttps://www.example.com 서버 측으로 리디렉션 ), 위에서 설명한대로 동적 DNS 공급자와 직접 example.com을 사용하여 해당 경로를 선택합니다.

SEO 고려 사항

www 버전과 www가 아닌 ​​버전의 사이트는 SEO 목적으로 콘텐츠가 중복 된 별도의 도메인으로 간주 될 수 있습니다 (검색 엔진으로 색인 생성). 당신은 귀하의 콘텐츠가 제대로 의해 예 색인 싶다면 그에 따라 조치를 취 할 수 있습니다 구글 )


이것은 내가 사용했던 것이지만 URL 리디렉션을 사용하지 않으려는 이유는 URL 리디렉션을 시작과 다른 것으로 변경하기 때문입니다. 어느 쪽이든, URL을 시작과 다른 것으로 변경하도록 강제합니다. 나는 이미 freedns.afraid.org내가 가지고있는 설정을 얻는 방법 인 DNS를 이미 사용 하고 있지만 사이트에 액세스 할 때마다 URL을 변경하는 것은 성가신 일입니다. 이것을 피할 수 있습니까?
BoomBoomPowe

나는 이것을 시도했지만 URL레코드와 함께 A또는 AAAA레코드를 함께 사용하는 것은 불가능합니다. 여기서 문제는 URL레코드를 만들 때 모든 트래픽을 을 보내는 더미 웹 서버로 전달 한다는 것 HTTP 301입니다. 이것은 기본적으로 다른 IP 주소와 서버를 가리 키므로 일부 포트를 한 서버로 보내고 일부는 DNS를 사용하여 다른 서버로 보낼 수 없다면 이것이 옵션이 아닙니다.
BoomBoomPowe

그런데 SSL 인증서를 제어하고 새 인증서가 필요한시기를 알고 있습니다. 이미 Let 's Encrypt를 사용하고 있지만 ZeroSSL에 대해 들어 보지 못했습니다. 와일드 카드 인증서를 제공합니까?
BoomBoomPowe

ZeroSSL에 대해서는 불행히도 그렇지 않습니다. 간단히 Let 's Encrypt의 서버에 대한 인터페이스 역할을하며 Let 's Encrypt는 2018 년 언젠가까지 와일드 카드 인증서를 발행 할 계획이없는 것으로 보입니다.
Anaksunaman

:이 사용하는 거라고 전에, 그러나, 나는 과거에이 일을 시도했다 : 그것은 매우 큰 변화가없는 같이 URL 변경 한 큰 문제가되지 않습니다 http://example.com --> https://ww2.example.com, http://www.example.com --> https://ww2.example.com, ww2.example.com [A RECORD] my_ip_address_here, 그러나 당신이 입력하는 경우 http://ww2.example.com가 작동하지 않습니다 . 솔루션을 찾을 때마다 다른 구멍이 열립니다!
BoomBoomPowe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.