This PowerShell script helps administrators audit TLS protocol settings and supported cipher suites on Windows systems. It is especially useful in Snow Inventory Server environments when troubleshooting secure communications, such as agent upload failures or SSL handshake issues. The script checks registry-based TLS settings, lists available cipher suites, and tests TLS version support by making HTTPS requests, helping ensure that the system complies with security protocols required for agent-server communication.
Use cases
- Validate registry-based TLS settings for server or agent machines
- Confirm support for TLS 1.2 or 1.3 before enabling enforcement
- Audit cipher suites when troubleshooting SSL/TLS errors
- Investigate why an agent may fail to communicate with the Snow Inventory Server securely
Applies to
- Windows-based systems used with Snow Inventory Server
- Snow agents that rely on secure HTTPS for inventory uploads
# Function to get available TLS settings from the registry
function Get-TlsSettings {
$protocolsKeyPath = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols'
$protocols = Get-ChildItem -Path $protocolsKeyPath | ForEach-Object {
$protocolName = $_.PSChildName
$clientEnabled = (Get-ItemProperty -Path "$protocolsKeyPath\$protocolName\Client" -ErrorAction SilentlyContinue).Enabled
$serverEnabled = (Get-ItemProperty -Path "$protocolsKeyPath\$protocolName\Server" -ErrorAction SilentlyContinue).Enabled
[PSCustomObject]@{
Protocol = $protocolName
ClientEnabled = if ($null -eq $clientEnabled) { 'Not Set' } else { $clientEnabled }
ServerEnabled = if ($null -eq $serverEnabled) { 'Not Set' } else { $serverEnabled }
}
}
return $protocols
}
# Function to get available cipher suites
function Get-CipherSuites {
if (Get-Command -Name Get-TlsCipherSuite -ErrorAction SilentlyContinue) {
$cipherSuites = Get-TlsCipherSuite
} else {
Write-Error "The Get-TlsCipherSuite cmdlet is not available on this system."
return @()
}
return $cipherSuites
}
# Get TLS settings
$tlsSettings = Get-TlsSettings
# Get Cipher Suites
$cipherSuites = Get-CipherSuites
# Output results
Write-Output "TLS Settings:"
$tlsSettings | Format-Table -AutoSize
Write-Output "`nCipher Suites:"
$cipherSuites | Format-Table -AutoSize
function Test-TlsSupport {
param (
[string]$Server = 'https://example.com',
[int]$Port = 443
)
# Map TLS versions to .NET SecurityProtocolType values
$tlsVersions = @{
'TLS 1.0' = [System.Net.SecurityProtocolType]::Tls
'TLS 1.1' = [System.Net.SecurityProtocolType]::Tls11
'TLS 1.2' = [System.Net.SecurityProtocolType]::Tls12
'TLS 1.3' = [System.Net.SecurityProtocolType]::Tls13
}
$results = foreach ($tls in $tlsVersions.GetEnumerator()) {
try {
# Set the security protocol
[System.Net.ServicePointManager]::SecurityProtocol = $tls.Value
# Make a simple HTTPS request
$response = Invoke-WebRequest -Uri $Server -UseBasicParsing -TimeoutSec 10
[PSCustomObject]@{
TLSVersion = $tls.Key
Supported = $true
StatusCode = $response.StatusCode
}
} catch {
[PSCustomObject]@{
TLSVersion = $tls.Key
Supported = $false
Error = $_.Exception.Message
}
}
}
return $results
}
Get-TlsCipherSuite | Format-Table -Property CipherSuite, Name
# Test TLS Support
$testResults = Test-TlsSupport -Server 'https://google.com'
# Output results
Write-Output "`nTLS Support Test Results:"
$testResults | Format-Table -AutoSize
# Optionally export results
# $testResults | Export-Csv -Path ".\TLS_Test_Results.csv" -NoTypeInformation
Related Articles
Fix API endpoint configuration issues between Snow Inventory Server and Snow License Manager 349Number of Views Best practices for large environments (Snow License Manager and Snow Inventory) 1.05KNumber of Views Business Adapters may fail due to TLS Cipher Suite Update 6Number of Views Video: Update the SSL Certificate for Snow Inventory Server 274Number of Views Release Notes Index: Snow Inventory Server 520Number of Views
Hi, I am Reva - Ask me anything.
No new updates
Thanks for the feedback!
Your feedback has been saved.Rate this response:
Add Additional feedback ( Optional )
Are you sure you want to cancel
the case creation?
Are you sure you want to cancel the case creation?
Are you sure you want to close this case
| Products | Region | Phone Numbers |
|---|---|---|
| FlexNet Operations FlexNet Embedded FlexNet Publisher FlexNet Connect FlexNet Code Insight InstallAnywhere InstallShield |
North America * |
+1 630-332-2513 (toll) +1 877-279-2853 (toll-free in North America) |
| Europe * |
+44 1925 944367 (toll) +44 800 047 8642 (toll-free in Europe) |
|
| Japan * | +81 3-4540-5335 (select option 2) | |
| Australia * |
+61 3 9895 2177 +61 1800 560 603 (toll-free in Australia) |
|
|
Usage Intelligence (formerly
Revulytics) Compliance Intelligence |
Please use the Case Portal to submit your support ticket or reach out to your Revenera contact. | |
Case id: 00001065
Activity: Status change: 2 hours ago