• クライアント証明書とサーバ証明書の違いとは

    • このページをはてなブックマークに追加

    公開日:2016年12月27日 最終更新日:2021年12月24日

    ブラウジングしているとたまに表示される証明書エラー画面ですが、あれはなぜ起こるのでしょうか。今回はクライアント証明書とサーバ証明書の違いを中心に、証明書エラーの原因と対策などをご紹介していきたいと思います。

    目次

    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ブラウザで危険性を示す警告ページが表示されます。

    クライアント証明書とサーバ証明書の違いフリーランスエンジニア案件情報 | プロエンジニアcolumn_image6317_01

    なおこのチェックのためには、さらに認証局自体の正当性をチェックする「ルート証明書」という電子証明書が使用されます。ルート証明書の詳細については後述します。

    ▲目次へ戻る

    1.4 クライアント証明書とは

    一方のクライアント証明書とは、クライアントがサーバにアクセスする際に提示する身分証のようなものです。クライアント証明書を利用することで、不特定多数がアクセスできないように、対応する証明書をインストールしたPC以外からのアクセスを制限することができます。

    例えばある企業が組織内にのみ公開したいページがあったとした場合、パスワードやIDの管理だけでは私用のPCからでもアクセスすることができてしまいます。そこでクライアント証明書がインストールされたPCかのチェックを行うことで、組織内の特定のPCからしかアクセスできないよう制限するという使い方ができるのです。

    クライアント証明書とサーバ証明書の違いフリーランスエンジニア案件情報 | プロエンジニアcolumn_image6317_02

    ▲目次へ戻る

    1.5 ルート証明書とは

    ルート証明書とは、サーバ証明書の検証のために使用する電子証明書です。認証局によって発行され、その認証局が信用できるものであるかを調べるために使用されます。

    いくらサーバ証明書を持っているからと言って、それが信用できる認証局によって発行されたものでなければサーバ証明書の方も信用できません。サーバ証明書をチェックする前にまず認証局の信用チェックをするために、ルート証明書は使用されるのです。

    なお主要な認証局のルート証明書はブラウザやOSにあらかじめ組み込まれており、Webサイトにアクセスする際には自動的にチェックが行われています。

    ▲目次へ戻る

    1.6 自己署名証明書とは

    実は電子証明書は正式な認証局ベンダーだけでなく、個人で構築した認証局でも発行することができます。これは自己署名証明書(俗称 オレオレ証明書)と呼ばれ、不特定多数がアクセスするサーバ証明書にするには信用が足りないため不向きです。

    しかし特定のユーザを目的として配布するクライアント証明書は、該当するユーザの信用があれば成立します。そのため社内専用など内輪向けサイトなどでは、プライベート認証局で発行された証明書を目にする機会があります。

    ▲目次へ戻る

    クライアント証明書とサーバ証明書の違いフリーランスエンジニア案件情報 | プロエンジニアcolumn_image6317_03

    2.証明書エラー発生の原因と対策

    2.1 証明書エラーの発生原因

    このような電子証明書の仕組みから、問題ないサイトのはずが証明書エラーが発生する原因には次のような理由が考えられます。

    ・PCのシステム日付がずれている
    ・証明書の有効期限が切れている
    ・クライアント証明書がインストールされていない

    ▲目次へ戻る

    2.2 証明書エラー発生時の対処法

    前項で挙げたような原因でエラーが発生した場合は、次のような対策方法でエラーを回避することが可能です。

    ・PCの日付をチェックする(証明書の有効期限より先の日付の場合、エラーになります)
    ・認証局が発行するルート証明書を最新にする
    ・必要なクライアント証明書を探してインストールする

    ▲目次へ戻る

    クライアント証明書とサーバ証明書の違いフリーランスエンジニア案件情報 | プロエンジニアcolumn_image6317_04

    3.インストール済証明書の確認・削除方法

    項目2のように古い証明書がエラーを引き起こしている場合など、インストール済み証明書の確認や削除を行いたいという場合、次の方法で確認することができます。

    3.1 Windowsの場合

    Windowsの場合、クライアント証明書は「証明書」画面で管理されています。
    証明書画面は、次の手順で開くことができます。

    「コントロールパネル」>「インターネットオプション」>「コンテンツ」タブ>「証明書」ボタン

    クライアント証明書とサーバ証明書の違いフリーランスエンジニア案件情報 | プロエンジニアcolumn_image6317_05

    削除する場合は、該当行を選択した状態で「削除」ボタンを押します。

    ▲目次へ戻る

    3.2 証明書エラー発生時の対処法

    Mac OS Xの場合、クライアント証明書は「キーチェーンアクセス」画面で管理されています。
    キーチェーンアクセスは、次の手順で開くことができます。

    「アプリケーション」>「ユーティリティー」>「キーチェーンアクセス」

    クライアント証明書とサーバ証明書の違いフリーランスエンジニア案件情報 | プロエンジニアcolumn_image6317_06

    画面左の分類から「証明書」を選択すると、証明書のみが表示されます。
    削除する場合は、該当行を「Control+クリック」してメニューを表示し「削除」を選択します。

    ▲目次へ戻る

    4.証明書の仕組みを理解して安全な通信を

    エラーが発生しても、つい面倒でそのまま「続行する」を選択してしまうことがあります。ですがしっかりとした証明書を持っていないサイトと不用意に通信すると、大事な情報が抜かれてしまうかもしれません。これからも大事な情報をやり取りする場合には、正当な証明書を持っているサイトなのかチェックしてみて下さいね。


    フリーランス案件特集

    当サイトプロエンジニアのコンサルタントが厳選したおすすめのフリーランス案件特集はこちら
    特集ページから案件への応募も可能です!

    フリーランスインタビュー

    実際にフリーランスエンジニアとして活躍されている方のインタビューはこちら

    最新の求人情報をチェック!

    月額単価80万円〜90万円
    勤務地 東京都 新宿区
    月額単価50万円〜70万円
    勤務地 東京都 千代田区
    勤務地 神奈川県
    月額単価80万円〜90万円
    勤務地 東京都 千代田区
    月額単価120万円〜
    勤務地 東京都 新宿区
    • このページをはてなブックマークに追加

    おすすめ記事

  • ピックアップ

    フリーランス

    【Python】Webエンジニア★新機能開発 NEW

    月額単価 :80万円〜90万円

    PR/広告/テレビCMなどのDX事業を展開している企業にて、Pythonエンジニアとして参画していただきます...

    フリーランス

    【Python】データエンジニア★某大手キャリア向けデータ分析業務支援 NEW

    月額単価 :50万円〜70万円

    Android/iOSアプリのデータ分析の収集・解析を行いアプリ開発の改修箇所や新サービス検討のための資料作...

    フリーランス

    【Node.js/Git】フルスタックエンジニア★見積もりプラットフォームの開発 NEW

    月額単価 :80万円〜90万円

    地域密着型の暮らしからビジネスまで幅広くプロに依頼できる見積もりプラットフォームを展開している企...

    フリーランス

    【Ruby/Rails/Rspec/MySQL/Docker】システムエンジニア★宿泊予約サイト・システムの開発 NEW

    月額単価 :120万円〜

    宿泊施設向けの公式HPから予約数を上げる為、宿泊予約サイト/システムの開発案件です。 リリースして...