セキュリティ - 証明書のアクセス制御リストの修正 - アプリケーション

Microsoft.AppVirtualization.Server.45.LightWeightServer.Security_FixAccessControlListontheCertificate_Application (UnitMonitor)

Application Virtualization Server の証明書とセキュリティで保護された通信の状態に関する、セキュリティ レポートです。

Knowledge Base article:

概要

Application Virtualization Server の証明書とセキュリティで保護された通信の状態に関する、セキュリティ レポートです。

解決方法

証明書が正しくサーバーに与えられたら、Application Virtualization Service は、TLS トランザクションを完了するために秘密キーにアクセスする必要があります。 4.5 リリースでは、Application Virtualization サービスは既定で Network Service として実行されます。Network Service は、証明書秘密キーに対する読み取り許可を持つ必要があります。 

サーバー証明書の秘密キーは、次の位置にあります :

C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys

  1. 秘密キー ファイルを右クリックし、[プロパティ] をクリックします。[セキュリティ] タブをクリックします。
  2. 秘密キー ファイルの ACL を変更して、NETWORK SERVICE の読み取りアクセスを許可します。

サーバーに複数の証明書があり、どの秘密キーが Application Virtualization に対応するか不明の場合は、以下の手順を実行して、秘密キーを見つけてください。

最初に、Application Virtualization データベース サーバー証明書の拇印を見つけます。

  1. Microsoft 管理コンソール (mmc.exe) を起動します。[ファイル] > [スナップインの追加と削除] をクリックします。
  2. 利用できるスナップインにある証明書を選択します。[追加] をクリックします。
  3. ダイアログで [コンピュータ アカウント] を選択し、[次へ] をクリックします。
  4. [ローカル コンピュータ] を選択し、[完了] をクリックします。[スナップインの追加と削除] ダイアログ ボックスで、[OK] をクリックします。
  5. [証明書\信頼されたルート証明機関\証明書] ノードをクリックします。
  6. 使用する証明書をダブルクリックして、TLS を有効にします。
  7. [詳細] タブに移動します。[拇印] フィールドが表示されるまで、下にスクロールします
  8. [拇印] を選択して、拇印として表示されている情報をコピーします。

次に、拇印情報を使用して、ローカル ファイル システム上の対応秘密キー ファイルを探します。

  1. MSDN から c:\ まで FindPrivateKey ツールをダウンロードします。 http://msdn2.microsoft.com/library/ms732026.aspx
  2. コマンド プロンプトから、以下のコマンドを使用して拇印を基に、Application Virtualization サーバーに与えられている証明書に関連付けられた正しい秘密キーを見つけます。
  3. C:\> FindPrivateKey.exe My LocalMachine -t "<拇印コード>"
  4. これにより、秘密キー ディレクトリが返されます。C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
  5. これにより、秘密キー ファイル名も返されます。たとえば、c55cba5a3183f6509a3bfa7e4c7b8b6e_4df07ed6-ffdf-4c11-ac94-3dd02af9a838 などです。秘密キー ディレクトリを開いて、該当する秘密キー ファイル名を見つけます。
  6. C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys 

秘密キー ファイルに適切なアクセス権限が設定されていることを確認するには、以下の手順を実行します。

  • 秘密キー ファイルを右クリックし、[プロパティ] をクリックします。[セキュリティ] タブをクリックします。
  • 秘密キー ファイルの ACL を変更して、NETWORK SERVICE の読み取りアクセスを許可します。

    Element properties:

    TargetMicrosoft.AppVirtualization.Server.45.LightWeightServer
    Parent MonitorMicrosoft.AppVirtualization.Server.45.Security_LWS.HealthState
    CategoryEventCollection
    EnabledTrue
    Alert GenerateTrue
    Alert SeverityMatchMonitorHealth
    Alert PriorityNormal
    Alert Auto ResolveTrue
    Monitor TypeMicrosoft.Windows.SingleEventLogManualReset2StateMonitorType
    RemotableTrue
    AccessibilityPublic
    Alert Message
    セキュリティ - 証明書のアクセス制御リストの修正 - アプリケーション
    {0}
    RunAsDefault

    Source Code:

    <UnitMonitor ID="Microsoft.AppVirtualization.Server.45.LightWeightServer.Security_FixAccessControlListontheCertificate_Application" Accessibility="Public" Target="Microsoft.AppVirtualization.Server.45.LightWeightServer" TypeID="Windows!Microsoft.Windows.SingleEventLogManualReset2StateMonitorType" ParentMonitorID="Microsoft.AppVirtualization.Server.45.Security_LWS.HealthState">
    <Category>EventCollection</Category>
    <AlertSettings AlertMessage="Microsoft.AppVirtualization.Server.45.LightWeightServer.Security_FixAccessControlListontheCertificate_Application.Alert">
    <AlertOnState>Error</AlertOnState>
    <AutoResolve>true</AutoResolve>
    <AlertPriority>Normal</AlertPriority>
    <AlertSeverity>MatchMonitorHealth</AlertSeverity>
    <AlertParameters>
    <AlertParameter1>$Data/Context/EventDescription$</AlertParameter1>
    </AlertParameters>
    </AlertSettings>
    <OperationalStates>
    <OperationalState ID="EventRaised" MonitorTypeStateID="EventRaised" HealthState="Error"/>
    <OperationalState ID="ManualResetEventRaised" MonitorTypeStateID="ManualResetEventRaised" HealthState="Success"/>
    </OperationalStates>
    <Configuration>
    <ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
    <LogName>Application</LogName>
    <Expression>
    <And>
    <Expression>
    <SimpleExpression>
    <ValueExpression>
    <XPathQuery Type="String">PublisherName</XPathQuery>
    </ValueExpression>
    <Operator>Equal</Operator>
    <ValueExpression>
    <Value Type="String">Application Virtualization Server</Value>
    </ValueExpression>
    </SimpleExpression>
    </Expression>
    <Expression>
    <SimpleExpression>
    <ValueExpression>
    <XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
    </ValueExpression>
    <Operator>Equal</Operator>
    <ValueExpression>
    <Value Type="UnsignedInteger">44955</Value>
    </ValueExpression>
    </SimpleExpression>
    </Expression>
    </And>
    </Expression>
    </Configuration>
    </UnitMonitor>