At a customer, I encountered the following issue when trying to connect with PowervRA to vRealize Automation. The error message that appeared was:
Let go one step back: So what is PowervRA you might ask? PowervRA is a PowerShell Toolkit to manage VMware vRealize Automation (vRA). With PowervRA you can configure and manage your vRealize Automation environment, for example, create a new tenant, assigning permissions or viewing the user’s requests.
The problem
The problem started by connecting with PowervRA to vRealize Automation (vRA). There was no way to get a successful connection. I tried using the IP addresses, hostname and FQDN also different credentials didn’t make any difference. The error that returned in all cases was identical.
The customer was using the latest version of PowervRA. At this moment it was PowervRA 3.5.0. The vRealize Automation version they were using was 7.4.0.
Here is the screenshot of the error message:
Here is the full error message in plain text from the PowerShell Console:
Error message:
Invoke-RestMethod : The underlying connection was closed: An unexpected error occurred on a send.
At C:\Program Files\WindowsPowerShell\Modules\PowervRA\3.5.0\PowervRA.psm1:510 char:21
+ $Response = Invoke-RestMethod @Params
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
To validate the issue further I tried the same thing in my Lab environment. The strange thing was that everything was working fine with the identical versions.
The solution
Until this moment I am not really sure why it is working in one environment and not in the other… I suspect it has something to do with Windows Updates or Domain Security Policies? To address the issue there is only one way: force PowerShell/PowervRA to use TLS 1.2 when connecting with vRealize Automation (vRA).
Procedure:
- Open the PowerShell command-prompt as administrator.
- Run the following command before connecting to vRealize Automation. The command is listed below. No output is expected after running this command.
- Run the Connect-vRAServer PowerShell command to start a session with vRealize Automation. Everything should be working and authentication should be possible.
PowerShell code
Copy and paste the code into your PowerShell console before connecting to vRealize Automation:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Screenshot
Here is a screenshot after the TLS 1.2 has been forced:
Source
Here is the official GitHub page related to PowervRA:
FYI we added the parameter SslProtocol to Connect-vRAServer a while back to cater for this scenario, e.g. adding -SslProtocol Tls12 should work for you: https://github.com/jakkulabs/PowervRA/blob/master/src/Functions/Public/Connect-vRAServer.ps1#L29
Thanks for the reply Jonathan! Good to know that the issue is resolved :).