2026 年 10 月 14 日
新人実践レポ②秘密鍵の端末外流出を防ぐ TPM 対応のクライアント証明書とは
~TPM で秘密鍵を保護しながらクライアント認証を行う仕組みを紹介~
TPM(Trusted Platform Module)は、PC に搭載されたセキュリティチップで、クライアント証明書の秘密鍵を PC 外に持ち出せない形で保護することで、なりすましや秘密鍵の不正コピーを防ぎ、信頼性の高い端末認証を実現します。前回の記事では、TPM がどのように秘密鍵を保護するのかについて紹介しました。
今回はその続きとして、実際に TPM に紐づいたクライアント証明書を使って、クライアント認証を試してみます。
「TPM で秘密鍵を守る」という説明だけでは、実際にどのように利用されるのかイメージしにくいかもしれません。
そこで今回は、Windows PC と Web サーバーを用意し、クライアント証明書による認証が実際に行われるところを見ていきます。
検証環境について
今回は、当社のマネージド PKI サービスから TPM に対応したクライアント証明書を発行し、Windows PC にインストールしました。
このとき、クライアント証明書は Windows の証明書ストアに登録され、対となる秘密鍵は TPM 内で保護されます。
そのクライアント証明書を使って Web サーバーにアクセスし、TPM 内で保護された秘密鍵がクライアント認証に利用されることを、実際の動作から確認します。
実際に検証するため、以下の環境を用意しました。
| 項目 | 内容 |
|---|---|
| クライアント | Windows PC |
| TPM | TPM 2.0(PC に標準搭載) |
| クライアント証明書 | TPM に紐づいたクライアント証明書 ※マネージド PKI から発行 |
| Web サーバー | Ubuntu + Apache |
| 認証方式 | TLS クライアント認証 (1.3) |
TPM に紐づいたクライアント証明書を確認してみる
まず、Windows の「トラステッド プラットフォーム モジュール(TPM)の管理」から、TPM が有効になっていることを確認しました。
今回の検証環境では、TPM 2.0が利用可能な状態になっています。

次に、当社のマネージド PKI サービスから、TPM に対応したクライアント証明書を発行しました。
発行時には「Microsoft Platform Crypto Provider(Windows で TPM を利用して秘密鍵を保護するための仕組み)」を指定しています。
発行したクライアント証明書は Windows の証明書ストアに登録され、証明書に対する秘密鍵は TPM 内で保護されます。

では、実際に TPM を利用する構成になっているのか確認してみます。
Windows の証明書ビューアーを確認すると、証明書に対応する秘密鍵を持っていることが確認でき、
さらに「秘密キーがエクスポート可能ではありません」と表示されました。

さらに、 Windows 標準で使用できる 「certutil」コマンドで秘密鍵のプロバイダを確認したところ、「Microsoft Platform Crypto Provider」と表示されました。

これにより、今回のクライアント証明書に対応する秘密鍵が、Microsoft Platform Crypto Provider を通じて TPM を利用する構成になっていることを確認しました。
実際にクライアント認証を試してみる
次に、実際にクライアント証明書を使った認証を試します。今回の検証では、Ubuntu 上に Apache を構築し Web ページを用意します。
ここでは Apache そのものの構築方法を詳しく説明するのではなく、「クライアント証明書を提示した場合と、提示しない場合でアクセス結果がどう変わるのか」を確認します。
クライアント証明書なしでアクセスしてみる
最初に、クライアント証明書を選択せずに Web サーバーへアクセスしてみました。すると Web ページは表示されず、アクセスが拒否された場合の画面が表示されました。
これは、URL を知っているだけではアクセスできず、あらかじめ発行されたクライアント証明書を持つ端末のみが接続を許可されることを意味します。


TPM に紐づいたクライアント証明書を選択してみる
次に、ブラウザから表示された証明書の選択画面で、TPM に紐づいたクライアント証明書を選択してアクセスしました。
すると、先ほどとは異なり Web ページが表示され、クライアント認証に成功しました。
今回の検証では、TPM 内に保護された秘密鍵を利用してクライアント証明書による認証を実際に行い、Web サーバー側で認証が成功するところまで確認できました。



TPM を UEFI(BIOS) から OFF にしてみる
ここまで、TPM に紐づいた秘密鍵を利用してクライアント認証を行いました。
しかし、ここで一つ疑問が残りました。
「本当に TPM に紐づいた秘密鍵が認証に使われているのだろうか?」
そこで、TPM を UEFI( 旧名称:BIOS) から OFF にした状態で、同じようにクライアント認証を試してみました。
BIOS(UEFI)から「Security Device Support」を「Disable」に変更しました。

上記を行うことにより TPM が OFF となるため、PC を再起動した後に TPM の管理画面を改めて確認したところ
TPM が見つからないことを確認しました。

その結果、証明書の選択画面は表示されましたが、その後の認証で失敗しました。
一方、Apache 側には以下のようなエラーログが出力されていました。
[ssl:info] ... SSL Library Error: error:0A0000C7:SSL routines::peer did not return a certificate -- No CAs known to server for verification?
TPM を OFF にした状態では、クライアント認証を完了できなかったことがわかります。
その後、TPM を ON に戻して PC を再起動し、再度クライアント認証を行ったところ、問題なくアクセスできました。
- ※
- UEFI(BIOS)で TPM を無効化して PC を起動すると、OS が起動しない場合があります。
実施する際はご注意ください。
実際に試してみて分かったこと
今回、実際に環境を構築してクライアント認証を試したことで、クライアント証明書による認証では、証明書だけでなく、それと対になる秘密鍵が必要になることを実際の動作から確認できました。
また、TPM を OFF にすると認証を完了できなかったことから、今回使用したクライアント証明書では、TPM 内で保護された秘密鍵がクライアント認証に関係していることを、実際の環境で確認できました。
まとめ
今回は、当社マネージド PKI から TPM に紐づいたクライアント証明書を発行し、実際に Web サーバーへのクライアント認証を試してみました。
検証の結果、クライアント証明書を提示しない場合はアクセスできず、TPM に紐づいたクライアント証明書を選択すると認証に成功することを確認しました。また、TPM を OFF にした状態では認証を完了できないことも確認しました。
このように、TPM 内で秘密鍵を保護しながら、クライアント証明書による認証を行うことができます。当社のマネージド PKI サービスでは、こうした TPM を利用したクライアント証明書の発行・配付に対応しています。
次回予告(スマートカード)
今回は TPM に紐づいたクライアント証明書を使って、クライアント認証を試してみました。次回は、Windows 11 の「仮想スマートカード」を実際に試してみます。
スマートカードというと、IC カードや USB トークンを思い浮かべる方が多いかもしれません。しかし Windows には、TPM を利用してスマートカードのように利用できる「仮想スマートカード」という仕組みがあります。
次は実際に仮想スマートカードを作成し、証明書を利用する流れを紹介していきます。






