web-dev-qa-db-ja.com

Nginxがhttpsでcss / js / imagesをロードしない-混合アクティブコンテンツのロードをブロック

Nginx1.8.0でubuntu14.04を実行しています。 httpsでWebページを開いている間、css/js/imagesがロードされないため、ページが壊れているように見えます。このエラーが発生します "Blocked loading mixed active content "

これは私の nginx.confhttps://github.com/adithyakhamithkar/ansible/blob/master/roles/nginx/templates/nginx.j2

これは私の仮想ホストファイルです: https://github.com/adithyakhamithkar/ansible/blob/master/roles/nginx/templates/virtualhost_ssl.j2

誰かがこれを修正する方法を教えてくれませんか。

3
Adithya

Nginxconfigでは修正できません

次のhtmlファイルについて考えてみます。

  <html>
    <head>
    </head>
    <body>
      <img src="http://example.com/some/image.png">
    </body>
  </html>

このhtmlファイルがhttps経由で提供される場合、常に混合コンテンツ警告が生成されます。 /some/image.pngに対する後続の要求を修正しようとしても機能せず、要求はブラウザーによってブロックされ、サーバーに到達しません。

HTMLを修正する

唯一の効果的な解決策は、メインリクエストのhtmlソースを修正して、すべてのアセットをhttps://からリクエストするようにすることです。つまり、htmlを次のように変更します。

  <html>
    <head>
    </head>
    <body>
      <img 
        src="/some/image.png" 
        alt="same domain and port as this html page please"
      />
    </body>
  </html>

またはこれ:

  <html>
    <head>
    </head>
    <body>
      <img 
        src="https://example.com/some/image.png" 
        alt="explicit https" 
      />
    </body>
  </html>

あなたが言及したコメントの中でwordpress例として; wordpressインストールするために必要なのは(原則として、実際にはいくつかの混乱を期待する) サイトのURLを変更 wordpressがhttps://example.comをインストールのルートURLと見なすようにします。

0
AD7six

Firefox 23以降では、混合アクティブコンテンツがデフォルトでブロックされるようになりました。他のブラウザについてはよくわかりません

混合コンテンツとは何ですか?

ユーザーがHTTP経由で提供されるページにアクセスすると、盗聴や中間者(MITM)攻撃に対して接続が開かれます。ユーザーがHTTPS経由で提供されるページにアクセスすると、Webサーバーとの接続がSSLで認証および暗号化されるため、盗聴者やMITM攻撃から保護されます。

ただし、HTTPSページにHTTPコンテンツが含まれている場合、メインページがHTTPS経由で提供されていても、攻撃者はHTTP部分を読み取ったり変更したりできます。 HTTPSページにHTTPコンテンツがある場合、そのコンテンツを「混合」と呼びます。一部のコンテンツはHTTPを介して暗号化されずに取得されるため、ユーザーがアクセスしているWebページは部分的にのみ暗号化されています。混合コンテンツブロッカーは、HTTPSページで特定のHTTPリクエストをブロックします。

SSL以外の静的コンテンツをリンクしているようです。次のようにコンテンツをリンクする必要があります

<a href='//Host.com/file.png>

別のホストからリンクする必要がある場合。

3
Mike