如何通过 PowerShell 确认 TLS 1.2 在 OS 上可用?
How to confirm via PowerShell that TLS 1.2 is available on the OS?
在 Windows Server 2016 中,可以通过组策略禁用 TLS 1.2。
我们想在 PowerShell 中向我们的安装程序脚本添加一个检查,以查看 TLS 1.2 是否可用。请注意,这不同于检查 URL 是否使用 TLS 1.2,或者是否在当前 PowerShell 会话中启用了 TLS 1.2。我们想检查 OS 是否提供 TLS 1.2,或者它是否已通过管理员组策略配置禁用。
有人知道怎么做吗?任何帮助将不胜感激。关于这个主题的在线信息不是很好。
使用以下内容:
$available = try {
$orig = [Net.ServicePointManager]::SecurityProtocol
[Net.ServicePointManager]::SecurityProtocol = 'Tls12'
[bool] [System.Net.WebRequest]::Create('https://example.org/')
} catch {
$false
} finally {
[Net.ServicePointManager]::SecurityProtocol = $orig
}
如果需要检查系统是否默认启用了 TLS 1.2:
$tls12 = try {
$resp = (New-Object System.Net.WebClient).DownloadString("https://tls-v1-2.badssl.com:1012/")
[bool] $resp.Contains("green")
} catch {
$false
}
在 Windows Server 2016 中,可以通过组策略禁用 TLS 1.2。
我们想在 PowerShell 中向我们的安装程序脚本添加一个检查,以查看 TLS 1.2 是否可用。请注意,这不同于检查 URL 是否使用 TLS 1.2,或者是否在当前 PowerShell 会话中启用了 TLS 1.2。我们想检查 OS 是否提供 TLS 1.2,或者它是否已通过管理员组策略配置禁用。
有人知道怎么做吗?任何帮助将不胜感激。关于这个主题的在线信息不是很好。
使用以下内容:
$available = try {
$orig = [Net.ServicePointManager]::SecurityProtocol
[Net.ServicePointManager]::SecurityProtocol = 'Tls12'
[bool] [System.Net.WebRequest]::Create('https://example.org/')
} catch {
$false
} finally {
[Net.ServicePointManager]::SecurityProtocol = $orig
}
如果需要检查系统是否默认启用了 TLS 1.2:
$tls12 = try {
$resp = (New-Object System.Net.WebClient).DownloadString("https://tls-v1-2.badssl.com:1012/")
[bool] $resp.Contains("green")
} catch {
$false
}