PowerShellにはかなり新しく、誰かが私を正しい方向に向けることを願っています。Powershell http投稿と.cer for auth
私はPOST要求を実行する必要があり、認証のためにPOST要求中にローカルに保存された証明書(x509)を渡す必要があります。
これを行うための最善の方法または方法は何ですか?私は.net/C#でこのタスクを実行できる多くの例を見つけましたが、PowerShellでこのタスクを達成するものは何も見つかりません。
私のPOST要求コードは、ここでもローカルで「C:\ code \ cert.crt」に格納されている証明書を指して、Webトランザクション中に渡したいと思います。
$url = "https://myUrl/uploadTester"
$data = '{"data": "988309487577839444"}'
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$b = [System.Text.Encoding]::ASCII.GetBytes($data)
$web = [System.Net.WebRequest]::Create($url)
$web.Method = "POST"
$web.ContentLength = $b.Length
$web.ContentType = "application/x-www-form-urlencoded"
$stream = $web.GetRequestStream()
$stream.Write($b,0,$b.Length)
$stream.close()
$reader = New-Object System.IO.Streamreader -ArgumentList $web.GetResponse().GetResponseStream()
$reader.ReadToEnd()
$reader.Close()
ありがとうございました。
迅速な返信アンディいただきありがとうございます。私は1つの質問がある: – user1048209
クイック返信アンディのおかげで。私はコードに関する1つの質問があります。それでも "ServerCertificateValidationCallback = {$ true}"という行を残す必要がありますか?これはすべての証明書のチェックを完全に無視しませんか?あるいは、私が証明書を提供する際に、実際の証明書の確認を行うCreate($ url)を使用しているという事実はありますか? – user1048209
@ user1048209 ServerCertificateValidationCallback = {$ true}は、サーバーに送信されるクライアント証明書ではなく、サーバー側の証明書検証用のものだと思います。 –