web-dev-qa-db-ja.com

ISPがポート80をブロックしているときに、すべてのHTTPリクエストをHTTPSにリダイレクトするにはどうすればよいですか?

自宅でHTTPSWebサーバーを実行していますが、1つの重要な欠陥があります。ポート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/

そして最後に、障害:https://www.example.com/は(CNAME)powe.ddns.netを指します。これは私のダイナミックDNSです。試しましたが、URLレコードとCNAMEレコードを混在させたり、CNAMEがIP上の単一のポートのみを指すようにすることはできません。

これまでのところ、すべてのリダイレクトをhttps://ww2.example.com/に移動し、そのポイントをホームサーバーに設定しましたが、HTTPSからHTTPSへのリダイレクトを実行できないため、https://www.example.com/https://ww2.example.com/にリダイレクトすることはできません。 。

私がこれまでに見つけたすべての解決策は、ポート80が開いていることに依存していますが、これは私にはできません。それで、なにかお手伝いできますか?考えられる解決策には、HTTPSからHTTPSへのリダイレクト、ポート固有のDNS、およびHTTPSからのURL転送が含まれます(HTTPからHTTPまたはHTTPからHTTPSへのURL転送のみが見つかりました)。ありがとうございました!

2
BoomBoomPowe

さて、それは可能であることがわかりました。 CloudFlareのCDNを使用すると、ここに示す「常にHTTPSを使用する」機能を使用してネットワークレベルで自動HTTPSリダイレクトを実行できます。

Cloudflare HTTPSリライト

これは、リクエストがサーバーに到達する前でも発生し、無料利用枠で利用できます毎回書き換えを避けたい場合は、HSTSをオンにすることもできます。 。

1
BoomBoomPowe

とにかくサードパーティが関与しないとポート80がブロックされていると、詳細を説明することは一般的に不可能であるため、低コストのホスティングを調査することをお勧めします。

これは必須ではありません-サイトをホストすることはできます-しかし、ほぼ確実に、以下の2つのオプションのいずれかを使用します。

個別のダイナミック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.com)これらのサービスと直接。

通常はポート80を使用できますが、HTTPからHTTPSへのリダイレクト(例: http://example.com -> https://example.com )はありません。 URLリダイレクトレコードと基本的なDNSAレコードにより、特定のエントリのIPアドレスに関する問題が発生するため(HTTPS以外のURLを使用するとカットオフされるため)、サードパーティの介入なしでは不可能です。

[〜#〜] update [〜#〜]:OP自身が受け入れた回答ごとに、CloudFlareはポート80のリクエストをインターセプトし、ポート443にリダイレクトするようです。 。 彼らは明らかにダイナミックDNSクライアントも持っています

CloudFlareの使用に関係なく、ドメインのHTTPSバージョンを通常の方法で使用することは可能です。

CloudFlareなしで https://example.com から https://www.example.com へのリダイレクトに関して、解決策はサーバーIPを直接指すこととサーバー自体でwww以外のリクエストとwwwリクエストを並べ替える

まだ行っていない場合は、通常どおり2つのAレコードを作成して、サーバーの正しいIPを直接指します。

    example.com.   IN A   99.100.101.102

    www            IN A   99.100.101.102

hTTPSを使用してそれらにアクセスします。これらのレコードの正確な形式については、DNSプロバイダーに問い合わせてください。

これら両方のエントリのIPを更新することをダイナミックDNSクライアントに認識させる必要があることに注意してください。

次に、Apacheで、 https://example.comhttps://www.example.com にリダイレクトします。繰り返しますが、簡単にするために、次を使用できます。

    Redirect / https://www.example.com

https://example.com のHTTPS仮想ホスト内。ただし、特にSEOの目的で、他のリダイレクトオプション(301、302など)を使用することもできます。

証明書

証明書に関する簡単な注意事項として、 https://www.example.comhttps://example.com のサブドメインであり、どちらもブラウザエラーがない場合は、次のいずれかが必要です。

自己署名されていない無料の証明書が必要な場合は、 Let's Encrypt によって発行されたものを選択できます。彼らのWebサイトには、証明書の要求や管理のための直接インターフェイスはありませんが、 ZeroSSL にはWebインターフェイスとコマンドラインクライアントの両方があります(PerlスクリプトとWindowsバイナリの両方として)。 他にも利用可能なクライアントがあります

Let's Encrypt証明書の唯一の欠点は、証明書が短く(90日しかない)、現在ワイルドカード証明書を発行しないことです。 証明書の発行にはいくつかのレート制限がありますが、現在はかなり合理的です

ブラウザ内URL

ブラウザのアドレスバーでURLがまったく変更されないように、URLを「マスク」することは可能ですが、これには多くの場合、フレームにコンテンツを読み込む別のサーバーか、数に応じて機能する場合と機能しない場合があるmod_rewriteのクリエイティブな使用が必要です。要因の。

HTTPSの場合、マスキングにより、意図したとおりに機能するHTTPSが損なわれる可能性があります(主にセキュリティのため)。つまり、URLの最小限の変更に満足できる場合(たとえば、http://がhttps://になるか、場合によっては https://example.com から https:/ /www.example.com サーバー側)、上記のようにダイナミックDNSプロバイダーでexample.comを直接使用して、そのルートを選択します。

SEOの考慮事項

サイトのwwwバージョンと非wwwバージョンの両方が、SEOの目的(検索エンジンでのインデックス作成)のために重複したコンテンツを持つ別個のドメインと見なされる可能性があることに注意してください。したがって、コンテンツのインデックスを正しく作成したい場合は、それに応じた手順を実行することをお勧めします。によって Google

0
Anaksunaman