You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell访问Azure存储Blob时SSL连接建立失败求助

解决Azure存储账户私有端点访问的SSL连接失败问题

问题分析

使用PowerShell通过私有端点访问Azure存储账户时出现The SSL Connection Could not be established错误,结合你的环境(私有端点限制访问、已确认网络连通),主要排查方向为端点配置错误、.NET Core SSL验证逻辑不兼容、权限缺失三类问题。

修复步骤

1. 修正存储上下文的Endpoint格式

私有端点的域名需严格遵循Azure的命名规则,Blob存储的私有端点格式为{存储账户名}.private.blob.core.windows.net,修改New-AzStorageContext命令:

$storageContext = New-AzStorageContext -StorageAccountName $saName -Endpoint "$saName.private.blob.core.windows.net" -Protocol https -UseConnectedAccount

可在Azure门户的私有端点资源→DNS配置中确认实际域名。

2. 适配PowerShell 7的SSL跳过逻辑

你当前使用的ServicePointManager回调仅对.NET Framework生效,PowerShell 7基于.NET Core,需使用以下代码强制跳过SSL证书验证:

# 加载自定义证书信任策略
Add-Type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
    public bool CheckValidationResult(
        ServicePoint srvPoint, X509Certificate certificate,
        WebRequest request, int certificateProblem) {
        return true;
    }
}
"@
# 应用策略
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

3. 正确捕获完整异常信息

默认情况下PowerShell不会将非终止错误抛出到try/catch,需添加-ErrorAction Stop参数:

try {
    Get-AzStorageBlob -Context $storageContext -Container $containerName -ErrorAction Stop
}
catch {
    Write-Host "错误详情: $($_.Exception.Message)"
    # 递归输出所有内部异常
    $innerEx = $_.Exception.InnerException
    while ($innerEx) {
        Write-Host "内部错误: $($innerEx.Message)"
        $innerEx = $innerEx.InnerException
    }
}

4. 额外验证项

  • 检查本地服务器hosts文件是否已映射私有端点域名到对应的私有IP
  • 确认服务主体已被授予存储账户的Storage Blob Data Reader或更高权限(仅资源层面的Contributor权限无法访问Blob数据)
  • 验证私有端点所属的网络安全组(NSG)是否允许本地服务器的IP段访问

内容的提问来源于stack exchange,提问作者Aakash Ravindran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 13:02:28