クライアント証明書
TLSなどで、サーバがクライアント(利用者や端末)を認証するために使うデジタル証明書。証明書の検証と、対応する秘密鍵を持つことの確認を組み合わせて使う。
イマシルちゃんの解説
社内システムでは、接続してきた利用者や端末が誰なのかをサーバ側でも確かめたいことがあるよ。
その認証に使うデジタル証明書が、クライアント証明書なんだ。
通信を保護するTLSで使う場合は、クライアントが証明書を送り、対応する秘密鍵で通信開始時のやり取りに署名するよ。
サーバは証明書の発行元を信頼できるかなどを確認し、証明書に入っている公開鍵で署名を検証するんだ。
これで証明書を見せるだけでなく、対応する秘密鍵も持っていると確かめられるの。
その結果をもとに、許可した利用者や端末だけが接続できるようにするんだよ。
この解説はわかりやすかったですか?
より深い解説
定義
クライアント証明書は、クライアント側の身元を証明するデジタル証明書である。TLSでは、サーバ証明書でサーバを認証するのに加えて、クライアント証明書でクライアントも認証できる。両方向で認証することを相互認証(mutual TLS、mTLS)という。
認証の流れ(TLSの場合)
- サーバが、ハンドシェイクの中でクライアント証明書を要求する(CertificateRequest)
- クライアントが、自分の証明書を送る
- クライアントが、それまでのやり取りに自分の秘密鍵で署名し、送る(CertificateVerify)
- サーバは、証明書が信頼できるCAから発行されたものか、失効していないかを確かめ、証明書の公開鍵で署名を検証する
証明書そのものは公開されても困らない情報であり、本人であることの決め手は、対応する秘密鍵を持っていることである。
秘密鍵の保管場所
| 保管場所 | 特徴 |
|---|---|
| PCの中(ファイルやOSの証明書ストア) | 手軽だが、PCごと盗まれたり、マルウェアに盗まれたりするおそれがある |
| TPM(PCに内蔵されたセキュリティチップ) | 秘密鍵をチップの外に取り出せない。その端末でしか使えないので、端末の認証にも向く |
| ICカード、USBトークン | 秘密鍵をカードの中から取り出せない。カードを差し替えれば、どのPCからでも使える |
ICカードなどに格納すれば、利用するPCを特定の1台に限る必要はなく、カードを持っている人だけが認証を通れる。
主な利用場面
- 社内システムやクラウドサービスへのアクセスを、会社が発行した端末や利用者だけに限る
- リモートアクセスVPNの利用者認証
- 無線LANの企業向け認証(EAP-TLS)
- マイナンバーカードの電子証明書による本人確認
パスワード認証との比較
| クライアント証明書 | パスワード | |
|---|---|---|
| 盗まれやすさ | 秘密鍵をICカードなどに入れれば盗まれにくい | フィッシングなどで盗まれやすい |
| 管理の手間 | 証明書の発行、配布、失効の管理が必要 | 比較的少ない |