如何在PowerShell中测试带证书与不带证书的Web连接?
绕过PowerShell HTTPS证书验证的测试方案
问题说明
我知道Web服务安装证书后,能用PowerShell的Invoke-WebRequest命令访问HTTPS站点测试连接,但想搞清楚:能不能绕过证书验证来测试连接?会不会出现证书验证不通过导致正常连接失败,但绕过验证后连接成功的情况?目前我已经能通过Invoke-WebRequest -Uri "https://..." -UseBasicParsing -TimeoutSec 10正常连接目标站点,现在需要找绕过证书验证的测试方法。
可行解法
通过自定义证书策略类,强制跳过所有证书验证步骤,就算站点连接不安全(比如用自签证书、证书过期等)也能获取响应。具体操作如下:
- 定义自定义证书验证策略:
add-type @" public class AcceptAllCertificatePolicy : System.Net.ICertificatePolicy { public bool CheckValidationResult(System.Net.ServicePoint srvPoint, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Net.WebRequest request, int certificateProblem) { return true; } } "@
- 应用该策略到全局:
[System.Net.ServicePointManager]::CertificatePolicy = New-Object AcceptAllCertificatePolicy
- 执行测试请求:
Invoke-WebRequest -Uri "https://..." -UseBasicParsing -TimeoutSec 10
说明:这个自定义策略会让PowerShell忽略所有证书相关的验证错误,直接建立HTTPS连接,适合测试证书问题导致的连接失败场景。
内容的提问来源于stack exchange,提问作者pEpOo
相关产品推荐
相关产品推荐

