web-dev-qa-db-ja.com

Azure DevOps PowerShellスクリプトはSSL / TLSセキュアチャンネルを作成できませんでした

問題:
[。]コマンドを呼び出した場合 Get-Azuredeployment (Get-AzuredeService)から 'Azure PowerShell' Devopsのタスク Pipeline私は: ' 要求は中止されませんでした:作成できませんでした:作成できませんでしたSSL/TLSセキュアチャンネル。 '

序章:

  • Azure DevOpsを使用してAzure Cloud Service(Classic)をAzureに展開します。
  • 「Azure PowerShell」のタスクは全体的に取り組んでいましたが、それが停止しなくなったものを変更せずに
  • また、(DevOpsによって使用されている)証明書(Import-AzurePublishSettingsFile)にインポートし、同じPowerShellスクリプトを実行しようとし、EveryTnigはうまく機能します DevOpsの問題が期待されています

DevOps接続:

  • Azure DevOpsに「サービス接続」を作成してAzureに接続しました
  • サービス接続は「Azure Classic」のタイプです(「Azure Resource Manager」は「クラウドサービスクラシック」ではありません)
  • 「Azure Classic Service Connection」の自己停止方法は「証明書ベース」です。
  • Azureサブスクリプションに「公開設定ファイル」によって生成された証明書を使用しました。証明書はAzureによってマイサブスクリプション - >管理証明書に配置されました(有効期限は2021年半ばにあります)。
  • アプリケーションを展開するためのこのサービス接続を使用します (クラウドサービスクラシック) クラウドサービスクラシック)への(問題ない場合 (DevOpsタスク 'Azure Cloud Service Deployment') ただし 'Azure PowerShell'タスクの開始失敗

これはすべて3ヶ月間勤務していてから、何らかの理由で働いていました。奇妙なことは、私がDevOpsで遊んでいたとき、タスクの何が間違っているのかを調べたことはかつて正常に実行されましたが、もう一度試したときにもう一度エラーが発生しました。

私はSucessful Callと失敗した呼び出しからの両方のログを持っています。 2506行のログが同一であり、変更はこの行の後です。

私はあなたに両方の完全なログを送ることができますが、私はここにいたくないログをここに置きたくありません。

試してみる

VERBOSE: 8:31:40 AM - Begin Operation: Get-AzureDeployment
VERBOSE: 8:31:42 AM - Completed Operation: Get-AzureDeployment
... some other info about the deployment in slot
 _

失敗したコールからログ:

VERBOSE: 9:53:39 AM - Begin Operation: Get-AzureDeployment
##[debug]Caught exception from task script.
##[debug]Error record:
##[debug]Get-AzureDeployment : An error occurred while sending the request.
##[debug]At D:\a\r1\a\_Tools\Powershell\cloud-service_swap-slot.ps1:14 char:15
##[debug]+ ... eployment = Get-AzureDeployment -Slot "Staging" -ServiceName $CloudSe ...
##[debug]+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
##[debug]    + CategoryInfo          : CloseError: (:) [Get-AzureDeployment], HttpRequestException
##[debug]    + FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceManagement.HostedServices.GetAzureDeploymentComma    nd
##[debug] 
##[debug]Script stack trace:
##[debug]at <ScriptBlock>, D:\a\r1\a\_Tools\Powershell\cloud-service_swap-slot.ps1: line 14
##[debug]at <ScriptBlock>, <No file>: line 1
##[debug]at <ScriptBlock>, D:\a\_tasks\AzurePowerShell_72a1931b-effb-4d2e-8fd8-f8472a07cb62\3.171.2\AzurePowerShell.ps1: line 145
##[debug]at <ScriptBlock>, D:\a\_tasks\AzurePowerShell_72a1931b-effb-4d2e-8fd8-f8472a07cb62\3.171.2\AzurePowerShell.ps1: line 141
##[debug]at <ScriptBlock>, <No file>: line 1
##[debug]at <ScriptBlock>, <No file>: line 22
##[debug]at <ScriptBlock>, <No file>: line 18
##[debug]at <ScriptBlock>, <No file>: line 1
##[debug]Exception:
##[debug]System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
##[debug]   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
##[debug]   at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
##[debug]   --- End of inner exception stack trace ---
##[debug]   at Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
##[debug]   at Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
##[debug]   at Microsoft.WindowsAzure.Management.Compute.DeploymentOperationsExtensions.GetBySlot(IDeploymentOperations operations, String serviceName, DeploymentSlot deploymentSlot)
##[debug]   at Microsoft.WindowsAzure.Commands.Utilities.Common.ServiceManagementBaseCmdlet.ExecuteClientActionNewSM[TResult](Object input, String operationDescription, Func`1 action, Func`3 contextFactory)
##[error]An error occurred while sending the request.
##[debug]Processed: ##vso[task.logissue type=error]An error occurred while sending the request.
##[debug]Processed: ##vso[task.complete result=Failed]
 _

どちらのログでも、PowerShellにAzureアカウントを追加するためにこれもあります。

##[debug]Added certificate to the certificate store.
##[command]Set-AzureSubscription -SubscriptionName PXX -SubscriptionId XXXXXX01-09f5-4703-bcc9-6ff914XXXXXX -Certificate ******** -Environment AzureCloud 
##[command]Select-AzureSubscription -SubscriptionId XXXXXX01-09f5-4703-bcc9-6ff914XXXXXX
##[debug]Leaving Initialize-Azure.
## Initializing Azure Complete 
 _

(私はいくつかの文字列をxに置き換えました)

YamlにPowerShellタスクがあります。

steps:
- task: AzurePowerShell@3
  displayName: 'Swap slots'
  inputs:
    azureConnectionType: ConnectedServiceName
    azureClassicSubscription: 'PXX subscription'
    ScriptPath: '$(System.DefaultWorkingDirectory)/_Tools/Powershell/cloud-service_swap-slot.ps1'
    ScriptArguments: '-CloudServiceName $(CloudServiceName)'
    FailOnStandardError: true
    azurePowerShellVersion: LatestVersion
 _

そして、ローカルPCから動作するスロットを交換するためのPowerShellスクリプト(同じ証明書を使用して)。

[CmdletBinding(PositionalBinding=$True)]
Param(
    [Parameter(Mandatory = $true)]
    [String]$CloudServiceName              # required
)

# Check if Windows Azure Powershell is avaiable 
if ((Get-Module -ListAvailable Azure) -eq $null) 
{ 
    throw "Windows Azure Powershell not found! Please install from http://www.windowsazure.com/en-us/downloads/#cmd-line-tools" 
} 
 
# VIP Swap
$Deployment = Get-AzureDeployment -Slot "Staging" -ServiceName $CloudServiceName #It's failing here
if ($Deployment -ne $null -AND $Deployment.DeploymentId  -ne $null) 
{ 
     Write-Output ("Current Status of staging in {0}" -f $CloudServiceName); 
     Write-Host ($Deployment | Select-Object -Property * -ExcludeProperty Configuration,RolesConfiguration | Format-List | Out-String);

     $MoveStatus = Move-AzureDeployment -ServiceName $CloudServiceName 
     Write-Output ("Vip swap of {0} status: {1}" -f $CloudServiceName, $MoveStatus.OperationStatus)     
}else 
{ 
     Write-Output ("There is no deployment in staging slot of {0} to swap." -f $CloudServiceName) 
} 
 _

誰かが私のような同じ経験をしていますか?問題があるのはどこにありますか?

# アップデート

このセキュリティプロトコル設定をスクリプトの先頭に追加しようとしましたが、同じエラーです。

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
 _
10
Petofi

私の場合私はこの問題を抱えています私たちのOn-Premise Team Foundation Server 2017の "Run Inline Azure PowerShell"のタスクで_Get-AzureServiceRemoteDesktopExtension_コマンドがありました。

私はここに提案された線@ Damien-Caroを追加しました...

_Set-Item env:\COMPLUS_CngImplicitPersistKeySet 1
_

...私のスクリプトに、しかしそれは単一のリリースのための問題だけを解決しました。後続のリリース/展開はすべて_Could not create SSL/TLS secure channel_ではもう1回失敗しました。

リリース定義に変数として追加するだけで問題が解決しました。 (テストするには、2つの環境に同じリリースを正常に展開しました。)

enter image description here

私はここでこの解決策を見つけました: https://github.com/azure/azure-powershell/issues/azure-powershell/issues/13117#iescomment-706665722

0