2014/03/06

Windows Server 2012 R2 Essentials AD CSでコード署名 証明書を発行し複数クライアントで利用したい

image
先日ポストした記事「PowerShell 共有フォルダのスクリプトファイルを実行したい~自己署名証明書の作成と署名」ですが、ローカルPCで使う分には問題ありませんが、企業全体で使おうとすると設定が大変です。
今回は、中小企業向けサーバOS「Windows Server 2012 R2 Essentials」のAD CSを利用しコード署名 証明書を発行する方法をメモ。
今回の内容は既出の内容であり、テスト環境で設定した際のメモです。

今回やりたい事

今回やりたかった事は、
になり、Windows Server 2012 R2 Essentialsで同設定が可能なのか?を確認してみました。
結論を先に言えば、Windows Server 2012 R2 Essentialsで同設定は可能です。
今回の手順
  1. Windows Server 2012 R2 EssentialsのAD CSでコード署名 証明書を発行する
  2. クライアントPC上にコード署名 証明書をインストール
  3. PowerShell スクリプト ファイルにコード署名をする
今回のメリット
  1. 証明書の管理・発行が一元管理でき、楽である
  2. 複数のクライアントに展開する際、作業内容が限られるため短時間作業で完了できる
  3. ドメイン環境のため、コード署名を行う実行ユーザを管理出来る

手順

手順はサーバ サイドとクライアント サイドに分かれます。
先にサーバ サイドの設定を行います。
Windows Server 2012 R2 Essentialsの設定
  1. Windows Server 2012 R2 Essentialsにリモート接続
  2. アプリ一覧の[証明機関]を実行
    ※または、[サーバー マネージャー]→[ツール(T)]→[証明機関]
    2014-03-04_160325
  3. [証明テンプレート]を右クリック→[新規作成]→[発行する証明書テンプレート]をクリック
    2014-03-04_160056
  4. [証明書テンプレート]一覧から[コード署名]を選択、[OK]ボタンをクリック
    2014-03-04_160221
  5. 証明書テンプレートの一覧に[コード署名]が表示されている事を確認
    2014-03-04_160258
クライアントPCの設定
  1. ドメインに参加しているクライアントPCにDomain Adminsのユーザでログイン
  2. [Win]+[R]→[mmc]を入力し、実行
  3. [ファイル]→[スナップインと追加と削除]をクリック
  4. [利用できるスナップイン]一覧から[証明書]を選択し、[追加(A)]ボタンをクリック、[OK]ボタンをクリック
    2014-03-04_154536
  5. [ユーザー アカウント]を選択、[OK]ボタンをクリック
    2014-03-04_154549
  6. [選択されたスナップイン]に[証明書]が追加されたら[OK]ボタンをクリック
  7. 論理ストア名[個人]を選択し、右クリック→[すべてのタスク]→[新しい証明書の要求]をクリック
    2014-03-04_160604
  8. [OK]ボタンをクリック
    2014-03-04_160711
  9. [次へ]をクリック
    2014-03-04_160723
  10. [コード署名]にチェックを入れ、[登録]ボタンをクリック
    2014-03-04_160754
  11. [完了]ボタンをクリック
    2014-03-04_160821
PowerShell スクリプト ファイルにコード署名を行う
先日ポストした記事「PowerShell 共有フォルダのスクリプトファイルを実行したい~自己署名証明書の作成と署名」の「スクリプトの署名」(記事後方)を行えば完了です。

注意点

今回行う内容で注意点がいくつかあります。
  1. AD CSでコード署名用証明書を発行するには、ドメイン環境である
  2. コード署名用証明書の要求は、初期状態ではDomain Usersに権限がない
  3. 証明書の有効期限が1年である事
もう少し突っ込んで調べてみたところ、定義されている証明書テンプレートに2,3の内容が設定されていました。
mmcから[証明書テンプレート]を呼び出し、[コード署名]のプロパティを開くと、上記注意事項の情報と一致します。
imageimage
まだ行っていませんが、[テンプレートの複製]をすることでDomain Usersに権限を与えたり、有効期限を複数年にする等が出来るかもしれません。
とはいえ、導入環境のポリシーに準拠するのか?また、テンプレート複製による運用への弊害がないのか?などを検討・検証する必要があると思っています。

AD CSとは?

何度も出てきている単語「AD CS」とは、Active Directory 証明書サービス(Active Directory Certificate Service)の事です。
AD CS は、公開キー基盤 (PKI) を構築し、公開キーの暗号化、デジタル証明書、およびデジタル署名機能を提供するサーバーの役割です。
Active Directory 証明書サービスの概要 - Technet
Windows 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では利用出来ません。
下記のようにエラー メッセージが表示されます。
image
前述の通り、証明書テンプレートはドメイン環境でのみ利用できるためエラーが出ているのでしょう。
WHS2011のAD CSは何のために使ってるの?
WHS2011がAD CSを使って発行した証明書を確認すると、目的が分かります。
  • リモート コンピュータの ID を保証する
  • リモート コンピュータの ID を証明する
WHS2011と連携するクライアントPCを厳密にチェックするため、証明書を用いてると考えています。
WAN/LANとはず、様々なサービスを安全に、確実に利用するためかもしれませんね。
image
image 
スポンサーリンク

スポンサーリンク