SSLクライアント証明書の認証を使ってサーバーに接続しようとしたら、「ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED」というエラーメッセージが表示されたことはありませんか?
SSLクライアント証明書の認証は、重要なツールやアプリケーションに接続する際にセキュリティを強化してくれるもの。ところが、認証時に何らかの問題が発生すると、接続できなくなり厄介です。
この記事では、「ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED」エラーについて掘り下げ、エラーの解決方法をご紹介していきます。
「ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED」エラーについて動画での解説もご用意しています。
「ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED」とは
サーバーレベルのSSL証明書については、既にご存知でしょう。
現在、ほとんどのウェブサイトでは、ユーザーのウェブブラウザとサーバーの間に暗号化された安全な接続を確立するため、SSL証明書とHTTPS接続が使用されています。これには、転送中のデータを暗号化するだけでなく、サーバーがサイト運営者の実在性を確認する目的もあります。
SSLクライアント証明書の認証では、クライアント、つまりユーザー(サーバーに接続するブラウザ)も独自のSSL証明書で身元を証明する必要があります。
したがって、SSLクライアント証明書の認証が必要なサーバーに接続するには、SSLクライアント証明書を提示しなければなりません。
SSLクライアント証明書は、コンピュータや携帯用スマートカードリーダーなどに保管することができ、後者は多くの企業で導入されています。
認証された特定のユーザーだけにアクセスを制限することで、セキュリティの層を厚くすることができるため、多くのビジネスアプリケーションや、特定のサーバーのアクセス制限に、SSLクライアント証明書は不可欠とされています。
そして、「ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED」エラーメッセージは、サーバーのSSL証明書ではなく、クライアント側のSSL証明書に何らかの問題がある場合に表示されます。
「ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED」エラーの原因
「ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED」は技術的なエラーを意味するため、原因もほとんどの場合、それに直結しています。
代表的な原因の1つが、接続における何らかの干渉。後ほど詳しく触れていきますが、接続の干渉にもまた多くの原因が考えられ、ウイルス対策ソフト、VPN、macOSのキーチェーンアクセスアプリなどがその一例です。
また、SSL証明書の基盤となるプロトコルであるTLSのバージョンに起因している場合もあります。
TLSには、1.0、1.1、1.2、1.3の4つのバージョンがありますが、TLS 1.0と1.1は2022年現在、非推奨です。
新しすぎる、もしくは古すぎるTLSバージョンを使用している場合は、「ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED」エラーが起こることがあります(使用しているスマートカードがTLS 1.2のみ対応で、サーバーのTLSが1.3の場合など)。
「ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED」エラーの解決方法
では、「ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED」エラーの解決方法をみていきましょう。簡単な方法から順にご紹介していきます。
1. コンピュータを再起動する
「再起動はしてみましたか?…」
このセリフは、もはや世界的にミーム(面白ネタ)になっているほど定番ですが、トラブルシューティングの基本であり、まずはここから始めるのが得策でしょう。
もちろん、再起動が全ての問題解決につながるわけではありませんが、もしこれで解決できれば、トラブルシューティングの時間を大幅に節約できるため、試してみる価値はあります。
2. Chromeを更新する
古いバージョンのChromeを使用している場合、それがエラーの原因かもしれません。そして、Chromeが使用しているTLSのバージョンに起因している可能性も高いです。
Chromeを最新バージョンに更新してみましょう。
3. Chromeを初期化する
Chromeの更新に加えて、Chromeの設定のリセットもトラブルシューティングの基本的な解決策。
Chromeにはこの作業を行う機能が組み込まれており、手順は以下の通りです。
- ブラウザのアドレスバーに「chrome://settings/privacy」を貼り付ける
- 設定のセクションまで下にスクロール
- 「詳細設定」をクリックして追加設定を開く
- 「リセットとクリーンアップ」(Windows)もしくは「設定のリセット」(Mac、Linux)>「設定を元の既定値に戻す」>「設定のリセット」をクリック
4. ファイアウォールやウイルス対策ソフトを無効化する
ファイアウォールやウイルス対策ソフトの中には、コンピュータとサーバーの接続を干渉して、「ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED」エラーを引き起こすものがあります。
オペレーティングシステムに組み込まれたファイアウォールや、専用のウイルス対策ソフトウェアも例外ではありません。
一度無効化して、再度接続を行なってみてください。これでエラーが解消される場合は、別のソフトウェアを使用するか、ソフトウェアのファイアウォールルールを調整してください。
5. VPNを無効化する
VPNの使用も「ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED」エラーの原因になる可能性があります。
VPNが必要な場合 (会社で推奨されている場合など)もVPNを一度無効化して、再接続を行なってみてください。
6. キーチェーンアクセスアプリの調整(macOS)
macOSを使用している場合は、キーチェーンアクセスアプリが原因であることも一般的です。キーチェーンアクセスアプリとは、SSLクライアント証明書を含むパスワードやアカウントの情報を保存するApple提供のmacOS専用アプリです。
これが原因の場合、SSLクライアント証明書の認証はSafariでは成功するかもしれませんが、ChromeやFirefoxなどの他のウェブブラウザではエラーが起こります。
この解決策は以下の通りです。
- キーチェーンアクセスアプリを開く
- 「ログイン」>「自分の証明書」でSSLクライアント証明書を見つける
- 該当のHTTPS秘密鍵を右クリック
- 「アクセス制御」タブを開く
- 「この項目の使用をすべてのアプリケーションに許可」を選択(すでに選択されているように表示されても再度クリックで選択してください)
- 「変更内容を保存」をクリック
すると、クライアント認証が必要なサーバーに接続する際、キーチェーンパスワードの入力を求められるようになります。パスワード入力後、「常に許可」をクリックしてください。
これで問題が解決するはずです。
7. ブラウザのTLS設定を変更する
TLSバージョンの設定(バージョンが新しすぎるか古すぎる)が原因になっている場合もあります。
最も一般的なのは、使用しているオペレーティングシステムまたはスマートカードリーダーが、TLS 1.2または1.3に対応していないパターンです。この場合、ブラウザでTLSのバージョンを1.1に設定すると一時的な解決策になります。
TLS 1.0と1.1はすでに非推奨になっており、本来は最新のTLSプロトコルを使用するのが理想的であるため、長期的な解決策としてはお勧めしませんが、緊急の状況に対する応急処置にはなるでしょう。
ChromeのTLSバージョンを1.1に設定する方法は、以下の通り(Windowsの場合)。
- デスクトップ上のChromeのアイコンを右クリックして「プロパティ」をクリック
- 「ショートカット」タブの「リンク先」の設定を見つける(最初に表示されるタブ)
- 既存の文字列の後ろに(半角スペースを入れて)「ssl-version-max=tls1.1」を貼り付ける
- 「OK」をクリックして変更を保存
これで、ChromeでTLS 1.1が使用されるようになります。
Firefoxの場合は、Firefoxの設定からTLSバージョンを変更することができます。
- Firefoxを開く
- ブラウザのアドレスバーに「about:config」を貼り付ける
- 検索バーでTLSを検索
- 「security.tls.version.min」と「security.tls.version.max」を編集(詳しくはこちらの記事をご覧ください)
8. サーバーのTLS設定を変更する
先ほど、ブラウザが使用するTLSバージョンを変更する方法はご説明しました。
これとは別に、サーバーにアクセスできる場合は、サーバー側の設定を変更することで、問題を解決できることがあります。
例えば、SSLクライアント証明書をスマートカードリーダーに保管している場合、TLS 1.2しか対応していないカードリーダーもあります。
そのため、解決策として、サーバーの設定を変更してみてください。
サーバーのTLS設定がmin v.1.0になっていたものを、別のフラグを追加してmax 1.2に設定することで問題を解決できたという人もいます。
9. Windowsの更新
これが最後のヒントです。これまでご紹介した解決策がすべて失敗したら、Windowsのソフトウェアを更新してみてください。Windowsのバージョンが最新のものでないことも一般的なエラーの原因です。
できる限り最新バージョン、あるいは少なくとも現在使用しているものよりも新しいバージョンに更新してください。
まとめ
「ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED」のエラーメッセージは、SSLクライアント証明書の認証に問題があることを意味しています。
このエラーが原因で、コンピュータやスマートカードリーダーに保管しているSSLクライアント証明書が使用できないことがあります。
解決方法は、大きく分けて2つ。
- ファイアウォール、macOSのキーチェーンアクセスアプリ、VPNなど、接続を干渉しているものがないか確認する
- 使用しているTLSバージョンが古すぎる、または新しすぎる可能性を検討する
その他のSSLエラーについては、様々なブラウザとプラットフォームでのSSL接続エラーを解決する8つの方法をご覧ください。また、以下、サーバー側・クライアント側のさまざまなSSLエラーについても解説記事をご用意しています。