先日ポストした記事「PowerShell 共有フォルダのスクリプトファイルを実行したい~自己署名証明書の作成と署名」ですが、ローカルPCで使う分には問題ありませんが、企業全体で使おうとすると設定が大変です。
今回は、中小企業向けサーバOS「Windows Server 2012 R2 Essentials」のAD CSを利用しコード署名 証明書を発行する方法をメモ。
今回の内容は既出の内容であり、テスト環境で設定した際のメモです。
今回やりたい事
今回やりたかった事は、
- Microsoft MVP for Hyper-VのMURAさん(MURA's HomePage)の記事「AD CS でコード証明書を発行する」
- AD CS でコード証明書を発行する - スクリプトセンター
結論を先に言えば、Windows Server 2012 R2 Essentialsで同設定は可能です。
今回の手順
- Windows Server 2012 R2 EssentialsのAD CSでコード署名 証明書を発行する
- クライアントPC上にコード署名 証明書をインストール
- PowerShell スクリプト ファイルにコード署名をする
今回のメリット
- 証明書の管理・発行が一元管理でき、楽である
- 複数のクライアントに展開する際、作業内容が限られるため短時間作業で完了できる
- ドメイン環境のため、コード署名を行う実行ユーザを管理出来る
手順
手順はサーバ サイドとクライアント サイドに分かれます。
先にサーバ サイドの設定を行います。
Windows Server 2012 R2 Essentialsの設定
- Windows Server 2012 R2 Essentialsにリモート接続
- アプリ一覧の[証明機関]を実行
※または、[サーバー マネージャー]→[ツール(T)]→[証明機関]
- [証明テンプレート]を右クリック→[新規作成]→[発行する証明書テンプレート]をクリック
- [証明書テンプレート]一覧から[コード署名]を選択、[OK]ボタンをクリック
- 証明書テンプレートの一覧に[コード署名]が表示されている事を確認
クライアントPCの設定
- ドメインに参加しているクライアントPCにDomain Adminsのユーザでログイン
- [Win]+[R]→[mmc]を入力し、実行
- [ファイル]→[スナップインと追加と削除]をクリック
- [利用できるスナップイン]一覧から[証明書]を選択し、[追加(A)]ボタンをクリック、[OK]ボタンをクリック
- [ユーザー アカウント]を選択、[OK]ボタンをクリック
- [選択されたスナップイン]に[証明書]が追加されたら[OK]ボタンをクリック
- 論理ストア名[個人]を選択し、右クリック→[すべてのタスク]→[新しい証明書の要求]をクリック
- [OK]ボタンをクリック
- [次へ]をクリック
- [コード署名]にチェックを入れ、[登録]ボタンをクリック
- [完了]ボタンをクリック
PowerShell スクリプト ファイルにコード署名を行う
先日ポストした記事「PowerShell 共有フォルダのスクリプトファイルを実行したい~自己署名証明書の作成と署名」の「スクリプトの署名」(記事後方)を行えば完了です。注意点
今回行う内容で注意点がいくつかあります。- AD CSでコード署名用証明書を発行するには、ドメイン環境である事
- コード署名用証明書の要求は、初期状態ではDomain Usersに権限がない事
- 証明書の有効期限が1年である事
mmcから[証明書テンプレート]を呼び出し、[コード署名]のプロパティを開くと、上記注意事項の情報と一致します。
まだ行っていませんが、[テンプレートの複製]をすることでDomain Usersに権限を与えたり、有効期限を複数年にする等が出来るかもしれません。
とはいえ、導入環境のポリシーに準拠するのか?また、テンプレート複製による運用への弊害がないのか?などを検討・検証する必要があると思っています。
AD CSとは?
何度も出てきている単語「AD CS」とは、Active Directory 証明書サービス(Active Directory Certificate Service)の事です。AD CS は、公開キー基盤 (PKI) を構築し、公開キーの暗号化、デジタル証明書、およびデジタル署名機能を提供するサーバーの役割です。
Active Directory 証明書サービスの概要 - TechnetWindows Server 2012 R2 Essentialsでは、インストール直後からAD CSが稼働されており、追加されている役割サービスは「証明機関」と「証明機関 Web登録」の二つ。
Active Directory 証明書サービスの概要で説明されている各役割サービスは下記の通りです。
役割サービス | 説明 |
証明機関 (CA) | ルート CA と下位 CA は、証明書をユーザー、コンピューター、およびサービスに発行し、証明書の有効性を管理する際に使用されます。 |
Web 登録 | CA Web 登録により、Web ブラウザーから CA に接続して、証明書を要求し、証明書失効リスト (CRL) を取得することができます。 |
コード署名 証明書(コードサイニング 証明書)とは
コード署名 証明書という言葉はここ数年で知りましたが、触り始めたのはつい最近です。触る際、色々と調べたWebサイトがありましたので、メモしておきます。
GlobalSignさんのページは図解されているので、非常に分かりやすいです。
調べて初めて分かりましたが、大手証明機関が発行するコードサイニング証明書って正直高いですね。
個人だと正直大変・・・
余談:WHS2011でもAD CSが動いています
Windows Home Server 2011(WHS2011)においてもAD CSの役割は追加されており、[証明機関]および[証明機関 Web 登録]の2個が追加されています。しかし、今回ご紹介したAD CSの証明書テンプレートは、ドメイン コントローラが必要なためWHS2011では利用出来ません。
下記のようにエラー メッセージが表示されます。
前述の通り、証明書テンプレートはドメイン環境でのみ利用できるためエラーが出ているのでしょう。
WHS2011のAD CSは何のために使ってるの?
WHS2011がAD CSを使って発行した証明書を確認すると、目的が分かります。- リモート コンピュータの ID を保証する
- リモート コンピュータの ID を証明する
WAN/LANとはず、様々なサービスを安全に、確実に利用するためかもしれませんね。