最終更新日付: 2019年5月29日
「https通信は暗号化された通信である。」
これは有名ですが、httpsはどこまで暗号化されてわからないものなのでしょうか?
例えば、URLのパスは暗号化されていて見えないのでしょうか?
レジュメ
結論、httpsではURLパスも暗号化されてProxyサーバーログにも残らない。サーバー名(FQDN)は見える
Proxyサーバーのアクセスログを確認したところ、
httpアクセスは、URLパスまで表示されていましたが、
httpsアクセスは、サーバー名までしかわかりませんでした。
つまり、URLパスは暗号化されていてログにも残らないという結論です。
※ SSLに対応したProxyも存在します。その場合、クライアント側でSSL証明書を確認すると、URLとは異なる証明書になっています。
https通信がProxyサーバーで見れる仕組みは、proxy指定がある場合はブラウザがconnectメソッドを使用し転送先のホストを暗号化しないでProxyサーバーに教える仕組みのためです。
HTTPS通信とプロキシサーバ(CONNECTメソッド) : ネットワークスペシャリスト - SE娘の剣 -
検証内容
CentOS(Linux)上にSquid(Proxyサーバー)を構築し、
クライアント端末のブラウザに構築したProxyサーバーを指定し、以下のURLでアクセスしました。
- http://www.yahoo.co.jp/aaaaaaaaaaaaaaaaa.htm
- https://www.yahoo.co.jp/aaaaaaaaaaaaaaaaa.htm
その結果が上記画像です。
Proxyサーバーのアクセスログには、httpsの場合はサーバー名しかわからないんですね。
会社がインターネット通信にProxyサーバーを導入しているけどアクセスログでどこまでバレるのか?
これで会社がProxyサーバーでアクセスログを取っていても、
httpsアクセスの場合は、通信しているサーバーはわかっても内容は傍受されないということがわかりました笑
いざという時に、会社にばれたくないアクセスはhttps通信で暗号化しておきましょう!笑
※ ただし、会社はアクセス日時と、アクセスしたサーバーはわかりますけどね
古い記事なのであれですが、proxy側で接続先のホスト名のサーバー証明書を生成して、暗号化通信をブラウザ・Proxy間とProxy・接続先間に分ける(ブラウザは接続先と直接暗号通信していると理解するが実際にはProxyでは全部復号されて全部見られる)というような運用は可能です。PCに自社発行証明書用のルート証明書等をインストールしておくなどの準備は必要です。
ブラウザでサーバー証明書を確認してちゃんとした外部証明機関の発行した物であれば中身は見られてないです。
>通りすがりさん
Googleにhttpsが推奨され、httpsのサイトが増えました。
となると、企業としては当然の流れですよね。
はい、知っていますが、ご指摘ありがとうございます。
誤解の無いよう記事に追記しておきます。
よくわからないのですが、
サーバにサーバ証明書があり、ブラウザにルート証明書がインストールされていても、プロキシは見れてしまうのでしょうか。
http://nw.seeeko.com/archives/50924117.html
を見たのですが、プロキシは結構自由に証明書を作れるように読めました。少しだけ噛み砕いて教えていただけないでしょうか。
>ごん太さん
こちらのURLで言えば
・サーバ証明書1
・サーバ証明書2
で分かれているのがポイントですね。
つまり、Porxyが「本来目的のサーバ証明書1」を複合化して覗き見て、
再度Proxyが「Proxyのサーバ証明書2」を利用して、
再度暗号化してPCに渡している。
これがProxyの複合化機能です。
仕組み的には簡単にできそうに思えますよね。
ただ、PCではサーバ証明書1では無いので「あれ?誰かに覗き見られている?」と思って異変をユーザー自身が
感じられるように、ブラウザが「①ForiGateをProxyサーバとして利用し、SSLを中継する。」の画面のように
証明書エラーなります。
それを回避する手が、②以降ということとですね。