本記事は、2025年11月10日に以前公開していた内容から大幅に更新されています。
特に「ゼロタッチ証明書配布について」以降の内容に変更があります。
過去にご覧いただいていた方は、改めて内容をご確認いただくことを推奨いたします。
「NetAttest EPS-ap(ネットアテスト イーピーエス エーピー)」は、インターネット経由でも秘密鍵を外部に漏らさず、安全に証明書の配布ができる製品です。
オールインワン認証アプライアンス 「NetAttest EPS (ネットアテスト イーピーエス)」のオプション製品として、株式会社ソリトンシステムズが開発・販売しています。
NetAttest EPS-ap は、SCEP(Simple Certificate Enrollment Protocol)経由で証明書を配布することにより、端末内の証明書情報(秘密鍵)の漏洩を防ぎ、安全な証明書認証環境を構築することができます。
証明書の配布方法において、EPS-apではSoliton KeyManagerという専用アプリをインストールして使用します。
本記事では、以下の項目についてご紹介します。
Windowsでは、プログラムをインストールする際などに管理者権限を要求されることがあります。
Soliton KeyManagerをインストールする際には管理者権限が必要になります。
管理者権限を持ったアカウントであれば問題ありませんが、ユーザー権限のみ付与しているアカウントもあるかと思います。
その場合、Soliton KeyManagerをインストールすることができません。
Active Directoryのグループポリシーにおけるスタートアップスクリプトを利用することで、管理者権限がない環境でもSoliton KeyManagerのインストールが可能です。
補足
クライアントPCには、以下のコマンドを入力することでグループポリシーを強制適用することも可能です。
コマンド:gpupdate /force
ゼロタッチ証明書配布を行う際、KeyManagerへのログインにユーザーIDが必要となります。
このユーザーIDを共通の管理者アカウントとしてバッチファイルに埋め込むことで、スクリプトの共通化が可能となり、複数端末への展開や運用が効率化されます。
そのため、バッチファイルに埋め込むユーザーは共通の管理者アカウントを使用するケースが多くなります。
1、共通の管理者アカウントを使用して複数端末から同時にコマンド実行
SCEPのMDMチャレンジはユーザーIDごとに生成され保持されます。SCEPリクエストに含まれるMDMチャレンジがこれと一致すれば証明書が自動的に発行されます。
しかし、同一ユーザーIDで複数端末から同時に申請が行われると、後から実施した申請のMDMチャレンジが上書きされて、先に行われた申請のSCEPリクエストが自動発行されずに証明書取得に失敗します。
共通の管理者アカウントをコマンドに埋め込んで配布したスクリプトなどで同時に実行された場合に、この問題が発生する可能性があります。
そのため、コマンド実行時の共通の管理者アカウントにWindowsの環境変数を付けてユニークなユーザーIDにすることで回避可能です。
2、同時処理数
ゼロタッチ証明書配布では複数の端末に自動で証明書配布が可能になります。
しかし、EPS-apまたはEPSの処理能力以上の端末から申請を行うと証明書配布に失敗します。
そのため、AD上のグループ毎で実施やバッチファイルに実行タイミングをずらすスクリプトを記載するなど同時申請数の調整を行ってください。
EPSにて、「共通の管理者アカウント」+「コンピューター名」または「ユーザー名」のユーザーIDでも「共通の管理者アカウント」として認証が成功するように構成します。
例) 「admin01%USERNAME%」、「admin01%COMPUTERNAME%」などを「admin01」として認証させる
サービス管理ページ(https://EPSのホスト名またはIPアドレス:2181)
高度なメニュー>RADIUS>詳細設定>アドバンス設定
・hints_added.in
ユーザーストアへ証明書をインストールするには、ログオンスクリプトを使用します。
ログオンスクリプトでは、ユーザーのログオン時にログオンユーザーの権限でスクリプトが実行されます。
ユーザーログオン時にユーザーストアへ証明書をインストールするバッチファイルを作成します。
実行タイミングを0~3600秒の範囲で遅らせます。
例)ユーザーストアへ証明書のインストール実行コマンド
環境変数「%USERNAME%」は申請するPCのユーザー名が自動的に反映されます。
例えば「/u admin01%USERNAME%」で申請すると、ユーザーIDは「admin01user01」のようになります(%USERNAME%が「user01」の場合)。
また、オプションの「/cn」を使用することで、証明書のCNに申請したPCのユーザー名を設定することができます。
| オプション | 説明 |
| /cl | コマンドラインで実行 |
| /su | 格納先を指定する(/su = ユーザーストア) |
| /h | ホスト名またはIPアドレスを指定する |
| /hp | ポート番号を指定する |
| /u | 申請ユーザーを指定する |
| /p | 申請ユーザーのパスワード(平文)を指定する (暗号化したパスワードを使用する場合は、「/ep」オプションを使用する) |
| /cn | 証明書のCNをユーザー名に指定する |
※ご紹介しているオプションは一部となります。
全てのオプションについては製品マニュアルをご参照ください。(現在、マニュアルは準備中です)
補足
[委任]にDomain Computersを登録しないと、ログオンスクリプトが正常に実行されませんでした。
補足
クライアントPCには、以下のコマンドを入力することでグループポリシーを強制適用することも可能です。
コマンド:gpupdate /force
参考
[グループポリシー管理エディター]の[コンピューターの構成]-[ポリシー]-[Windowsの設定]-[セキュリティの設定]-[公開キーのポリシー]-[信頼されたルート証明機関]で、あらかじめCA証明書をインポートしグループポリシーで配布しておくことで、「3.」のCA証明書のインストールを行う操作を省略する(メッセージを表示させない)ことも可能です。
コンピューターストアへ証明書をインストールするには、スタートアップスクリプトを使用します。
スタートアップスクリプトでは、コンピューター起動時にSYSTEMアカウント権限でスクリプトが実行されます。
クライアントPC起動時にコンピューターストアへ証明書をインストールするバッチファイルを作成します。
実行タイミングを0~3600秒の範囲で遅らせます。
例)コンピューターストアへ証明書のインストール実行コマンド
環境変数「%COMPUTERNAME%」は申請するPCのコンピューター名が自動的に反映されます。
例えば「/u admin01%COMPUTERNAME%」で申請すると、ユーザーIDは「admin01testPC02」のようになります(%COMPUTERNAME%が「testPC02」の場合)。
また、オプションの「/cn」を使用することで、証明書のCNに申請したPCのコンピューター名を設定することができます。
| オプション | 説明 |
| /cl | コマンドラインで実行 |
| /sc | 格納先を指定する(/sc = コンピューターストア) |
| /h | ホスト名またはIPアドレスを指定する |
| /hp | ポート番号を指定する |
| /u | 申請ユーザーを指定する |
| /p | 申請ユーザーのパスワード(平文)を指定する (暗号化したパスワードを使用する場合は、「/ep」オプションを使用する) |
| /cn | 証明書のCNをコンピューター名に指定する |
※ご紹介しているオプションは一部となります。
全てのオプションについては製品マニュアルをご参照ください。(現在、マニュアル準備中です)
補足
クライアントPCには、以下のコマンドを入力することでグループポリシーを強制適用することも可能です。
コマンド:gpupdate /force