1

を読み取ることができません。 1つのノードを持つ紺色のサービスファブリッククラスタですが、この問題は重要ではありません。ネットワークサービスのユーザーは、私は私の窓2012サーバー・マシン上で実行されているローカルサービスを持っている証明書のWindowsサーバー2012

サービスは、「ネットワークサービスの下で実行されます。。ユーザー、およびローカルマシンに格納された証明書にアクセスするコードを有するX509Certificate2Collection.Find方法を使用して証明書を発見コード

例外がある:

スロー

例外:がmscorlib.dllで「System.AggregateException」

追加情報:成功したサムプリントを使用して アクセストークンを取得できませんでした:80CEA40A62FFA0116FCB40B7B5985ADCD3E5AC39

私は管理者ユーザとしてローカルに同じパラメータで同じ検索機能を実行すると、それが動作します。私は明示的にネットワークサービスをユーザーに付与しようとしている

は、証明書の許可を読んで、これはそれを解決しませんでした。

Iは、ネットワークサービスユーザコンテキストでローカルコードを実行しようとしている(非展開ローカルサービスが、ローカル実行可能コードスニペットなど)奇妙された証明書を取得し、この作品、。

答えて

0

私は、問題は、ネットワークサービスが秘密鍵へのアクセス権を持っていないことであると思うだろう。私はそれは私が何を意味するかだ(私は秘密鍵

Import-PfxCertificate -CertStoreLocation Cert:\LocalMachine\My -FilePath "path to the pfx file" 
$certs = Get-ChildItem -Path cert:\LocalMachine\My 

Foreach ($cert in $certs) 
{ 
# Specify the user, the permissions and the permission type 
$permission = "Network Service","FullControl","Allow" 
$accessRule = New-Object -TypeName 
System.Security.AccessControl.FileSystemAccessRule -ArgumentList $permission 

# Location of the machine related keys 
$keyPath = Join-Path -Path $env:ProgramData -ChildPath "\Microsoft\Crypto\RSA\MachineKeys" 
$keyName = $cert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName 
$keyFullPath = Join-Path -Path $keyPath -ChildPath $keyName 

# Get the current acl of the private key 
$acl = (Get-Item $keyFullPath).GetAccessControl('Access') 

# Add the new ace to the acl of the private key 
$acl.SetAccessRule($accessRule) 

# Write back the new acl 
Set-Acl -Path $keyFullPath -AclObject $acl -ErrorAction Stop 

# Observe the access rights currently assigned to this certificate. 
get-acl $keyFullPath| fl 
} 
+0

へのアクセスを持って自分のストアに証明書をインポートした後、私は、WindowsのMMCの証明書マネージャを経由して、秘密鍵へのアクセス許可を与えている、権限を設定するには、次のコードを使用します「ユーザーに証明書の読み取り権限を与える」)、スクリプトを試してみます –

+0

どの.pfxファイルが自分の証明書に関連付けられているかを知る手掛かりはありますか? –

+0

オリジナルを持っていない場合は、プライベートキーにアクセスできるユーザーとしてログインし、秘密キーでpfxにエクスポートします:) –

関連する問題