基础连接已关闭:发送时发生意外错误



我在使用本地ISE使用以下API从GCP获取项目详细信息时遇到了这个问题。我使用下面的代码来获取代币并点击GCP。

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$Uri = "https://IpAddress/api/token/gcp/" 
$jwtToken = Invoke-RestMethod -Uri $Uri -Method POST -ContentType "application/json" -Body {}
$token = $jwtToken.access_token   
$getUrl = "https://cloudresourcemanager.googleapis.com/v3/projects/XXXXXXXXX"
$headers = @{'Content-Type'='application/json';'Authorization'='Bearer $token'}
$getTags = Invoke-RestMethod -Uri $getUrl -Method Get -Headers $headers

脚本的前4行用于获取令牌,该令牌用于获取项目详细信息。当我尝试在没有此[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}的情况下获取令牌时,出现了类似的错误。

The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

为了解决这个问题,我在我的脚本中添加了以下代码行

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

上面的一行干扰了整个剧本吗?或者我有什么遗漏了。有人能帮我把这个错误分类吗。

谢谢

[更新]

你的问题是这行代码:

$Uri = "https://IpAddress/api/token/gcp/"

只有自签名证书具有CN的IP地址(通用名称(。这就是证书验证失败的原因。

IpAddress更改为域名。如果您的服务没有与SSL证书匹配的域名,那么您必须禁用证书验证,或者编写一个自定义验证器来了解自签名证书的哈希值。

[结束更新]

通过将ServerCertificateValidationCallback设置为返回true,可以防止证书验证(忽略证书错误(。

不要禁用证书验证

根证书或TLS协议版本存在潜在问题。

更换

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

[Net.ServicePointManager]::SecurityProtocol = Net.SecurityProtocolType]::Tls12

相关内容

  • 没有找到相关文章

最新更新