web-dev-qa-db-ja.com

WebサイトがHTTPとHTTPSを介して異なるバージョンのファイルを提供するのはなぜですか?

以下は、curlの公式Webサイトにあるリンクです。

(接頭辞省略)bintray.com/artifact/download/vszakats/generic/curl-7.46.0-win64-mingw.7z

プレフィックスhttp://とhttps://を付けてダウンロードすると、2つの異なるファイルを取得しました。

私の質問は、このサイトが2つの異なるファイルを提供している理由です-1つはHTTP経由で、もう1つはHTTPS経由で? SHA256ハッシュが一致しません。

リダイレクト後の最終的なURLの差分を以下に示します。左側のURLはHTTPがリダイレクトするURLであり、右側のURLはHTTPSがリダイレクトするURLです。

Diff of URLs

更新:

2つのファイルは同時にダウンロードされませんでしたが、バージョン番号は同じだったので、同じであると想定しました。これはそうではありません。著者は、いくつかのリビジョンは新しいバージョン番号を取得しないと私に言った。異なる日付でサイトから提供されたファイルのスキャン結果( 12/05/15 はHTTP経由のダウンロードのスキャン日であり、 12/28/15 はHTTPS経由のダウンロードのスキャン日付)は、バージョン番号は変更されなかったが、SHA256ハッシュは変更されたため、混乱を招きました。

18
solarflare97

簡単な答えは、次のとおりです。 Webサーバーは、構成または偶然のいずれかで、好きなものを提供できます。

現在、HTTPとHTTPSの両方で同じ75916c7bファイルを取得していますが、WebサーバーがHTTPSとHTTPで異なるコンテンツを提供しているという理論を確認できません。ただし、ファイルが更新されたときにサイトにアクセスできた場合は、さまざまなサーバーがさまざまなプロトコルを提供していて、ファイルの更新が古いファイルを提供したサーバーにまだ伝達されていない可能性があります。

1つのURLは任意の数のサーバーから提供されることに注意してください。URLから1つのファイルを取得しても、20のサーバー/キャッシュにこのファイルのコピーが20あることは除外されません。

この場合、これは確実です。ウェブサイトは、コンテンツ配信ネットワークであるCloudfrontを使用しているように見えるためです。

24
Sander

上記の参照ファイルの作成者はこちら。

ビルドスクリプトが変更され、新しいビルドが自動的にトリガーされてアップロードされると、現在の状態での上記ファイルのチェックサムは通常変更されます。 curl 7.46.0の場合、ビルドスクリプト(およびその結果としてダウンロード可能なパッケージ)は、この記事の執筆時点で3回変更されています。

  • Nghttp2依存関係を構築して静的リンクすることにより、HTTP/2サポートが有効になりました: commitlog
  • nghttp2の依存関係がバージョン1.5.0から1.6.0に更新されました: commitlog
  • libcurl.dll nghttp2ビルドオプションがないためにビルドバグが識別され、修正されました: commitlog
  • 基礎となるMinGW Cコンパイラは5.3.0に更新され、さらに複数の内部修正と更新が行われました: commitlog
  • VirusTotalの誤検知は、オプションの.vbs元のcurlソースパッケージから以前にコピーされたファイル: commitlog

コミット heremasterブランチに対して行われた)は、新しいビルドをトリガーします。

  • コミットテキストを使用して明示的に除外されている場合を除いて:[ci skip]
  • ビルドプロセスは再現可能/確定的であるように設計されているため、チェックサムは、基になるソースコードまたはコンパイラオプションが変更された場合にのみ変更されます。 (同じオプションを使用してビルドを繰り返しても変更されません。)

異なるプロトコルを介してバイナリをダウンロードする場合、HTTPとHTTPSはまったく同じバイナリコンテンツになります(ダウンロードが同じ時点で行われる場合)— HTTPSを強くお勧めします。

潜在的なマルウェアについては、GitHubで私の考えを参照してください: https://github.com/bagder/curl/issues/583#issuecomment-167520488

要するに、それらはほぼ間違いなく誤検知であり、転送プロトコルの影響を受ける可能性は低く、スキャナーエンジンの問題の影響を受ける可能性が高いです。完全なビルドプロセスは public および auditable と、それにビルドされるすべてのソースコードです。)

更新[2015-12-28]:HTTPとHTTPSの問題に対する一般的な回答として:後者の安全なプロトコルは、コンテンツが適切な当事者からのものであり、その反対側への途中で改ざんされていないことを保証しますワイヤー。これらの理由により、より信頼できるため、元の回答ではそれをお勧めします。さらに良い保証は、ダウンロードされたコンテンツのSHA256ハッシュをビルドサーバー自体で生成されたハッシュと照合することです(リンクされたビルドログの最後に表示されます)上記)。さらに強力な保証は、コンテンツにデジタル署名(たとえば、PGPまたはミニサインを使用)し、その署名を受信者が検証することです。 (現在、私のcurlダウンロードにはデジタル署名が付いていません。)

更新[2016-01-06]:パッケージ更新のリストを更新しました。 VirusTotalの誤検知の修正もその1つです。

13
vszakats

スキャンのタイムスタンプを見てください。「クリーン」バージョンは数週間前です。新しいスキャン日付のリンクをクリックすると、httpとhttpsの両方が感染していることがわかります。

基本的に、ファイルに違いはありません。スキャンは2つの異なる時間(感染前と感染後)に実行されました。

3
Steven Carlson

HTTPとHTTPSで異なるファイルを提供することは実際には日常的なことです。たとえば、あなたが銀行であるとします。誰かがURL http://www.bank.com を提供した場合、銀行はHTTPを使用したくないし、面倒なこともしたくないので、301で応答を発行するだけです。または302 https://www.bank.com にリダイレクトします。それは可能な限り透明です。

2
user95495