<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>プロトコル</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">素のHTTP</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">転送</anchor>する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロキシ<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTPプロキシ</title></anchor>は、
原理的に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を好きに傍聴、改竄でき、
かつ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>はそのことを判断する手段を有しませんから、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPプロキシ</anchor>はその存在自体が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MITM</anchor> です。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>HTTPプロキシ</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</anchor> の場合、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は <code>CONNECT</code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロキシ</anchor>に送信してきます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求対象</anchor>と <code>Host:</code> に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">hostport</anchor>
が指定されます。
通常<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロキシ<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTPプロキシ</title></anchor>は指定された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TCP</anchor>
で接続し、以後送受信データをそのまま中継することが期待されていますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MITM proxy</anchor> は <code>CONNECT</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">トンネル</anchor>の送受信データを処理する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>として振る舞い、
自身が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>があるかのように別の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">接続</anchor>で本来の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>に接続し、
両接続の送受信データを傍聴、改竄しながら中継します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 
一見 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</anchor> の場合でも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は傍聴や改竄を検出できなそうに思えますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロキシ</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>に対応する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秘密鍵</anchor>を持っていませんから、
偽の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秘密鍵</anchor>を使って<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>と通信することになります。
偽の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ルート証明書</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書データベース</anchor>に含まれないため、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は不正の可能性を検知できます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>の同意の元正当な目的でやむを得ず使われる
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MITM proxy</anchor> の場合、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ルート証明書</anchor>を予め何らかの方法で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書データベース</anchor>に追加しておく必要があります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MITM proxy</anchor> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>として<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>に返す<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー証明書</anchor>を用意する必要があります。
対象となる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>が固定されていれば事前に用意することも出来ますが、
不特定多数の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>に擬態する可能性があるなら、
動的に生成する必要があります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>の生成や選択には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> の開始時に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>から送信されてくる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SNI</anchor>を使うこともできますが、
<code>CONNECT</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求対象</anchor>や <code>Host:</code>
を使うことも出来ます。
生成や選択にかかる時間を考慮すると、後者に基づき用意するのが良いかもしれません。</p></section><section><h1>MITM proxy 判定</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ネットワークエラー</anchor>の画面において、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MITM proxy</anchor> のものと判断されるとき、
専用のエラー画面を表示します。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>証明書エラー</anchor> </sw-see></p></section><section><h1>ヘッダー</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> 
次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPヘッダー</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>に関する事項を扱うもので、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MITM proxy</anchor> と干渉するため、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MITM proxy</anchor> により削除される可能性があります。</p><figure class="list middle"><ul><li><code>Public-Key-Pins</code></li><li><code>Public-Key-Pins-Report-Only</code></li><li><code>Expect-CT</code></li></ul></figure></section><section><h1>メモ</h1><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite xml:lang="ja">【Ver7.0以降】HTTPSの規制サイトで規制画面が正常に表示さ...</cite>
( (<time>2016-05-07 01:39:18 +09:00</time>))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://alsifaq.dga.jp/faq_detail.html?category=&amp;id=4474&amp;PHPSESSID=b8760cacf95181ae33401a1e5d322079">https://alsifaq.dga.jp/faq_detail.html?category=&amp;id=4474&amp;PHPSESSID=b8760cacf95181ae33401a1e5d322079</anchor-external></figcaption><blockquote><p>【ステップ2:証明書の警告画面を非表示にする。】</p><p>ステップ1の実施後、ブラウザによっては証明書の警告画面が表示されるようになります。</p><p>ステップ2では、ご利用のブラウザにWebFilterの証明書をインストールすることにより、</p><p>証明書の警告画面を非表示にします。</p><p>●Ver8.xの場合</p><p>「InterSafe WebFilter v8.0/v8.5 管理者マニュアル」</p><p>付録<strong>[</strong>H. 証明書のインストール<strong>]</strong>をご参照ください。</p><p>※Chromeは、Internet Explorerの証明書を参照していますので、</p><p>InternetExplorerに証明書をインストールしてください。</p><p>●Ver7.0の場合</p><p>「InterSafe WebFilter v7.0 管理者マニュアル」</p><p>付録<strong>[</strong>K. 証明書のインストール<strong>]</strong>をご参照ください。</p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite>Google検索でSSL接続エラーが出た場合の対処法 | パソコンで副業ドットコム</cite>
( (<time>2016-10-25 00:28:55 +09:00</time>))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://pcsidejob.com/20131122/6020">http://pcsidejob.com/20131122/6020</anchor-external></figcaption><blockquote><p>数日前より急に、GoogleChromeのツールバーから</p><p>検索したり、Google系のサイトにアクセスしようとすると</p><p>“SSL接続エラー”なる表示が出て、アクセスできなくなりました。</p><p>調べてみるとどうやら、セキュリティソフトが原因だったようです。</p><p>同様の症状で悩んでいる方のために回避方法を記載しておきます。</p><p>ちなみに私が使用しているセキュリティソフトはカスペルスキーなので、</p><p>その対処方法を記載しておきます。</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <cite xml:lang="ja">JVNTA#96603741: HTTPS 通信監視機器によるセキュリティ強度低下の問題</cite>
(<time>2017-03-21 09:59:17 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://jvn.jp/ta/JVNTA96603741/">http://jvn.jp/ta/JVNTA96603741/</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <cite>よくあるご質問(FAQ検索)| デジタルアーツ</cite>
(<time>2017-04-23 19:47:35 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.pa-solution.net/daj/bs/faq/Detail.aspx?id=3572">http://www.pa-solution.net/daj/bs/faq/Detail.aspx?id=3572</anchor-external></figcaption><blockquote><p>「SSL Adapter」によるSSLデコード機能をご利用の環境にて、</p><p>「Chrome バージョン58」にアップデート後にSSLサイトにアクセスすると、</p><p>ページが表示できない現象が発生する可能性があります。</p><p>近日中に「i-FILTER」のバージョンアップにて対応予定です。</p><p>バージョンアップをお客様にて実施するまでは、下記のいずれかの</p><p>対応を検討してください。</p><p>---</p><p>A.Chromeの利用を控え他のブラウザを使用する</p><p>B.SSLデコード除外設定する</p><p>Chrome 58で使用するUserAgentを条件に、SSLデコード対象から外します。</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <cite xml:lang="en">1523701 - SEC_ERROR_UNKNOWN_ISSUER since updating to Firefox 65</cite>
(<time>2019-02-02 14:47:00 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://bugzilla.mozilla.org/show_bug.cgi?id=1523701">https://bugzilla.mozilla.org/show_bug.cgi?id=1523701</anchor-external></p></section></body></html>