We use cookies on our website to ensure we provide you with the best experience on our website. By using our website, you agree to the use of cookies for analytics and personalized content.This website uses cookies. More Information
It seems like your browser didn't download the required fonts. Please revise your security settings and try again.
Barracuda CloudGen Firewall

This Firmware Version Is End-Of-Support

Documentation for this product is no longer updated. Please see End-of-Support for CloudGen Firewall Firmware for further information on our EoS policy.

How to Configure the Azure Connectivity Agent

  • Last updated on

Only use the Azure connectivity agent, if you cannot use Cloud Integration for Azure or AWS. For more information, see How to Configure Cloud Integration for AWS and How to Configure Azure Cloud Integration using ARM.

The Azure Connectivity Agent allows you to use the Barracuda NextGen Firewall F-Series in the Azure Cloud as the default gateway for your Windows Server Azure VMs. The Connectivity Agent must be installed on all VMs in the VNET that initiate outgoing connections.

Before you Begin

  • Deploy your Barracuda NextGen Firewall F-Series in the Azure Cloud. 
  • Deploy your Windows Server VMs in the same subnet(s) as the Barracuda NextGen Firewall F-Series.
  • Create a Folder on the Windows Server VM and add the following files:
    • A PFX client certificate for each Windows Server VM. For more information, see How to Create Certificates with XCA.
    • Create a PowerShell script file AzureConnectivityAgent.ps1 and copy the deployment script below.
    • Network Access Client version 3.6 HF104 x64 or later.  To download the Network Access Client, go to the Barracuda Download Portal.
  • Create a Client-to-Site VPN on the Barracuda NextGen Firewall F-Series. Verify that it can be reached from the subnets where the Windows Server VMs are located. For more information, see Client-to-Site VPN.
  • (optional) Lock down the private subnets with Azure Network Security Groups to make sure outgoing traffic is sent through only the Barracuda NextGen Firewall F-Series.

Example Azure Connectivity Deployment Script

Use the PowerShell script below to deploy the VPN client as a service on your Windows Server VM in Azure.

 

# ================================================================================<br/>#<br/># Barracuda Azure Connectivity Agent Configuration and Setup Tool<br/># Copryright (C) 2014 Barracuda Networks, Inc.<br/>#<br/># Version: 1.0.42<br/>#<br/># ================================================================================<br/><br/><#<br/>.SYNOPSIS <br/>Barracuda Azure Connectivity Agent Configuration and Setup Tool<br/><br/>.DESCRIPTION<br/>Creates a customized configuration file (customer.inf) for silent installation of the Barracuda Azure Connectivity Agent and/or installs the software based on the given configuration file.<br/>The parameters required to generate the configuration file can either be specified directly by using the appropriate parameters or by answering the respective questions at the command prompt.<br/><br/>.PARAMETER PfxFileName<br/>The file name of the PFX container that contains an appropriate certificate/private key (X.509) used for establishing a VPN connection.<br/><br/>.PARAMETER ConfigureOnly<br/>Generates a new configuration file for silent installation, but does not start installation of the Barracuda Azure Connectivity Agent software.<br/>If neither -ConfigureOnly nor -InstallOnly is specified, the installation process will be started immediately after a new configuration file has been generated.<br/><br/>.PARAMETER InstallOnly<br/>Installs the Barracuda Azure Connectivity Agent software by using the current configuration file.<br/>If neither -ConfigureOnly nor -InstallOnly is specified, the installation process will be started immediately after a new configuration file has been generated.<br/><br/>.PARAMETER PfxFilePassword<br/>The password required to open the give PFX container file.<br/><br/>.PARAMETER ProfileDescription<br/>The description of the VPN profile.<br/><br/>.PARAMETER ServerAddress<br/>The IP address or hostname of the VPN server to which a VPN tunnel should be established.<br/><br/>.PARAMETER TunnelMode<br/>The Tunnel mode which should be used.<br/>Possible values are: TCP, UDP, Hybrid<br/><br/>.PARAMETER EncryptionAlgorithm<br/>The encryption algorithm which should be used for the VPN tunnel.<br/>Possible values are: None, AES, AES256, Blowfish, CAST, DES, 3DES<br/><br/>.PARAMETER HashAlgorithm<br/>The hash algorithm which should be used for the VPN tunnel.<br/>Possible values are: None, MD5, SHA1<br/><br/>.EXAMPLE<br/>.\AzureConnectivityAgent.ps1 johndoe.pfx -PfxFilePassword mysecret -ProfileDescription ConnectivityAgent -ServerAddress vpn.acme.org -TunnelMode TCP -EncryptionAlgorithm AES256 -HashAlgorithm SHA1<br/><br/>Generates a new configuration file based on a given (password-protected) PFX container file and a given set of VPN profile parameters.<br/>After the configuration file has been generated, the installation process will be started immediately.<br/><br/>.EXAMPLE<br/>.\AzureConnectivityAgent.ps1 -ConfigureOnly johndoe.pfx -PfxFilePassword mysecret<br/><br/>Generates a new configuration file based on a given (non-password protected) PFX container file.<br/>VPN profile parameters are collected interactively at the command prompt by answering the respective questions.<br/><br/>.EXAMPLE<br/>.\AzureConnectivityAgent.ps1 -InstallOnly johndoe.pfx -PfxFilePassword mysecret<br/><br/>Starts the installation process by using a given (password-protected) PFX container file and the current configuration file.<br/>#><br/><br/>param(<br/>[switch]$ConfigureOnly,<br/>[switch]$InstallOnly,<br/>[Parameter(Mandatory=$True)]<br/>[string]$PfxFileName,<br/>[string]$PfxFilePassword,<br/>[string]$ProfileDescription,<br/>[string]$ServerAddress,<br/>[ValidateSet('TCP','UDP','Hybrid')]<br/>[string]$TunnelMode,<br/>[ValidateSet('None','AES','AES256','Blowfish','CAST','DES','3DES')]<br/>[string]$EncryptionAlgorithm,<br/>[ValidateSet('None','MD5','SHA1')]<br/>[string]$HashAlgorithm<br/>)<br/><br/>$placeholders       = "&:description:&", "&:server:&", "&:mode:&","&:encryption:&", "&:hash:&", "&:certname:&","&:certserialnumber:&", "&:certissuer:&", "&:certissuerX500:&"<br/>$phDescription      = $placeholders[0]<br/>$phServer           = $placeholders[1]<br/>$phMode             = $placeholders[2]<br/>$phEncryption       = $placeholders[3]<br/>$phHash             = $placeholders[4]<br/>$phCertname         = $placeholders[5]<br/>$phCertserialnumber = $placeholders[6]<br/>$phCertissuer       = $placeholders[7]<br/>$phCertissuerX500   = $placeholders[8]<br/><br/>$scriptName         = $MyInvocation.MyCommand.Name<br/>$scriptDir          = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition<br/>$pfxFullFilePath    = Join-Path $scriptDir $PfxFileName<br/>$infFullFilePath    = Join-Path $scriptDir "customer.inf"<br/><br/>$tunnelModeId          = 0<br/>$encryptionAlgorithmId = 0<br/>$hashAlgorithmId       = 0<br/>$certName              = ""<br/>$certSerial            = ""<br/>$certIssuer            = ""<br/>$certIssuerName        = ""<br/><br/>function AskTunnelMode()<br/>{<br/>    $result = 3<br/>    $c1 = New-Object System.Management.Automation.Host.ChoiceDescription "Reliability (&TCP)","Reliability (TCP)"<br/>    $c2 = New-Object System.Management.Automation.Host.ChoiceDescription "Response (&UDP)","Response (UDP)"<br/>    $c3 = New-Object System.Management.Automation.Host.ChoiceDescription "Optimized (&Hybrid)","Optimized (Hybrid)"<br/>    $choices = [System.Management.Automation.Host.ChoiceDescription[]]($c1,$c2,$c3)<br/>    $caption = "Tunnel mode"<br/>    $result = $Host.UI.PromptForChoice($caption, "", $choices, 2) # 'Hybrid' is default<br/>    If($result -eq 0) { $result = 1 } # TCP<br/>    ElseIf($result -eq 1) { $result = 2 } # UDP<br/>    ElseIf($result -eq 2) { $result = 3 } # Hybrid<br/>    return $result<br/>}<br/><br/>function ParseTunnelMode($tm)<br/>{<br/>    $str = $tm.ToUpperInvariant()<br/>    If($str -eq "TCP")<br/>    {<br/>        return 1<br/>    }<br/>    ElseIf($str -eq "UDP")<br/>    {<br/>        return 2<br/>    }<br/>    ElseIf($str -eq "HYBRID")<br/>    {<br/>        return 3<br/>    }<br/>    Else<br/>    {<br/>        Throw "Invalid Tunnel mode"<br/>    }<br/>}<br/><br/>function AskEncryptionAlgorithm()<br/>{<br/>    $result = 4<br/>    $c1 = New-Object System.Management.Automation.Host.ChoiceDescription "&None","No encryption"<br/>    $c2 = New-Object System.Management.Automation.Host.ChoiceDescription "&AES","AES"<br/>    $c3 = New-Object System.Management.Automation.Host.ChoiceDescription "AES&256","AES256"<br/>    $c4 = New-Object System.Management.Automation.Host.ChoiceDescription "&Blowfish","Blowfish"<br/>    $c5 = New-Object System.Management.Automation.Host.ChoiceDescription "&CAST","CAST"<br/>    $c6 = New-Object System.Management.Automation.Host.ChoiceDescription "&DES","DES"<br/>    $c7 = New-Object System.Management.Automation.Host.ChoiceDescription "&3DES","3DES"<br/>    $choices = [System.Management.Automation.Host.ChoiceDescription[]]($c1,$c2,$c3,$c4,$c5,$c6,$c7)<br/>    $caption = "Encryption algorithm"<br/>    $result = $Host.UI.PromptForChoice($caption, "", $choices, 1) # 'AES' is default<br/>    If($result -eq 0) { $result = 1  } # None<br/>    ElseIf($result -eq 1) { $result = 4  } # AES<br/>    ElseIf($result -eq 2) { $result = 64 } # AES256<br/>    ElseIf($result -eq 3) { $result = 16 } # Blowfish<br/>    ElseIf($result -eq 4) { $result = 8  } # CAST<br/>    ElseIf($result -eq 5) { $result = 32 } # DES<br/>    ElseIf($result -eq 6) { $result = 2  } # 3DES<br/>    return $result<br/>}<br/><br/>function ParseEncryptionAlgorithm($ea)<br/>{<br/>    $str = $ea.ToUpperInvariant()<br/>    If($str -eq "NONE")<br/>    {<br/>        return 1<br/>    }<br/>    ElseIf($str -eq "AES")<br/>    {<br/>        return 4<br/>    }<br/>    ElseIf($str -eq "AES256")<br/>    {<br/>        return 64<br/>    }<br/>    ElseIf($str -eq "BLOWFISH")<br/>    {<br/>        return 16<br/>    }<br/>    ElseIf($str -eq "CAST")<br/>    {<br/>        return 8<br/>    }<br/>    ElseIf($str -eq "DES")<br/>    {<br/>        return 32<br/>    }<br/>    ElseIf($str -eq "3DES")<br/>    {<br/>        return 2<br/>    }<br/>    Else<br/>    {<br/>        Throw "Invalid Encryption algorithm"<br/>    }<br/>}<br/><br/>function AskHashAlgorithm()<br/>{<br/>    $result = 1<br/>    $c1 = New-Object System.Management.Automation.Host.ChoiceDescription "&None","No hash"<br/>    $c2 = New-Object System.Management.Automation.Host.ChoiceDescription "&MD5","MD5"<br/>    $c3 = New-Object System.Management.Automation.Host.ChoiceDescription "&SHA1","SHA1"<br/>    $choices = [System.Management.Automation.Host.ChoiceDescription[]]($c1,$c2,$c3)<br/>    $caption = "Hash algorithm"<br/>    $result = $Host.UI.PromptForChoice($caption, "", $choices, 1) # 'MD5' is default<br/>    If($result -eq 0) { $result = 3 } # None<br/>    ElseIf($result -eq 1) { $result = 1 } # MD5<br/>    ElseIf($result -eq 2) { $result = 2 } # SHA1<br/>    return $result<br/>}<br/><br/>function ParseHashAlgorithm($ha)<br/>{<br/>    $str = $ha.ToUpperInvariant()<br/>    If($str -eq "NONE")<br/>    {<br/>        return 3<br/>    }<br/>    ElseIf($str -eq "MD5")<br/>    {<br/>        return 1<br/>    }<br/>    ElseIf($str -eq "SHA1")<br/>    {<br/>        return 2<br/>    }<br/>    Else<br/>    {<br/>        Throw "Invalid Hash algorithm"<br/>    }<br/>}<br/><br/><br/>function ExtractCertificateData()<br/>{<br/>    If($PfxFilePassword)<br/>    {<br/>        $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($pfxFullFilePath, $PfxFilePassword)<br/>    }<br/>    Else<br/>    {<br/>        $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($pfxFullFilePath)<br/>    }<br/><br/>    Write-Host "========================"<br/>    Write-Host "Certificate information:"<br/>    Write-Host "========================"<br/><br/>    $subject = $cert.Subject<br/>    Write-Host -NoNewLine "Subject:       "<br/>    Write-Host -fore Yellow $subject    <br/><br/>    $script:certName = $cert.GetNameInfo([System.Security.Cryptography.X509Certificates.X509NameType]::SimpleName, $False)<br/>    Write-Host -NoNewline "Name:          "<br/>    Write-Host -fore Yellow $certName<br/><br/>    $script:certIssuer = $cert.GetNameInfo([System.Security.Cryptography.X509Certificates.X509NameType]::SimpleName, $True)<br/>    Write-Host -NoNewline "Issuer         "<br/>    Write-Host -fore Yellow $certIssuer<br/><br/>    $script:certIssuerName = $cert.GetIssuerName()<br/>    Write-Host -NoNewline "Issuer name:   "<br/>    Write-Host -fore Yellow $certIssuerName<br/><br/>    $notbefore = $cert.NotBefore<br/>    Write-Host -NoNewLine "Valid from:    "<br/>    Write-Host -fore Yellow $notbefore<br/><br/>    $notafter = $cert.NotAfter<br/>    Write-Host -NoNewLine "Valid to:      "<br/>    Write-Host -fore Yellow $notafter<br/><br/>    $script:certSerial = $cert.GetSerialNumberString().ToLowerInvariant()<br/>    Write-Host -NoNewline "Serial number: "<br/>    Write-Host -fore Yellow $certSerial<br/><br/>    $thumbprint = $cert.Thumbprint<br/>    Write-Host -NoNewLine "Thumbprint:    "<br/>    Write-Host -fore Yellow $thumbprint<br/>    Write-Host<br/>}<br/><br/>function GenerateConfigFile()<br/>{<br/>    $template = "OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KOyBjdXN0b21lci5pbmYNCjsNCjsgQ3VzdG9tZXIgSW5zdGFsbCBGaWxlDQo7DQo7IENvcHlyaWdodCAoQykgMjAwOC0yMDE0IEJhcnJhY3VkYSBOZXR3b3JrcywgSW5jLg0KOw0KOyBGb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gcGxlYXNlIGNvbnNpZGVyIHRoZSBCYXJyYWN1ZGEgVGVjaExpYnJhcnkNCjsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KW3ZlcnNpb25dDQpzaWduYXR1cmUgPSAiJFdpbmRvd3MgTlQkIg0KcHJvdmlkZXIgID0gJXBoJQ0KDQpbTWFudWZhY3R1cmVyXQ0KJVBoaW9uJSA9IEJhcnJhY3VkYQ0KDQpbRGVmYXVsdEluc3RhbGxdDQpDb3B5RmlsZXMgPSBQaGlvbkN1c3RvbWVyQ29weUZpbGVzDQpBZGRSZWcgICAgPSBQaGlvbkN1c3RvbWVyUmVnDQoNCltEZWZhdWx0VW5pbnN0YWxsXQ0KRGVsRmlsZXMgPSBQaGlvbkN1c3RvbWVyQ29weUZpbGVzDQpEZWxSZWcgICA9IFBoaW9uQ3VzdG9tZXJSZWcNCg0KOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KOyAxLCBDdXN0b21lciBBcmVhDQo7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpbUGhpb25DdXN0b21lckNvcHlGaWxlc10NCjsgZGVzdGluYXRpb24tZmlsZS1uYW1lWyxzb3VyY2UtZmlsZS1uYW1lXVssdGVtcG9yYXJ5LWZpbGUtbmFtZV1bLGZsYWddDQpjdXN0b21lci5pbmYsLCwyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGltcG9ydGFudCwgZG8gbm90IHJlbW92ZQ0KDQoNCjsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCjsgMiwgQ3VzdG9tZXIgQXJlYQ0KOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KW1BoaW9uQ3VzdG9tZXJSZWddDQo7IHJlZy1yb290LCBbc3Via2V5XSwgW3ZhbHVlLWVudHJ5LW5hbWVdLCBbZmxhZ3NdLCBbdmFsdWVdDQpIS1UsIC5ERUZBVUxUXFNvZnR3YXJlXFBoaW9uXHBoaW9udnBuLCBDdXN0b21lcklORiwgMHgwMDAwMDAwMCwgIiU2NTYwMCVcY3VzdG9tZXIuaW5mIiA7IGltcG9ydGFudCwgZG8gbm90IHJlbW92ZQ0KDQo7IFByb2ZpbGUgMSB3aXRoIE1pY3Jvc29mdCBDZXJ0aWZpY2F0ZSBTdG9yZS1saW5rZWQgWC41MDkgY2VydGlmaWNhdGUNCkhLVSwgLkRFRkFVTFRcU29mdHdhcmVcUGhpb25ccGhpb252cG5cUHJvZmlsZVwxLCBBdXRoVHlwZSwgICAgICAgICAgICAweDAwMDEwMDAxLCAxDQpIS1UsIC5ERUZBVUxUXFNvZnR3YXJlXFBoaW9uXHBoaW9udnBuXFByb2ZpbGVcMSwgQXV0aFVzZXIsICAgICAgICAgICAgMHgwMDAxMDAwMSwgMA0KSEtVLCAuREVGQVVMVFxTb2Z0d2FyZVxQaGlvblxwaGlvbnZwblxQcm9maWxlXDEsIGF1dG9UcnVzdFg1MDlTZXJ2ZXIsIDB4MDAwMTAwMDEsIDENCkhLVSwgLkRFRkFVTFRcU29mdHdhcmVcUGhpb25ccGhpb252cG5cUHJvZmlsZVwxLCBDcnlwdG9Nb2RlLCAgICAgICAgICAweDAwMDEwMDAxLCAxDQpIS1UsIC5ERUZBVUxUXFNvZnR3YXJlXFBoaW9uXHBoaW9udnBuXFByb2ZpbGVcMSwgRGVmYXVsdCwgICAgICAgICAgICAgMHgwMDAxMDAwMSwgMQ0KSEtVLCAuREVGQVVMVFxTb2Z0d2FyZVxQaGlvblxwaGlvbnZwblxQcm9maWxlXDEsIGRoY3AsICAgICAgICAgICAgICAgIDB4MDAwMTAwMDEsIDENCkhLVSwgLkRFRkFVTFRcU29mdHdhcmVcUGhpb25ccGhpb252cG5cUHJvZmlsZVwxLCBLZXlTcGVjLCAgICAgICAgICAgICAweDAwMDEwMDAxLCAxDQpIS1UsIC5ERUZBVUxUXFNvZnR3YXJlXFBoaW9uXHBoaW9udnBuXFByb2ZpbGVcMSwgUHJpdmF0ZUVuY3J5cHQsICAgICAgMHgwMDAxMDAwMSwgMQ0KSEtVLCAuREVGQVVMVFxTb2Z0d2FyZVxQaGlvblxwaGlvbnZwblxQcm9maWxlXDEsIFNob3dQb3B1cCwgICAgICAgICAgIDB4MDAwMTAwMDEsIDANCkhLVSwgLkRFRkFVTFRcU29mdHdhcmVcUGhpb25ccGhpb252cG5cUHJvZmlsZVwxLCBzdG9yZSwgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAiTVkiDQpIS1UsIC5ERUZBVUxUXFNvZnR3YXJlXFBoaW9uXHBoaW9udnBuXFByb2ZpbGVcMSwgU3RvcmVGbGFncywgICAgICAgICAgMHgwMDAxMDAwMSwgMHgwMDAyMDAwMA0KSEtVLCAuREVGQVVMVFxTb2Z0d2FyZVxQaGlvblxwaGlvbnZwblxQcm9maWxlXDEsIGRlc2NyaXB0aW9uLCAgICAgICAgIDB4MDAwMDAwMDAsICImOmRlc2NyaXB0aW9uOiYiICAgICAgIDsgUHJvZmlsZSBkZXNjcmlwdGlvbiAoZS5nLiBkZWZhdWx0KQ0KSEtVLCAuREVGQVVMVFxTb2Z0d2FyZVxQaGlvblxwaGlvbnZwblxQcm9maWxlXDEsIHNlcnZlciwgICAgICAgICAgICAgIDB4MDAwMDAwMDAsICImOnNlcnZlcjomIiAgICAgICAgICAgIDsgVlBOIFNlcnZlciBBZGRyZXNzIChlLmcuIDEwLjE2LjczLjE2MykNCkhLVSwgLkRFRkFVTFRcU29mdHdhcmVcUGhpb25ccGhpb252cG5cUHJvZmlsZVwxLCBtb2RlLCAgICAgICAgICAgICAgICAweDAwMDEwMDAxLCAmOm1vZGU6JiAgICAgICAgICAgICAgICA7IDE9UmVsaWFiaWxpdHkgKFRDUCksIDI9UmVzcG9uc2UgKFVEUCksIDM9T3B0aW1pemVkIChIeWJyaWQpDQpIS1UsIC5ERUZBVUxUXFNvZnR3YXJlXFBoaW9uXHBoaW9udnBuXFByb2ZpbGVcMSwgZW5jcnlwdGlvbiwgICAgICAgICAgMHgwMDAxMDAwMSwgJjplbmNyeXB0aW9uOiYgICAgICAgICAgOyAxPU5vbmUsIDI9M0RFUywgND1BRVMsIDg9Q2FzdCwgMTY9Qmxvd2Zpc2gsIDMyPURFUywgNjQ9QUVTMjU2DQpIS1UsIC5ERUZBVUxUXFNvZnR3YXJlXFBoaW9uXHBoaW9udnBuXFByb2ZpbGVcMSwgaGFzaCwgICAgICAgICAgICAgICAgMHgwMDAxMDAwMSwgJjpoYXNoOiYgICAgICAgICAgICAgICAgOyAxPU1ENSwgMj1TSEExLCAzPU5vbmUNCkhLVSwgLkRFRkFVTFRcU29mdHdhcmVcUGhpb25ccGhpb252cG5cUHJvZmlsZVwxLCBjZXJ0bmFtZSwgICAgICAgICAgICAweDAwMDAwMDAwLCAiJjpjZXJ0bmFtZTomIiAgICAgICAgICA7IENlcnRpZmljYXRlIE5hbWUgKGUuZy4gam9obmRvZSkNCkhLVSwgLkRFRkFVTFRcU29mdHdhcmVcUGhpb25ccGhpb252cG5cUHJvZmlsZVwxLCBjZXJ0c2VyaWFsbnVtYmVyLCAgICAweDAwMDAwMDAwLCAiJjpjZXJ0c2VyaWFsbnVtYmVyOiYiICA7IENlcnRpZmljYXRlIFNlcmlhbCBOdW1iZXIgKGUuZy4gMTAyMmQ5NzIwMDAwMDAwMDNhYjQpDQpIS1UsIC5ERUZBVUxUXFNvZnR3YXJlXFBoaW9uXHBoaW9udnBuXFByb2ZpbGVcMSwgY2VydGlzc3VlciwgICAgICAgICAgMHgwMDAwMDAwMCwgIiY6Y2VydGlzc3VlcjomIiAgICAgICAgOyBDZXJ0aWZpY2F0ZSBJc3N1ZXIgKGUuZy4gY2VydHNydikNCkhLVSwgLkRFRkFVTFRcU29mdHdhcmVcUGhpb25ccGhpb252cG5cUHJvZmlsZVwxLCBjZXJ0aXNzdWVyWDUwMCwgICAgICAweDAwMDAwMDAwLCAiJjpjZXJ0aXNzdWVyWDUwMDomIiAgICA7IENlcnRpZmljYXRlIElzc3VlciBOYW1lIChlLmcuIERDPWxvY2FsLCBEQz1hY21lLCBDTj1jZXJ0c3J2KQ0KDQoNCjsgZ2xvYmFsIHNldHRpbmdzDQpIS1UsIC5ERUZBVUxUXFNvZnR3YXJlXFBoaW9uXHBoaW9udnBuXHNldHRpbmdzLCBkaXJlY3RhY2Nlc3MsIDB4MDAwMTAwMDEsIDENCg0KDQo7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo7IDMsIEN1c3RvbWVyIEFyZWENCjsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCltTb3VyY2VEaXNrc0ZpbGVzXQ0KOyBGaWxlcyBmb3IgZGlzayBCYXJyYWN1ZGEgQ3VzdG9tZXIgRmlsZXMgIzENCjsgZmlsZW5hbWUgPSBkaXNraWRbLFsgc3ViZGlyXVssIHNpemVdXSINCmN1c3RvbWVyLmluZiwsLDENCg0KDQo7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KOyBEbyBub3QgY2hhbmdlIGFueSBhdHRyaWJ1dGUgYmV5b25kIHRoaXMgbGluZSENCjsNCltEZXN0aW5hdGlvbkRpcnNdDQpQaGlvbkN1c3RvbWVyQ29weUZpbGVzID0gNjU2MDANCg0KW1NvdXJjZURpc2tzTmFtZXNdDQoxID0gJURpc2tJZDElLCwsIiINCg0KOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCjsgTG9jYWxpemFibGUgU3RyaW5ncw0KOw0KW1N0cmluZ3NdDQpwaCAgICAgICAgICAgICAgICAgPSAiQmFycmFjdWRhIg0KRGlzcGxheUNsYXNzTmFtZSAgID0gIkJhcnJhY3VkYSBDdXN0b21lciBGaWxlcyINClBoaW9uICAgICAgICAgICAgICA9ICJCYXJyYWN1ZGEgTmV0d29ya3MsIEluYy4iDQoqUGhpb25kLkRldmljZURlc2MgPSAiQmFycmFjdWRhIEN1c3RvbWVyIEZpbGVzIg0KUGhpb24uRGV2aWNlRGVzYyAgID0gIkJhcnJhY3VkYSBDdXN0b21lciBGaWxlcyINCipQaGlvbi5EZXZpY2VEZXNjICA9ICJCYXJyYWN1ZGEgQ3VzdG9tZXIgRmlsZXMiDQpwaGlvbnZwbi5TZXJ2aWNlLkRpc3BOYW1lID0gIkJhcnJhY3VkYSBDdXN0b21lciBGaWxlcyINCkRpc2tJZDEgICAgICAgICAgICAgICAgICAgPSAiQmFycmFjdWRhIEN1c3RvbWVyIEZpbGVzIERpc2sgIzEiDQo="<br/>    $data = [System.Convert]::FromBase64String($template)<br/>    Set-Content -Path $infFullFilePath -Value $data -Encoding Byte<br/>    (Get-Content $infFullFilePath) | Foreach-Object {$_ -replace $phDescription, $ProfileDescription} | Set-Content $infFullFilePath<br/>    (Get-Content $infFullFilePath) | Foreach-Object {$_ -replace $phServer, $ServerAddress} | Set-Content $infFullFilePath<br/>    (Get-Content $infFullFilePath) | Foreach-Object {$_ -replace $phMode, $tunnelModeId} | Set-Content $infFullFilePath<br/>    (Get-Content $infFullFilePath) | Foreach-Object {$_ -replace $phEncryption, $encryptionAlgorithmId} | Set-Content $infFullFilePath<br/>    (Get-Content $infFullFilePath) | Foreach-Object {$_ -replace $phHash, $hashAlgorithmId} | Set-Content $infFullFilePath<br/>    (Get-Content $infFullFilePath) | Foreach-Object {$_ -replace $phCertname, $certName} | Set-Content $infFullFilePath<br/>    (Get-Content $infFullFilePath) | Foreach-Object {$_ -replace $phCertserialnumber, $certSerial} | Set-Content $infFullFilePath<br/>    (Get-Content $infFullFilePath) | Foreach-Object {$_ -replace $phCertissuer, $certIssuer} | Set-Content $infFullFilePath<br/>    (Get-Content $infFullFilePath) | Foreach-Object {$_ -replace $phCertissuerX500, $certIssuerName} | Set-Content $infFullFilePath<br/>}<br/><br/>function GetProfileData()<br/>{<br/>    if(!$ProfileDescription -or !$ServerAddress -or !$TunnelMode -or !$EncryptionAlgorithm -or !$HashAlgorithm)<br/>    {<br/>        Write-Host "Please answer the following questions to complete your configuration file:"<br/><br/>        If(!$ProfileDescription)<br/>        {<br/>            Write-Host -NoNewLine "Profile description: "<br/>            $script:ProfileDescription = Read-Host<br/>            If(!$ProfileDescription)<br/>            {<br/>                 $script:ProfileDescription = "default"<br/>            }<br/>        }<br/><br/>        If(!$ServerAddress)<br/>        {<br/>            Write-Host -NoNewLine "VPN server address/hostname: "<br/>            $script:ServerAddress = Read-Host<br/>            If(!$ServerAddress)<br/>            {<br/>                $script:ServerAddress = "vpnserver"<br/>            }<br/>        }<br/><br/>        If(!$TunnelMode)<br/>        {<br/>            $script:tunnelModeId = AskTunnelMode<br/>        }<br/><br/>        If(!$EncryptionAlgorithm)<br/>        {<br/>            $script:encryptionAlgorithmId = AskEncryptionAlgorithm<br/>        }<br/><br/>        If(!$HashAlgorithm)<br/>        {<br/>            $script:hashAlgorithmId = AskHashAlgorithm<br/>        }<br/>    }<br/>}<br/><br/>function IsConfigFileValid()<br/>{<br/>    If(!(Test-Path $infFullFilePath)) <br/>    {<br/>        return $False<br/>    }<br/><br/>    $file = Get-Content $infFullFilePath    <br/>    Foreach($element in $placeholders)<br/>    {<br/>        $contains = $file | %{$_ -match $element}<br/>        if($contains -contains $True)<br/>        {<br/>            return $False<br/>        }<br/>    }<br/><br/>    return $True<br/>}<br/><br/><br/>function ImportCertificate()<br/>{<br/>    If(Get-Command -CommandType Cmdlet -Module PKI Import-PfxCertificate -errorAction SilentlyContinue)<br/>    {<br/>        # starting with Windows Server 2012, private keys may also be protected to security principals<br/>        Write-Host "Using 'Import-PfxCertificate' for certificate import..."<br/>        If($PfxFilePassword)<br/>        {<br/>            $pfxSecureFilePassword = ConvertTo-SecureString $PfxFilePassword -AsPlainText -Force<br/>            Import-PfxCertificate $PfxFileName -CertStoreLocation cert:\localMachine\my -Password $pfxSecureFilePassword<br/>        }<br/>        Else<br/>        {<br/>            Import-PfxCertificate $PfxFileName -CertStoreLocation cert:\localMachine\my<br/>        }<br/>    }<br/>    Else<br/>    {<br/>        Write-Host "Using 'certutil' for certifcate import..."<br/>        If($PfxFilePassword)<br/>        {<br/>            certutil -f -p $PfxFilePassword -importPFX $PfxFileName<br/>        }<br/>        Else<br/>        {<br/>            certutil -f -importPFX $PfxFileName<br/>        }<br/><br/>        If($LASTEXITCODE -ne 0)<br/>        {<br/>            Throw ""<br/>        }<br/>    }<br/>}<br/><br/>function StartSetup()<br/>{<br/>    .\setup.exe /s /v"/qr CUSTOMER_INF=customer.inf PROGTYPE=VPN"<br/>    # .\setup.exe /s /v"/qr CUSTOMER_INF=customer.inf PROGTYPE=VPN /Lecumwvario setup.log"<br/>}<br/><br/>function RemoveFileIfExists($file)<br/>{<br/>    Remove-Item -Force $file -errorAction SilentlyContinue<br/>}<br/><br/>function RunConfigMode()<br/>{<br/>    Write-Host "Entering configuration mode..."<br/><br/>    Try<br/>    {<br/>        ExtractCertificateData<br/>        Try<br/>        {<br/>            GetProfileData<br/>            Try<br/>            {<br/>                GenerateConfigFile<br/>                Write-Host "Configuration file has successfully been generated."<br/>            }<br/>            Catch<br/>            {<br/>                RemoveFileIfExists($infFullFilePath)<br/>                Write-Error "Configuration file could not be generated!"<br/>            }<br/>        }<br/>        Catch<br/>        {<br/>            Write-Error "Profile data could not be retrieved!"<br/>        }<br/>    }<br/>    Catch<br/>    {<br/>        Write-Error "Certificate data could not be extracted!"<br/>    }<br/>}<br/><br/>function RunInstallMode()<br/>{<br/>    Write-Host "Entering install mode..."<br/><br/>    If(!(IsConfigFileValid))<br/>    {<br/>        Write-Error "Invalid configuration file!"<br/>        return<br/>    }<br/><br/>    Try<br/>    {<br/>        ImportCertificate<br/>        Write-Host "Certificate has successfully been imported."<br/><br/>        Try<br/>        {<br/>            StartSetup<br/>        }<br/>        Catch<br/>        {<br/>            Write-Error "Setup could not be started!"<br/>        }<br/>    }<br/>    Catch<br/>    {<br/>        Write-Error "Certificate could not be imported!"<br/>    }<br/>}<br/><br/>Write-Host "==============================================================================="<br/>Write-Host "Welcome to the Barracuda Azure Connectivity Agent Configuration and Setup Tool!"<br/>Write-Host "==============================================================================="<br/>Write-Host<br/><br/>If($TunnelMode)<br/>{<br/>    $tunnelModeId = ParseTunnelMode($TunnelMode)<br/>}<br/>If($EncryptionAlgorithm)<br/>{<br/>    $encryptionAlgorithmId = ParseEncryptionAlgorithm($EncryptionAlgorithm)<br/>}<br/>If($HashAlgorithm)<br/>{<br/>    $hashAlgorithmId = ParseHashAlgorithm($HashAlgorithm)<br/>}<br/><br/>If($ConfigureOnly -and !$InstallOnly)<br/>{<br/>    RunConfigMode<br/>}<br/>ElseIf(!$ConfigureOnly -and $InstallOnly)<br/>{<br/>    RunInstallMode<br/>}<br/>Else<br/>{<br/>    RunConfigMode<br/>    RunInstallMode<br/>}<br/><br/># SIG # Begin signature block<br/># MIIY+gYJKoZIhvcNAQcCoIIY6zCCGOcCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB<br/># gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR<br/># AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUb+CXvjGrJJqKUJB+iqTELi58<br/># 1dWgghPqMIID7jCCA1egAwIBAgIQfpPr+3zGTlnqS5p31Ab8OzANBgkqhkiG9w0B<br/># AQUFADCBizELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIG<br/># A1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhh<br/># d3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcg<br/># Q0EwHhcNMTIxMjIxMDAwMDAwWhcNMjAxMjMwMjM1OTU5WjBeMQswCQYDVQQGEwJV<br/># UzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xMDAuBgNVBAMTJ1N5bWFu<br/># dGVjIFRpbWUgU3RhbXBpbmcgU2VydmljZXMgQ0EgLSBHMjCCASIwDQYJKoZIhvcN<br/># AQEBBQADggEPADCCAQoCggEBALGss0lUS5ccEgrYJXmRIlcqb9y4JsRDc2vCvy5Q<br/># WvsUwnaOQwElQ7Sh4kX06Ld7w3TMIte0lAAC903tv7S3RCRrzV9FO9FEzkMScxeC<br/># i2m0K8uZHqxyGyZNcR+xMd37UWECU6aq9UksBXhFpS+JzueZ5/6M4lc/PcaS3Er4<br/># ezPkeQr78HWIQZz/xQNRmarXbJ+TaYdlKYOFwmAUxMjJOxTawIHwHw103pIiq8r3<br/># +3R8J+b3Sht/p8OeLa6K6qbmqicWfWH3mHERvOJQoUvlXfrlDqcsn6plINPYlujI<br/># fKVOSET/GeJEB5IL12iEgF1qeGRFzWBGflTBE3zFefHJwXECAwEAAaOB+jCB9zAd<br/># BgNVHQ4EFgQUX5r1blzMzHSa1N197z/b7EyALt0wMgYIKwYBBQUHAQEEJjAkMCIG<br/># CCsGAQUFBzABhhZodHRwOi8vb2NzcC50aGF3dGUuY29tMBIGA1UdEwEB/wQIMAYB<br/># Af8CAQAwPwYDVR0fBDgwNjA0oDKgMIYuaHR0cDovL2NybC50aGF3dGUuY29tL1Ro<br/># YXd0ZVRpbWVzdGFtcGluZ0NBLmNybDATBgNVHSUEDDAKBggrBgEFBQcDCDAOBgNV<br/># HQ8BAf8EBAMCAQYwKAYDVR0RBCEwH6QdMBsxGTAXBgNVBAMTEFRpbWVTdGFtcC0y<br/># MDQ4LTEwDQYJKoZIhvcNAQEFBQADgYEAAwmbj3nvf1kwqu9otfrjCR27T4IGXTdf<br/># plKfFo3qHJIJRG71betYfDDo+WmNI3MLEm9Hqa45EfgqsZuwGsOO61mWAK3ODE2y<br/># 0DGmCFwqevzieh1XTKhlGOl5QGIllm7HxzdqgyEIjkHq3dlXPx13SYcqFgZepjhq<br/># IhKjURmDfrYwggSjMIIDi6ADAgECAhAOz/Q4yP6/NW4E2GqYGxpQMA0GCSqGSIb3<br/># DQEBBQUAMF4xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3Jh<br/># dGlvbjEwMC4GA1UEAxMnU3ltYW50ZWMgVGltZSBTdGFtcGluZyBTZXJ2aWNlcyBD<br/># QSAtIEcyMB4XDTEyMTAxODAwMDAwMFoXDTIwMTIyOTIzNTk1OVowYjELMAkGA1UE<br/># BhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMTQwMgYDVQQDEytT<br/># eW1hbnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIFNpZ25lciAtIEc0MIIBIjAN<br/># BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAomMLOUS4uyOnREm7Dv+h8GEKU5Ow<br/># mNutLA9KxW7/hjxTVQ8VzgQ/K/2plpbZvmF5C1vJTIZ25eBDSyKV7sIrQ8Gf2Gi0<br/># jkBP7oU4uRHFI/JkWPAVMm9OV6GuiKQC1yoezUvh3WPVF4kyW7BemVqonShQDhfu<br/># ltthO0VRHc8SVguSR/yrrvZmPUescHLnkudfzRC5xINklBm9JYDh6NIipdC6Anqh<br/># d5NbZcPuF3S8QYYq3AhMjJKMkS2ed0QfaNaodHfbDlsyi1aLM73ZY8hJnTrFxeoz<br/># C9Lxoxv0i77Zs1eLO94Ep3oisiSuLsdwxb5OgyYI+wu9qU+ZCOEQKHKqzQIDAQAB<br/># o4IBVzCCAVMwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAO<br/># BgNVHQ8BAf8EBAMCB4AwcwYIKwYBBQUHAQEEZzBlMCoGCCsGAQUFBzABhh5odHRw<br/># Oi8vdHMtb2NzcC53cy5zeW1hbnRlYy5jb20wNwYIKwYBBQUHMAKGK2h0dHA6Ly90<br/># cy1haWEud3Muc3ltYW50ZWMuY29tL3Rzcy1jYS1nMi5jZXIwPAYDVR0fBDUwMzAx<br/># oC+gLYYraHR0cDovL3RzLWNybC53cy5zeW1hbnRlYy5jb20vdHNzLWNhLWcyLmNy<br/># bDAoBgNVHREEITAfpB0wGzEZMBcGA1UEAxMQVGltZVN0YW1wLTIwNDgtMjAdBgNV<br/># HQ4EFgQURsZpow5KFB7VTNpSYxc/Xja8DeYwHwYDVR0jBBgwFoAUX5r1blzMzHSa<br/># 1N197z/b7EyALt0wDQYJKoZIhvcNAQEFBQADggEBAHg7tJEqAEzwj2IwN3ijhCcH<br/># bxiy3iXcoNSUA6qGTiWfmkADHN3O43nLIWgG2rYytG2/9CwmYzPkSWRtDebDZw73<br/># BaQ1bHyJFsbpst+y6d0gxnEPzZV03LZc3r03H0N45ni1zSgEIKOq8UvEiCmRDoDR<br/># EfzdXHZuT14ORUZBbg2w6jiasTraCXEQ/Bx5tIB7rGn0/Zy2DBYr8X9bCT2bW+IW<br/># yhOBbQAuOA2oKY8s4bL0WqkBrxWcLC9JG9siu8P+eJRRw4axgohd8D20UaF5Mysu<br/># e7ncIAkTcetqGVvP6KUwVyyJST+5z3/Jvz4iaGNTmr1pdKzFHTx/kuDDvBzYBHUw<br/># ggU/MIIEJ6ADAgECAhBE7dMvNLbg1XINy7LQmAfFMA0GCSqGSIb3DQEBCwUAMIG0<br/># MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsT<br/># FlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBh<br/># dCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTEwMS4wLAYDVQQDEyVW<br/># ZXJpU2lnbiBDbGFzcyAzIENvZGUgU2lnbmluZyAyMDEwIENBMB4XDTE0MTExMzAw<br/># MDAwMFoXDTE3MDIxMTIzNTk1OVowcTELMAkGA1UEBhMCQVQxDjAMBgNVBAgTBVR5<br/># cm9sMRIwEAYDVQQHEwlJbm5zYnJ1Y2sxHjAcBgNVBAoUFUJhcnJhY3VkYSBOZXR3<br/># b3JrcyBBRzEeMBwGA1UEAxQVQmFycmFjdWRhIE5ldHdvcmtzIEFHMIIBIjANBgkq<br/># hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6Va3PcbI+4j/Kx2xFX8Uqm/hjYTJtCWZ<br/># 3JoNhgldIQujCsevSCuoXHsjiVlHIK6ljWF1im2BdoEeNXkQYG7WA1lU/BGNpVVA<br/># gfvaxaTj8L1bjpa7U4eiqmoSSQ4/u29cHB0CNStyeMviewN/varSHZgbB39hW3yX<br/># zfGIYGZvFRoUcn4XsuRVxsVMonzCA96G8G8cIpJ8a7z6lNwrTvhihxS5mNqspXZq<br/># Ctm9Fzmv0W8p2XpeZpDGWdzsnh62DAKUe0TBByW3rfdXDi7jh9jR55tOxFvbBC+s<br/># jxIw2b/CPtnDP+LSN9FI6R+lmZsfNbo9SDTOoMGNZgpCVcRv4ACUXwIDAQABo4IB<br/># jTCCAYkwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCB4AwKwYDVR0fBCQwIjAgoB6g<br/># HIYaaHR0cDovL3NmLnN5bWNiLmNvbS9zZi5jcmwwZgYDVR0gBF8wXTBbBgtghkgB<br/># hvhFAQcXAzBMMCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3ltY2IuY29tL2NwczAl<br/># BggrBgEFBQcCAjAZDBdodHRwczovL2Quc3ltY2IuY29tL3JwYTATBgNVHSUEDDAK<br/># BggrBgEFBQcDAzBXBggrBgEFBQcBAQRLMEkwHwYIKwYBBQUHMAGGE2h0dHA6Ly9z<br/># Zi5zeW1jZC5jb20wJgYIKwYBBQUHMAKGGmh0dHA6Ly9zZi5zeW1jYi5jb20vc2Yu<br/># Y3J0MB8GA1UdIwQYMBaAFM+Zqep7JvRLyY6P1/AFJu/j0qedMB0GA1UdDgQWBBSS<br/># 3UFsXosnT2I3GWzEANOTjzWcszARBglghkgBhvhCAQEEBAMCBBAwFgYKKwYBBAGC<br/># NwIBGwQIMAYBAQABAf8wDQYJKoZIhvcNAQELBQADggEBAGHSsbBauttLIctY2JeN<br/># Megumiz6/JeMPMfSZLEmyJABXYx2S0JisQ95yYUwubs+5+kCDDUnrh10LIyn8J96<br/># 2FhFC9bPCROYFhU+f83SelzEo4lXTR1XWsXyl5TSZLY77YBlR7UM5aH6Bc5tu/Kg<br/># 7nKAyOIoUJDxgWFrnzJpQPLtdhxI+WQGRAmakcVOosEdQclp/QtnCx6V1qC3Ne3i<br/># PHe2rsxfZ4bdbrqt3bYncY/1nyD12XVD7YR06beEMGUdi5eU6um3sQgjCFwQLZzO<br/># yXwey0XAwzgryTbZbGiE43qP7Bv1TgBsJcNzXCi9QsVqeYz+OvMMasizNI7CuzXH<br/># p0swggYKMIIE8qADAgECAhBSAOWqJVb8GobtlsnUSzPHMA0GCSqGSIb3DQEBBQUA<br/># MIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNV<br/># BAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA2IFZl<br/># cmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMT<br/># PFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBB<br/># dXRob3JpdHkgLSBHNTAeFw0xMDAyMDgwMDAwMDBaFw0yMDAyMDcyMzU5NTlaMIG0<br/># MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsT<br/># FlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBh<br/># dCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTEwMS4wLAYDVQQDEyVW<br/># ZXJpU2lnbiBDbGFzcyAzIENvZGUgU2lnbmluZyAyMDEwIENBMIIBIjANBgkqhkiG<br/># 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9SNLXqXXirsy6dRX9+/kxyZ+rRmY/qidfZT2<br/># NmsQ13WBMH8EaH/LK3UezR0IjN9plKc3o5x7gOCZ4e43TV/OOxTuhtTQ9Sc1vCUL<br/># OKeMY50Xowilq7D7zWpigkzVIdob2fHjhDuKKk+FW5ABT8mndhB/JwN8vq5+fcHd<br/># +QW8G0icaefApDw8QQA+35blxeSUcdZVAccAJkpAPLWhJqkMp22AjpAle8+/Pxzr<br/># L5b65Yd3xrVWsno7VDBTG99iNP8e0fRakyiF5UwXTn5b/aSTmX/fze+kde/vFfZH<br/># 5/gZctguNBqmtKdMfr27Tww9V/Ew1qY2jtaAdtcZLqXNfjQtiQIDAQABo4IB/jCC<br/># AfowEgYDVR0TAQH/BAgwBgEB/wIBADBwBgNVHSAEaTBnMGUGC2CGSAGG+EUBBxcD<br/># MFYwKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMwKgYI<br/># KwYBBQUHAgIwHhocaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYTAOBgNVHQ8B<br/># Af8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw<br/># HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28u<br/># dmVyaXNpZ24uY29tL3ZzbG9nby5naWYwNAYDVR0fBC0wKzApoCegJYYjaHR0cDov<br/># L2NybC52ZXJpc2lnbi5jb20vcGNhMy1nNS5jcmwwNAYIKwYBBQUHAQEEKDAmMCQG<br/># CCsGAQUFBzABhhhodHRwOi8vb2NzcC52ZXJpc2lnbi5jb20wHQYDVR0lBBYwFAYI<br/># KwYBBQUHAwIGCCsGAQUFBwMDMCgGA1UdEQQhMB+kHTAbMRkwFwYDVQQDExBWZXJp<br/># U2lnbk1QS0ktMi04MB0GA1UdDgQWBBTPmanqeyb0S8mOj9fwBSbv49KnnTAfBgNV<br/># HSMEGDAWgBR/02Wnwt3su/AwCfNDOfoCrzMxMzANBgkqhkiG9w0BAQUFAAOCAQEA<br/># ViLmNKTEYctIuQGtVqhkD9mMkcS7zAzlrXqgIn/fRzhKLWzRf3EafOxwqbHwT+QP<br/># DFP6FV7+dJhJJIWBJhyRFEewTGOMu6E01MZF6A2FJnMD0KmMZG3ccZLmRQVgFVlR<br/># OfxYFGv+1KTteWsIDEFy5zciBgm+I+k/RJoe6WGdzLGQXPw90o2sQj1lNtS0PUAo<br/># j5sQzyMmzEsgy5AfXYxMNMo82OU31m+lIL006ybZrg3nxZr3obQhkTNvhuhYuyV8<br/># dA5Y/nUbYz/OMXybjxuWnsVTdoRbnK2R+qztk7pdyCFTwoJTY68SDVCHERs9VFKW<br/># iiycPZIaCJoFLseTpUiR0zGCBHowggR2AgEBMIHJMIG0MQswCQYDVQQGEwJVUzEX<br/># MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0<br/># IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52<br/># ZXJpc2lnbi5jb20vcnBhIChjKTEwMS4wLAYDVQQDEyVWZXJpU2lnbiBDbGFzcyAz<br/># IENvZGUgU2lnbmluZyAyMDEwIENBAhBE7dMvNLbg1XINy7LQmAfFMAkGBSsOAwIa<br/># BQCgeDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgor<br/># BgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3<br/># DQEJBDEWBBRmOXOlNBgwTIZs+shp3SaVuAvjUjANBgkqhkiG9w0BAQEFAASCAQDk<br/># zIKzCVP4C0wQQcv1D7CAEcHhCJX9VLUVlENUKjafYM9eTqhSgpEFwgaAJAqR5XJV<br/># WiQzwpaG27B76/uSLlNA56OUeRtVZmjNmaTmUBx3jvquXlThgWo2KOAdQRVJc0b5<br/># NwIqFUe3DystwovhmUPj0erZQ2Z/giRvH+Km1Q6Vxoo76NO+0SaEtRbUVqTtaJ/Y<br/># 0E4Uan1vEmQ0pf8UEBqaQlkmg4umVSYESMqHImTubs0ecpY1lKs8+oNY8OVsn3wv<br/># Nf32ERP8HnApL5AXN8HTtguF0W5IYG0W4oU6HkGhTg5lNTFMQpkUJ3myLyAH5aBb<br/># 2uO3hhezJqJk/SjdTz4boYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0AgEBMHIw<br/># XjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMTAw<br/># LgYDVQQDEydTeW1hbnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0gRzIC<br/># EA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkq<br/># hkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1MDYxNjE0NDMzOFowIwYJKoZIhvcN<br/># AQkEMRYEFCPrcU08iLooi805klrLl/J9boEnMA0GCSqGSIb3DQEBAQUABIIBAEtm<br/># rlO04zf17KQkklo8EJRRynRRNX4uZJFDvypxX6+i+SSfHHbTOhRGzschqIpxzWTR<br/># u6ULda+LGC/AxaX/Y8YiWlIWVTI3ZG3qHeUawLVV1vBMBm3T3aGhbobZSLnHOlVM<br/># FgB6wrqlBy6Lydv5sLSKhKsISa4uVoobZUuQS7TGfW5bg+Z6zJE1Xe5wxhSmZZZx<br/># 09Q9pQfoHsL4slYPp6OB2vgvqlAk9GayYV7iFmmf8XYCEh2NCUuk7k2WbKE6r13m<br/># TVe5+NalODPJRQ7rKBcN2eXO/bjJzJQ5PwFQn4wGgxPCloAeFcg89dVnwZhtHBIW<br/># ixWKeKl+ktI+evwo3t8=<br/># SIG # End signature block<br/><br/>

Install the Azure Connectivity Agent

The PowerShell script provided to configures and silently installs the Azure Connectivity Agent by supplying the PFX container file and the VPN profile parameters.

  1. Open a Windows PowerShell with Administrator privileges on the Windows server VM.
  2. Change to the directory you created containing the Network Access Client, PFX client certificate and AzureConnectivityAgent.ps1 PowerShell script.
  3. Start the installation of the Azure Connectivity Agent.

    C:\Azure>.\AzureConnectivityAgent.ps1 johndoe.pfx -PfxFilePassword mysecret -ProfileDescription ConnectivityAgent -ServerAddress vpn.acme.org -TunnelMode TCP -EncryptionAlgorithm AES256 -HashAlgorithm SHA1
  4. The installation of the Barracuda Network Access Client 3.6 x64 completes without the need for further user interaction.

Display All Azure Connectivity Agent Options

For a list of all available options, enter:

C:\Azure>.\Get-Help AzureConnectivityAgent.ps1 -full
Last updated on