急にChromeで【送信しようとしている情報は保護されません】が表示されるようになった

お久しぶりです。阿部です。

【2020/12/14】これまで動いていた社内のシステムにChromeがセキュリティ警告を出すようになってしまいました。

同僚に聞いてみても、再現するPCと再現しないPCがあり、???状態

そういえば、朝起動時に随分待たされたことを思い出しました。

WindowsUpdate? Chromeのバージョンアップ(87.0.4280.88)? ? が原因のようです。

画面を表示させることはできるのですが、POST処理が実行されるような処理でのみ発生します。

  • ログイン画面でのログイン時
  • 記事の編集/登録時

f:id:zenet-tech:20201214184939p:plain

ちなみに、左下の「このまま送信」をクリックすると問題なく動作します。

開発者ツールで見てみるとこんなエラーが

f:id:zenet-tech:20201214185509p:plain
error

strict-origin-when-cross-origin で調べてみると、プロトコルhttp/httpsが混在しているような場合に起こるようでした。

※興味のある方は調べてみてください。捕捉があれば是非コメントをお願いします。

システムはWebサーバにnginx、Webアプリケーションサーバunicornを積んだ一般的なRailsのWebサーバ構成となっています。

細かいことはよくわかっていないこともあるので、今の段階でわかっている結論だけ書きます。

原因)

  • nginxからRails(unicorn)の通信はリバースプロキシによるアクセス
  • Railsが認識しているプロトコルhttpsではなく、httpとなっている

事象)

  • Railsが認識しているプロトコルhttpなので、redirect_toのあて先がhttp: となっている
  • リクエストヘッダーはhttpsなのに、レスポンスヘッダーでhttpプロトコルでリダイレクトされる
  • httpsでリクエストしたのに、httpへのリダイレクトを要求されたため警告表示

対応) nginxの設定ファイル

  • /etc/nginx/nginx.conf (yumでインストールした場合のデフォルト)
  • /etc/nginx/con.d/xxxx.conf

のいずれかに以下のような記述があると思います。

  location @app {
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            #proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
            proxy_connect_timeout 60;
            proxy_read_timeout 60;
            proxy_send_timeout 600;
            proxy_pass http://localhost:3000; 
    #ここは http://backend のようにsocket通信を指定している場合もあると思います。
        }

ここに以下の記述を追加します。

proxy_set_header X-Forwarded-Proto "https";

実行してみると 警告は
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・

出ません!!!

開発者ツールを見てみると

f:id:zenet-tech:20201214191322p:plain
success

と動いたと・・思っていますが、真偽のほどは・・・

qiita.com この記事に非常に助けてもらいました。

数年運用していたシステムでリダイレクトの設定でプロトコル異常が起こっていたのは悲しいところではありますが、 何とか当日に対応できてよかったです。

同じ悩みでお困りの方の参考になれば幸いです。

zenet-web.co.jp