クライアント証明書を利用したサイトへアクセスした際には、利用する証明書の選択画面が表示されます。
毎回表示されるのがウザいので自動的に選択されるように設定する手順を解説します。複数のクライアント証明書を利用していても、自動選択させることができます。
- 毎回、証明書を選択するのがウザい
- クライアント証明書の選択画面を省略したい
- 証明書を自動的に選択させたい
- 複数の証明書を自動的に選択させたい
設定箇所はブラウザ毎に行う必要があります。
- Chrome、Edge はレジストリを追加
- Firefox は設定項目をチェック
これで選択画面が出ずに、ブラウザに表示させたいページが直ぐに開きます。
証明書認証を利用するサイトを構築する
多要素認証を要求するサイトが増えてきています。
特定ユーザーのみアクセス許可を行いたい場合は、ベーシック認証を利用する場合が多かったです。ただ、最近は基本認証を利用せずクライアント証明書を利用する機会が増えてきました。
クライアント証明書を利用したサイトを構築する際の手順はこちらの記事を確認してください。
関連記事 Nginx クライアント証明書による認証の設定方法(OpenSSL)
ベーシック認証は、サイトのアクセス時にアクセスを制限を行うために、IDとPasswordを用いた認証のことで容易に構築できます。
関連記事 Nginxにてベーシック(Basic)認証を有効にする手順
ブラウザで証明書認証のサイトにアクセスすると
クライアント証明書の選択画面が毎回表示される
一般向けのサイトでの認証はID/PASSを利用するのが一般的です。セキュリティに関心が高いサイトでは多要素認証(SMS、メール、ワンタイムパスワード)も普及してきました。
最近、在宅ワークが普及したことでインターネット経由で企業内システムにアクセスできるようにする要望も高まっています。その場合、VPNなどを利用してクローズとネットワークにアクセスする方法が一般的ですがデメリットも顕在化しています。
- VPNがボトルネックになる
- 使い勝手が悪い(ステップ数が多い)
- 高コスト体質
ということで、私の会社は直接インターネットから社内システムにアクセス出来るように変更しました。認証に ID/PASS だけを用いるのは情報漏洩の原因になるかもしれないので、クライアント認証を用いることにしました。
ただ、ブラウザがクライアント証明書を用いた認証サイトにアクセスした際は、利用する証明書を選択させる画面が表示されます。
証明書が、1つしか無くてもユーザーに選択を強制してきます。この選択画面が非常にうっとうしいので、表示されないように設定で対応します。
Chrome クライアント証明書の選択画面
Edge クライアント証明書の選択画面
Edgeの場合は選択されているかが判別しにくい
上に表示された状態で「OK」ボタンを押しても画面遷移が起こりません。
証明書がグレー色に反転しないと選択されていないです。マジで分かりずらい。
Firefox クライアント証明書の選択画面
Firefoxは独自路線を進んでいますね。Chrome,Edgeとは違ったオプション機能が提供されています。Firefoxの場合は「今後も同様に処理する」にチェックをいれるだけです。
同様に処理させたくないのに、間違えてチェックを入れてしまった場合は、管理画面から設定を変更することが可能です。
クライアント証明書を自動選択する手順
Chrome クライアント証明書を自動選択させる方法
公式サイトに詳細が説明されていますが、ちょっと難しいです。挙動を理解して複雑な制御を行いたいときには非常に役に立ちます。
https://chromeenterprise.google/policies/?policy=AutoSelectCertificateForUrls
レジストリ
Software\Policies\Google\Chrome\AutoSelectCertificateForUrls
名前 | 1,2,3 |
種類 | REG_SZ |
データ | { “pattern”: “$URL_PATTERN”, “filter” : $FILTER } |
クライアント証明書を自動的に選択できる URL パターンのリストを作成し、フィルターを用いて制御します。
サンプルではこんな感じです。
実際にはこんな感じで登録します。
“pattern“はコンテンツを設定するURLパターンを登録します。対象のURLをそのまま記載してください。
“filter“はブラウザが自動的に選択されるクライアント証明書を限定するフィルタです。発行元の情報を利用します。
一番簡単なのは、発行元の CommonName を利用してクライアント証明書を選択させます。
レジストリの定義済みキーは環境にあったものを選択してください。
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
レジストリに登録後、Chromeを起動させて動作チェックを実施してください。
Edge クライアント証明書を自動選択させる方法
公式サイトに詳細が説明されていますが、ちょっと難しいです。挙動を理解して複雑な制御を行いたいときには非常に役に立ちます。
https://learn.microsoft.com/ja-jp/deployedge/microsoft-edge-policies#autoselectcertificateforurls
レジストリ
Software\Policies\Microsoft\Edge\AutoSelectCertificateForUrls
名前 | 1,2,3 |
種類 | REG_SZ |
データ | { “pattern”: “$URL_PATTERN”, “filter” : $FILTER } |
クライアント証明書を自動的に選択できる URL パターンのリストを作成し、フィルターを用いて制御します。
サンプルではこんな感じです。
実際にはこんな感じで登録します。
“pattern“はコンテンツを設定するURLパターンを登録します。対象のURLをそのまま記載してください。
“filter“はブラウザが自動的に選択されるクライアント証明書を限定するフィルタです。発行元の情報を利用します。
一番簡単なのは、発行元の CommonName を利用してクライアント証明書を選択させます。
レジストリの定義済みキーは環境にあったものを選択してください。
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
レジストリに登録後、Edgeを起動させて動作チェックを実施してください。
Firefox クライアント証明書を自動選択させる方法
クライアント証明書を記録させる手順
Firefoxは設定不要です。クライアント証明書の選択画面に表示される「今後も同様に処理する」にチェックを入れたら完了です。
記録させたクライアント証明書の削除の手順
記録させたクライアント証明書を削除は、「証明書マネージャー」から行います。
Firefox 設定 > 証明書 > 証明書を表示 > 認証の決定
グループポリシーで一括設定
ActiveDirectoryを利用している環境であれば、グループポリシーを利用してPCを制御させます。サーバーに設定を行えば自動的にクライアントPCに反映します。
もし、追加設定、修正や削除が発生しても、ドメインメンバーのPCに設定変更を反映させることができます。
「コンピューターの構成 ー 基本設定 ー Windows の設定 ー レジストリ」から新規作成を選び「レジストリ項目」を選択します。
関連記事 グループポリシーでクライアント証明書を自動選択させる方法 Chrome Edge
あとがき
クライアント証明書を利用したサイトへアクセスした際には、ブラウザに利用する証明書の選択画面が表示されます。
初めてアクセスする場合は、セキュリティー制御が働いていて、イケてる感があるのですが、毎回だとウザくて仕方ないので表示されないように制御します。
ChromeとEdgeはレジストリで制御し、Firefoxは項目で制御します。個人利用の場合はレジストリ制御は敷居が高く面倒ですが、企業などの場合はグループポリシーと組み合わせて制御するので便利です。