0

我正在尝试调试使用Invoke-WebRequest进行 https 调用的脚本。由于证书错误而不允许请求,因此我需要运行以下命令来禁用 SSL 验证:

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

但是,当我尝试运行此命令时,出现以下错误:

Unable to find type [System.Net.ServicePointManager].
At line:1 char:1
+ [System.Net.ServicePointManager]::ServerCertificateValidationCallback ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.ServicePointManager:TypeName) [], RuntimeException
    + FullyQualifiedErrorId : TypeNotFound

操作系统:macOS Sierra

要复制问题:

4

2 回答 2

1

在版本 5 之前的 Windows PowerShell 上,您尝试使用的解决方法是必需的,因为 Invoke-WebRequest cmdlet 没有一种方便的方法来忽略证书检查。

在 PowerShell 6+ 中,由于自签名证书在开源世界中的盛行,Invoke-WebRequest 被升级为包含许多新的开关参数来处理它们。特别是查看cmdlet 文档中-SkipCertificateCheck的参数。

该参数将允许您接受未知证书来加密您的连接,就像您在此处尝试执行的操作一样。

于 2019-04-19T04:40:21.660 回答
1

对此不太熟悉,但是...您提供的 PowerShell for OS X 链接似乎使用 .NET Core。但是,System.Net.ServicePointManager.NET Core 不支持。

挖掘,我能够找到导致这个问题的这个 StackOverflow 问题,然后是这个问题,但老实说,我对正在发生的事情有点迷茫,因为版本号指的是很多不同的东西。我不知道什么是当前的,什么不是。

底线是,据我所知,.Net Core 的正确方法应该是Http​Client​Handler.​Server​Certificate​Custom​Validation​Callbackin System.Net.Http,但我不确定您如何使用 PowerShell 来引用它。

于 2017-05-05T21:57:26.907 回答