2017-09-19 1 views
3

PFX証明書をマシンストアにインポートするPowershellスクリプトがあります。このスクリプトは、シェフによって呼び出されることを意図しています。私はそれを手動で実行すると、素晴らしい動作します。しかし、シェフがそれを実行すると、操作の半分しか完了していないようです。 MMCで、私は自分の証明書を見ることができ、Powershellは私の秘密鍵をインポートした後にそれを削除するのはなぜですか?

Examining certificate for import: c:\www\certificates\xyz.pfx 
Importing as PFX 
Thumbprint is 206E30F2694C8627C18EAE97729C643A3CC1317E 
Enter PFX password: 
Certificate "xyz" added to store. 

CertUtil: -importPFX command completed successfully. 
Updating private key permissions: C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\aee87c90ef6606b733130f970131e498_051677f6-7959-49c2-afb8-d2fad091409a 

そして:私のログで

echo "Importing as PFX" >> $log 

$rule = new-object security.accesscontrol.filesystemaccessrule ".\IIS_IUSRS", "Read", allow 

$pfx = Get-PfxCertificate -FilePath $file 
$certThumbprint = $pfx.Thumbprint 

echo "Thumbprint is $certThumbprint" >> $log 

"$password" | certutil -ImportPFX "$certStoreLocation" "$file" >> $log 

$keyPath = "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\" + (((Get-ChildItem -Path cert:\LocalMachine\My | Where-Object { $_.thumbprint -eq $certThumbprint }).PrivateKey).CspKeyContainerInfo).UniqueKeyContainerName 

echo "Updating private key permissions: $keyPath" >> $log 

$acl = get-acl -path $keyPath 

$acl.AddAccessRule($rule) 

# Allow IIS to read this private key 
set-acl $keyPath $acl 

は、私が成功した出力を参照してください。しかし、ログに記載されているパスが見つからないため、プライベートキーを調べて調べると、そのパスが失われていると表示されます。繰り返しますが、これを自分で実行すると、うまくインポートされます。私は非常識つもり

思考は、私は何が起こっているかを確認するためにプロセスモニタを使用:

Process Monitor output showing that the file is marked for deletion

は、私はなぜ知らないが、PowerShellを削除するときのために秘密鍵をマークしているようですファイルを閉じます。何??なぜ???

注:

  • それはCNG証明書ではなく、私が上で10〜12時間を失ったCSP証明書、としてそれをインポートするので、私は、インポート、PFXCertificateを使用することはできません。
  • ACLの設定に関連するすべての部分を削除しても、問題は発生しません。しかし、私のアプリケーションは秘密鍵を読み取ることができません。
+0

。私が見つけたのはシェフがLocalSystemとして走っていることです。私が疑うことは、証明書がローカル管理アカウントを含まない特定のADアクセスで作成されたことです。私はまだこれについては知らないが、誰もが何を思いつくのか興味がある。 – JackChance

答えて

0

Windowsで証明書を管理するために既存のシェフリソースを使用しない理由はありますか?

https://github.com/chef-cookbooks/windows#windows_certificate

あなたrceipeは、単にの場合、次のようになります(?)私は似た/同じ問題に頭をバッシングしてきた

windows_certificate 'c:\www\certificates\xyz.pfx' do 
    pfx_password "my_password" 
    private_key_acl [".\IIS_USRS"] 
    store_name  "MY" 
end 
関連する問題