どうも、室井(@muroiwataru)です。
Firefoxの派生ブラウザを使っていると、URLがhttpsで始まるサイトにアクセスできない場合があります。
GoogleやMicrosoftのページに問題があるとは考えにくいですよね。
IEやFirefox、Chromeでは普通に閲覧できるわけですから。
これはブラウザとカスペルスキーなどのセキュリティソフトとの相性が悪いことが原因です。
エラーが発生する原因の技術的な解説と対処方法を解説していきます。
今回はカスペルスキーを例に説明します。
カスペルスキー以外にAvastもSSL通信のスキャンに対応しているようですね。
他のセキュリティソフトでも大体同じだと思います。
対処方法だけ読みたい方は「証明書の手動インストール」に飛んでください。
SSL通信が引き起こす問題
URLがhttpsで始まるサイトはSSLプロトコルで暗号化されています。
常時SSL化がトレンドになっているため、対応しているサイトが増えてきました。
このブログも常時SSL化しています。
SSL通信の仕組みを少しだけ解説します。
SSL通信をする際、最初にクライアントがサーバに接続要求を出します。
サーバはクライアントに対して公開鍵とサーバ証明書を返します。
クライアントは送られてきたサーバ証明書を、ブラウザに組み込まれたルート証明書で検証します。
この検証で問題がなければ、公開鍵が信頼できることの証明になります。
この後は共通鍵を公開鍵暗号方式で受け渡し、共通鍵暗号方式で通信します。
説明すると長くなるので今回は割愛します。
ここで常時SSL化することによる問題が発生します。
SSL化すると通信が暗号化されているため外部からデータを傍受できなくなります。
個人情報が流出することを防ぐことが目的ですから当たり前ですよね。
しかし、データを傍受できないということはセキュリティソフトでもチェックできないということです。
SSL化していてもサイトが信頼できるとは限りません。
もしもSSL通信の中に攻撃を仕込まれてしまったら、セキュリティソフトをすり抜けてしまいます。
SSL通信のスキャン
この問題を解決するために、カスペルスキーはサーバとクライアントの通信に割りこみます。
クライアントよりも先にカスペルスキーがデータを受信します。
そして公開鍵を留めておきます。
カスペルスキーは自身の公開鍵と自己証明書をクライアントに送信します。
こうすることでカスペルスキーは通信に割りこめるようになります。
クライアントとサーバの中間で一旦データを複合化してスキャンして、再び暗号化して送信しています。
仕組みはMan-In-The-Middle(中間者)攻撃と同じです。
ここでエラーを引き起こす原因となるのがカスペルスキーの自己証明書です。
「安全な接続ではありません」エラーを回避する
サーバ証明書を検証する際、ブラウザに組み込まれた大手の認証機関のルート証明書を利用します。
カスペルスキーの証明書はブラウザに組み込まれていないので、追加してやらなければいけません。
通常、カスペルスキーをインストールした際に勝手にブラウザにインストールされます。
しかし、IEやChrome、Firefoxといったメジャーなブラウザにしかインストールされません。
CyberfoxやWaterfoxといったマイナーなブラウザを使う場合、手動でインストールする必要があります。
証明書の手動インストール
“オプション”を開きます。
“詳細”から”証明書”タブを開き、”証明書の表示”を選択します。
“インポート”を選択します。
「С:\ProgramData\KasperskyLab\AVP1X.0.0\Data\Cert」に保存されている「(fake)Kaspersky Anti-Virus Personal Root Certificate.cer」を選択します。
すべての項目にチェックを入れて”OK”を選択します。
これでhttpsのページを開いてもエラーが表示されなくなりました。
あとがき
今回はSSLスキャン機能を無効化せずにエラーを回避する方法を紹介しました。
もちろん、SSLスキャンを無効化する方法でもこのエラーは回避できます。
カスペルスキーがサーバ証明書をきちんと検証しているか不安な場合などは、無効にしてもいいでしょう。
イラストのカスペルスキーのアイコンはIcons8からお借りしました。