TLS相互認証(mTLS)とは、APIのmTLSを実装する

mTLSは、クライアントとサーバーの両方が証明書を使って相手を認証することで、通信を暗号化しセキュアにする認証方式です。本文ではTLS相互認証の定義、仕組みなどの基本情報を説明した上、mTLSを利用したAPIにリクエストを送信してレスポンスを取得する方法を皆さんに紹介します。

中村 拓也

中村 拓也

10 5月 2025

TLS相互認証(mTLS)とは、APIのmTLSを実装する

mTLSは、クライアントとサーバーの両方が証明書を使って相手を認証することで、通信を暗号化しセキュアにする認証方式です。クライアントとサーバー両方の証明書の認証が完了する場合のみ、暗号化された接続が成り立ちます。mTLSを利用したAPIに接続するために、クライアント証明書を添付してリクエストを送信する必要があります。本文ではTLS相互認証の定義、仕組みなどの基本情報を説明した上、mTLSを利用したAPIにリクエストを送信してレスポンスを取得する方法を皆さんに紹介します。

mTLSとは

mTLS とは Mutual Transport Layer Security (相互トランスポート層セキュリティ)の略称で、クライアントとサーバーの両方が証明書を使って相手を認証することで、通信を暗号化しセキュアにする認証方式のことを指します。

mTLSの特徴といえば、主に次ようになります:

mTLSでは、クライアントとサーバーが相互に証明書を検証することで、なりすましなどを防ぐことができるので、機密性の高い通信を必要とするシステム等でよく利用されています。特に金融系のアプリケーションやクラウドサービスの内部通信などでの採用が進んでいます。

mTLSとTLSとの違い

よく耳にしたTLSと比べてみると、mTLSの違いは何ですか?mTLSとTLSとの相違点といえば、以下の5つの方面にまとめることができます。

認証の方向性が違う:TLSはサーバー認証のみを行い、mTLSはサーバーとクライアント両方の相互認証を行う必要があります。

証明書の必要性が違う:TLSはサーバー側の証明書のみが必要となりますが、mTLSはサーバーとクライアント両方の証明書が必要となります。

セキュリティの水準が違う:TLSはサーバー認証でMan-in-the-middle (中間者)攻撃の可能性ありますが、mTLSは相互認証プロセスにより、なりすましが難しくなります。

運用の負担が違う:TLSはサーバー証明書のみ発行・管理すればよいのですが、mTLSはクライアント証明書もちゃんと管理する必要があります。

互換性が違う:TLSはほぼ全ての環境で利用することができますが、mTLSはクライアント証明書の管理が難しい場合もあって、互換性がやや低いのです。

要するに、mTLSはTLSよりもセキュリティレベルが高い反面、運用の負担が大きく、すべてのシステムでの採用は難しい特徴があります。

mTLSの仕組み

それでは、mTLS動作のプロセスはどのようになりますか?次は、mTLSの仕組みを皆さんに紹介していきたいと思います。

  1. クライアントとサーバーはそれぞれ公開鍵証明書と秘密鍵を作成する。
  2. クライアントはサーバーの証明書を検証し、サーバーの身元を確認する。
  3. サーバーはクライアントの証明書を検証し、クライアントの身元を確認する。
  4. クライアントはサーバーの公開鍵を使って、ランダムなプリマスターキーを暗号化する。
  5. サーバーは秘密鍵を使ってプリマスターキーを復号化する。
  6. クライアントとサーバーはプリマスターキーを使ってセッションキーを生成する。
  7. セッションキーで通信内容を暗号化し、SSL/TLSを利用して秘密通信を開始する。
  8. セッションが終了すると、プリマスターキーやセッションキーは破棄される。
Mtls処理のプロセス

画像の参照元:https://dev.classmethod.jp/articles/eetann-learn-mtls/

このように、証明書による相互認証が行われた上で、セッションキーによる通信内容の暗号化が実現されます。これにより、mTLSは高いセキュリティを提供します。

mTLSを利用したAPIについて

mTLSを利用したAPIでは、相互認証を行うために、クライアント証明書をリクエストする時に添付する必要があります。その理由といえば、次のようなものがあります:

クライアント証明書を添付せずにmTLSを利用したAPIにリクエストを送信した場合、サーバーはクライアントを認証できないため、リクエストが拒否され、TLS接続自体が確立できなくなります。

mTLSを利用したAPIにリクエストを送信してレスポンスを取得する方法

それでは、mTLSを利用したAPIからレスポンスを取得したい場合は、どうしたらいいですか?次は、簡単にクライアント証明書を添付して、APIリクエストを送信してレスポンスを取得する方法を皆さんに紹介します。

button

Apidogは、非常に強力のAPI管理ツールとして、CA証明書かクライアント証明書を簡単に追加して、リクエストの送信時に相互認証を行えます。それでは、mTLSを利用したAPIにリクエストを送信したい場合は、次の操作手順を参照して、クライアント証明書をApidogに追加しましょう。

ステップ⒈Apidogを立ち上げ、mTLSを利用したAPIを開きます。

ステップ⒉設計」モードに切り替え、上部のメニューバーで「変更」タブを選択して、Requestパラメータで「設定」をクリックします。

APIの設定を変更

ステップ⒊証明書の管理」をクリックします。

①CA証明書をオンにして、PEMファイルをアップロードします。

CA証明書の管理

②「クライアント証明書を追加」をクリックして、必要な設定を終えます。

クライアント証明書を管理
button

Explore more

n8n徹底解説:初心者でもできるローカル自動化

n8n徹底解説:初心者でもできるローカル自動化

n8nは柔軟で簡単な自動化ツール。Dockerで手軽にローカル実行でき、ITプロや初心者もAIワークフロー構築を楽しめます。

10 6月 2025

Pythonで簡単!APIデータ抽出と自動データパイプラインの作り方

Pythonで簡単!APIデータ抽出と自動データパイプラインの作り方

PythonでAPIからデータ抽出ができれば、堅牢なデータパイプライン構築が可能です。認証やエラー処理も押さえ、自動化されたプロセスを実現できます。

7 6月 2025

MindsDB: あらゆるITユーザーのための万能MCPサーバー

MindsDB: あらゆるITユーザーのための万能MCPサーバー

MindsDBは、200以上のデータソースへの接続を容易にし、AIアプリの構築やインサイトの探索をプロのように実現します。さらなるデータソースの接続や、APIdogでのAPIドキュメント化をお試しください。

26 5月 2025

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる