認証チェックを実行しない残りのエンドポイントがあります。 Linuxから簡単なcurlコマンドを実行できます。
curl -k https://application/api/about
これは応答します。
ただし、PowerShellで次を試すと失敗します。
Invoke-RestMethod https://application/api/about
その後、私は得る:
Invoke-RestMethod : The underlying connection was closed: An unexpected error occurred on a send.
At line:1 char:1
+ Invoke-RestMethod $Application
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
この問題を回避する方法を教えてください。
編集:
Invoke-WebRequestで試す:
Invoke-WebRequest -Uri "https://application/api/about"
Invoke-WebRequest:基になる接続が閉じられました:送信時に予期しないエラーが発生しました。 1行目:char:1 + Invoke-WebRequest -Uri " https:// application/api/a ... + ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ + CategoryInfo:InvalidOperation:(System.Net.HttpWebRequest:HttpWebRequest)[Invoke-WebRequest]、WebException + FullyQualifiedErrorId:WebCmdletWebResponseException、Microsoft.PowerShell.Commands.InvokeWebRequestCommand
を使用して:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
私の場合、TLSトリックは機能しませんでしたが、これはPowerShellのバグのようです。コールバックを追加する必要がありますscriptblockの代わりに.netコードを使用。
#C# class to create callback
$code = @"
public class SSLHandler
{
public static System.Net.Security.RemoteCertificateValidationCallback GetSSLHandler()
{
return new System.Net.Security.RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return true; });
}
}
"@
#compile the class
Add-Type -TypeDefinition $code
#disable checks using new class
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = [SSLHandler]::GetSSLHandler()
#do the request
try
{
invoke-WebRequest -Uri myurl -UseBasicParsing
} catch {
# do something
} finally {
#enable checks again
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = $null
}