クライアント証明書

読み:くらいあんとしょうめいしょ / 英語表記:client certificate

TLSなどで、サーバがクライアント(利用者や端末)を認証するために使うデジタル証明書。正規の証明書を持つ利用者や端末だけに、接続を許可できる。

イマシルちゃんの解説

ふつうのHTTPSでは、「サーバが本物か」をブラウザが確かめるだけなんだ。

でも、社内のシステムみたいに「決まった人だけが使えるようにしたい」ときは、
逆にサーバのほうも「あなたは本当にうちの社員?」って確かめたくなるよね。
そのときにクライアントが見せる身分証明書が、クライアント証明書なんだよ!

より深い解説

定義

クライアント証明書は、クライアント側の身元を証明するデジタル証明書である。TLSでは、サーバ証明書でサーバを認証するのに加えて、クライアント証明書でクライアントも認証できる。両方向で認証することを相互認証(mutual TLS、mTLS)という。

認証の流れ(TLSの場合)

  1. サーバが、ハンドシェイクの中でクライアント証明書を要求する(CertificateRequest)
  2. クライアントが、自分の証明書を送る
  3. クライアントが、それまでのやり取りに自分の秘密鍵で署名し、送る(CertificateVerify)
  4. サーバは、証明書が信頼できるCAから発行されたものか、失効していないかを確かめ、証明書の公開鍵で署名を検証する

証明書そのものは公開されても困らない情報であり、本人であることの決め手は、対応する秘密鍵を持っていることである。

秘密鍵の保管場所

保管場所特徴
PCの中(ファイルやOSの証明書ストア)手軽だが、PCごと盗まれたり、マルウェアに盗まれたりするおそれがある
TPM(PCに内蔵されたセキュリティチップ)秘密鍵をチップの外に取り出せない。その端末でしか使えないので、端末の認証にも向く
ICカード、USBトークン秘密鍵をカードの中から取り出せない。カードを差し替えれば、どのPCからでも使える

ICカードなどに格納すれば、利用するPCを特定の1台に限る必要はなく、カードを持っている人だけが認証を通れる。

主な利用場面

パスワード認証との比較

クライアント証明書パスワード
盗まれやすさ秘密鍵をICカードなどに入れれば盗まれにくいフィッシングなどで盗まれやすい
管理の手間証明書の発行、配布、失効の管理が必要比較的少ない

実際の試験ではここに出る!

この用語が出てくる記事

↑