2016-09-09 23 views
1

PowerShellを使用して証明書をインストールしようとしています。自分のコンピュータとのリモートセッションを作成してインストールをテストしています。リモートセッションの外で証明書が正常にインストールされるため、コマンドが正しいことがわかります。私は自分のコンピュータへのリモートセッションを行うと、私はエラーが表示されます。PowerShellを使用してリモートマシンに証明書をインストールするにはどうすればよいですか?

Access is denied. 0x80070005 (WIN32: 5 ERROR_ACCESS_DENIED). This may be the result of user credentials being required on the remote machine. See Enable-WSManCredSSP Cmdlet help on how to enable and use CredSSP for delegation with PowerShell remoting.

私はリモートセッションせずにこのコマンドを実行する場合、それは動作します:

Import-PfxCertificate -FilePath "\\network\storage\site.com.pfx" -CertStoreLocation "Cert:\\LocalMachine\\WebHosting" -Password (ConvertTo-SecureString -String "foobar" -AsPlainText -Force) 

私は(Invoke-Command経由)コマンドを実行するとリモートセッションで上記のエラーが発生しました:

$session = New-PSSession $Env:ComputerName 
Invoke-Command -Session $session -ScriptBlock { Import-PfxCertificate -FilePath "\\network\storage\site.com.pfx" -CertStoreLocation "Cert:\\LocalMachine\\WebHosting" -Password (ConvertTo-SecureString -String "foobar" -AsPlainText -Force) } 

このアクセス許可の問題を回避するにはどうすればよいですか?

答えて

2

いわゆるダブルホップ認証の問題が発生しています。通常の認証を使用している場合は、コマンドを実行しているマシンから2台目のコンピュータを認証することはできません。

これを解決するには、CredSSPを使用できます。

Enable-WSManCredSSP -Role Server -force 

クライアント上のCredSSPを有効にするには:

Enable-WSManCredSSP -Role Client -DelegateComputer server.domain.com -force 

-delegateComputerパラメータがFQDNを期待するだけでなく、ワイルドカードを取ると呼ばれているマシン上のCredSSPを有効にするには

のCredSSPを有効にした後、あなたは、私がアクセス許可の問題を回避しようとしているdarnist時間を持っていたし、最終的にそれを別の方向に行ってきましたパラメータ-authentication CredSSP

+0

この回答に加えて、この方法とその理由を知りたい場合は、ここで「Powershell remotingの秘密」を参照してください。https://devopscollective.gitbooks.io/secrets-of-powershell-remoting/ content/manuscript/accessible-remote-computers.html、特に最後の2つのセクション。 – Astrotrain

+0

レスポンスPaulに感謝します。私は私がリモートセッション(鶏と卵の問題私は推測)を介してそのコマンドを有効にすることができないと仮定?私たちは、サーバーとアプリケーションのセットアップを完全に自動化するため、グループポリシーやその他の手段でこれとは別の方法でアプローチする必要があります。 –

+0

@JustinHelgersonは100%確信していませんが、私はあなたが正しく推測していると思います;)グループポリシーは、それが行く方法です:https://msdn.microsoft.com/en-us/library/windows/desktop/bb204773(v= vs.85).aspx – Paul

0

であなたのコマンドを呼び出すためにそれを使用することができます。パーミッションの変更に関しては、不具合\バグがあります。すべての詳細は覚えていませんが、ACLプロパティは変更しようとしているキーの所有権にアクセスしようとします。これはすべての人にとって理想的ではないかもしれませんが、NLA RDPのすべてのシステムに証明書を展開するためにはうまくいきました。

Set-Location "c:\windows\system32" 
#if certificate is missing, will install wild card certificate into the store 
icacls 'C:\ProgramData\Microsoft\Crypto\Keys' /save C:\ProgramData\Microsoft\Crypto\Keys\ACLfile_for_Keys_Dir /T 
takeown /f C:\ProgramData\Microsoft\Crypto\Keys\*.* 
icacls 'C:\ProgramData\Microsoft\Crypto\Keys\*.*' /grant 'Network Service:(R)' 
#icacls C:\ProgramData\Microsoft\Crypto /restore C:\ProgramData\Microsoft\Crypto\Keys\ACLfile_for_Keys_Dir #(restores original ACL for recovery) 
icacls 'C:\ProgramData\Microsoft\Crypto\keys' /setowner system 
icacls 'C:\ProgramData\Microsoft\Crypto\keys\*.*' /setowner system 

コメントアウトされた2行は、問題が発生した場合のバックアウト計画です。