【问题标题】:Issue Creating SSL/TLS secure channel创建 SSL/TLS 安全通道的问题
【发布时间】:2021-01-29 22:19:43
【问题描述】:

下面给出的 PowerShell 脚本基本上检查备份库中的备份作业,并将每日备份作业报告发送到提到的电子邮件。由于脚本引发错误,我正面临问题 Invoke-RestMethod : The request was aborted: Could not create SSL/TLS secure channel 我在用于邮件服务的 Kv 中使用 SendGrid Api Key。也尝试添加更新的 TLS 版本,但仍然抛出相同的错误。

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Remove-Variable -Name * -ErrorAction SilentlyContinue
$numberofdays = 2
$DAILYBACKUPSTATS = @() 
$DAILYBACKUPSTATS1 = @()
$DAILYBACKUPSTATSFAILED = @()
$DAILYBACKUPSTATSFAILED1 = @()
$Subscriptions = Get-AzSubscription 
$SubscriptionIDs = $Subscriptions.ID  

foreach ($SubscriptionID in $SubscriptionIDs) {
    $Subscription = Set-AzContext -SubscriptionId $SubscriptionID
    $backupvaults = Get-AzRecoveryServicesVault 
    $backupvaultnames = $backupvaults.name 

    foreach ($backupvaultname in $backupvaultnames)
    {
        $backupvault = Get-AzRecoveryServicesVault -Name $backupvaultname
        $startdate = [system.Datetime]::UtcNow
        $enddate = ([system.Datetime]::UtcNow).AddDays(1)

        for ( $i = 1; $i -le $numberofdays; $i++ ) { 
            # We query one day at a time 
            $dailyjoblist = Get-AzRecoveryServicesBackupJob -VaultId $backupvault.ID  -From $startdate -To $enddate -Operation Backup;
            
            foreach ( $job in $dailyjoblist ) { 
                #Extract the information for the reports 
                $message.Body
                $newstatsobj = New-Object System.Object 
                $newstatsobj | Add-Member -type NoteProperty -name Subscription -value (Get-AzSubscription -SubscriptionId $SubscriptionID).Name
                $newstatsobj | Add-Member -type NoteProperty -name Date -value $job.StartTime 
                $newstatsobj | Add-Member -type NoteProperty -name RecoveryVaultName -value $backupvaultname
                $newstatsobj | Add-Member -type NoteProperty -name VMName -value $job.WorkloadName 
                $newstatsobj | Add-Member -type NoteProperty -name Duration -value $job.Duration 
                $newstatsobj | Add-Member -type NoteProperty -name Status -value $job.Status
                $details = Get-AzRecoveryServicesBackupJob -VaultId $backupvault.ID -Job $job 
                $DAILYBACKUPSTATS += $newstatsobj 
            }

            $enddate = $enddate.AddDays(-1) 
            $startdate = $startdate.AddDays(-1)

            #Sets the columns 
            $a = "<style>" 
            $a = $a + "BODY{background-color:white;}"
            $a = $a + "TABLE{border-width: 3px;border-style: double;border-collapse: collapse;font-family: Calibri;}" 
            $a = $a + "TH{border-width: 3px;padding: 2px;border-style: double;background-color:SandyBrown;font-family: Calibri;}" 
            $a = $a + "TD{border-width: 3px;padding: 2px;border-style: double;font-family: Calibri;}" 
            $a = $a + "</style>"

        }
    }
}
$DAILYBACKUPSTATS += $DAILYBACKUPSTATS1
$EmailBody = "<table width='70%'><tbody>"
$EmailBody += "<tr>"
$EmailBody += "<td width='100%' colSpan=4><font face='Calibri' color='#003399' size='3'>Azure Recovery Services Vault Backup Job Status<BR>NOTE: Date is UTC<BR><BR>"
$EmailBody += "</tr>"
$EmailBody += "</table>"

$message1 = $DAILYBACKUPSTATS | ConvertTo-Html -Head $a 
$EmailBody += $message1

$content  = $emailBody


$VaultName = "Parent-kv"
$SENDGRID_API_KEY = (Get-AzKeyVaultSecret -VaultName $VaultName -Name "Sendgrd-api").SecretValue
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer " + $SENDGRID_API_KEY)
$headers.Add("Content-Type", "application/json")
$destEmailAddress = "jon@mail.com"
$fromEmailAddress = "Azure-NoReply@cla.com"

$body = @{
personalizations = @(
    @{
        to = @(
                @{
                    email = $destEmailAddress
                }
        )
    }
)
from = @{
    email = $fromEmailAddress
}
subject = $subject
content = @(
    @{
        type = "text/html"
        value = $content
    }
)
}

$bodyJson = $body | ConvertTo-Json -Depth 4

$response = Invoke-RestMethod -Uri https://api.sendgrid.com/v3/mail/send -Method Post -Headers $headers -Body $bodyJson

【问题讨论】:

    标签: azure powershell api sendgrid


    【解决方案1】:

    你很可能在这里搜索一大堆潜在的补救措施。

    The request was aborted: Could not create SSL/TLS secure channel

    我还建议:

    • 验证凭据 ($SENDGRID_API_KEY) 是否正确。
    • 运行网络嗅探器以查看 SSL 握手并查看是否有任何异常。

    【讨论】:

      猜你喜欢
      • 2018-12-19
      • 2021-12-13
      • 2014-12-26
      • 2017-02-10
      • 2017-08-22
      • 2016-08-03
      • 2018-06-17
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多