ブラウジングしているとたまに表示される証明書エラー画面ですが、あれはなぜ起こるのでしょうか。今回はクライアント証明書とサーバ証明書の違いを中心に、証明書エラーの原因と対策などをご紹介していきたいと思います。
目次
1.1 SSL/TSLとは
1.2 サーバ証明書とクライアント証明書との違い
1.3 サーバ証明書とは
1.4 クライアント証明書とは
1.5 ルート証明書とは
1.6 自己署名証明書とは
2.1 証明書エラーの発生原因
2.2 証明書エラー発生時の対処法
1.SSL/TSLを用いた電子証明書とは?
1.1 SSL/TSLとは
SSLとは「Secure Sockets Layer」の略であり、セキュアなインターネット通信を行うためのプロトコルです。クライアントPCとサーバ間のデータのやり取りを暗号化することによって、第三者のアクセスを防いでいます。
TSLとは「Transport Layer Security」の略であり、簡単に言うとSSLの後継技術です。SSL最後のバージョンであるSSL3.0をベースとして開発されたTSL1.0が1999年に誕生しましたが、SSLという名称が広く普及していたため今でも「SSL/TSL」や単に「SSL」という名称が便宜的に各所で残されています。
なおこのSSL/TSL通信が用いられている場合は、URLの先頭が「https」になるという特徴があります。
1.2 サーバ証明書とクライアント証明書との違い
主なSSL証明書には、「サーバ証明書」と「クライアント証明書」の2種類があります。違いは簡単で「サーバ側が提示する証明書」なのか、「クライアント側が提示する証明書」なのかという点です。
1.3 サーバ証明書とは
サーバ証明書とは、Webサイトの身分証のようなものです。サーバ証明書は決められた認証局(CA、Certification Authority)が管理・発行しており、証明書の発行を受けることで主に次のような恩恵が得られます。
・Webサイトを所有している企業について確認できる
・フォームの入力情報を暗号化して受け渡すことができる
サーバ証明書を受け取ったクライアント側では、その証明書が正当な認証局から発行されているかと、証明書に記載されたサーバと現在通信しているサーバがちゃんと一致しているかを、自動的にチェックしています。チェックした結果信用できないと判定された場合、多くのWebブラウザで危険性を示す警告ページが表示されます。
なおこのチェックのためには、さらに認証局自体の正当性をチェックする「ルート証明書」という電子証明書が使用されます。ルート証明書の詳細については後述します。
1.4 クライアント証明書とは
一方のクライアント証明書とは、クライアントがサーバにアクセスする際に提示する身分証のようなものです。クライアント証明書を利用することで、不特定多数がアクセスできないように、対応する証明書をインストールしたPC以外からのアクセスを制限することができます。
例えばある企業が組織内にのみ公開したいページがあったとした場合、パスワードやIDの管理だけでは私用のPCからでもアクセスすることができてしまいます。そこでクライアント証明書がインストールされたPCかのチェックを行うことで、組織内の特定のPCからしかアクセスできないよう制限するという使い方ができるのです。
1.5 ルート証明書とは
ルート証明書とは、サーバ証明書の検証のために使用する電子証明書です。認証局によって発行され、その認証局が信用できるものであるかを調べるために使用されます。
いくらサーバ証明書を持っているからと言って、それが信用できる認証局によって発行されたものでなければサーバ証明書の方も信用できません。サーバ証明書をチェックする前にまず認証局の信用チェックをするために、ルート証明書は使用されるのです。
なお主要な認証局のルート証明書はブラウザやOSにあらかじめ組み込まれており、Webサイトにアクセスする際には自動的にチェックが行われています。
1.6 自己署名証明書とは
実は電子証明書は正式な認証局ベンダーだけでなく、個人で構築した認証局でも発行することができます。これは自己署名証明書(俗称 オレオレ証明書)と呼ばれ、不特定多数がアクセスするサーバ証明書にするには信用が足りないため不向きです。
しかし特定のユーザを目的として配布するクライアント証明書は、該当するユーザの信用があれば成立します。そのため社内専用など内輪向けサイトなどでは、プライベート認証局で発行された証明書を目にする機会があります。
2.証明書エラー発生の原因と対策
2.1 証明書エラーの発生原因
このような電子証明書の仕組みから、問題ないサイトのはずが証明書エラーが発生する原因には次のような理由が考えられます。
・PCのシステム日付がずれている
・証明書の有効期限が切れている
・クライアント証明書がインストールされていない
2.2 証明書エラー発生時の対処法
前項で挙げたような原因でエラーが発生した場合は、次のような対策方法でエラーを回避することが可能です。
・PCの日付をチェックする(証明書の有効期限より先の日付の場合、エラーになります)
・認証局が発行するルート証明書を最新にする
・必要なクライアント証明書を探してインストールする
3.インストール済証明書の確認・削除方法
項目2のように古い証明書がエラーを引き起こしている場合など、インストール済み証明書の確認や削除を行いたいという場合、次の方法で確認することができます。
3.1 Windowsの場合
Windowsの場合、クライアント証明書は「証明書」画面で管理されています。
証明書画面は、次の手順で開くことができます。
「コントロールパネル」>「インターネットオプション」>「コンテンツ」タブ>「証明書」ボタン
削除する場合は、該当行を選択した状態で「削除」ボタンを押します。
3.2 証明書エラー発生時の対処法
Mac OS Xの場合、クライアント証明書は「キーチェーンアクセス」画面で管理されています。
キーチェーンアクセスは、次の手順で開くことができます。
「アプリケーション」>「ユーティリティー」>「キーチェーンアクセス」
画面左の分類から「証明書」を選択すると、証明書のみが表示されます。
削除する場合は、該当行を「Control+クリック」してメニューを表示し「削除」を選択します。
4.証明書の仕組みを理解して安全な通信を
エラーが発生しても、つい面倒でそのまま「続行する」を選択してしまうことがあります。ですがしっかりとした証明書を持っていないサイトと不用意に通信すると、大事な情報が抜かれてしまうかもしれません。これからも大事な情報をやり取りする場合には、正当な証明書を持っているサイトなのかチェックしてみて下さいね。
当サイトプロエンジニアのコンサルタントが厳選したおすすめのフリーランス案件特集はこちら
特集ページから案件への応募も可能です!
実際にフリーランスエンジニアとして活躍されている方のインタビューはこちら