用于检查浏览器中启用的 TLS 1.2 的 Powershell 脚本

Sma*_*EGA 4 browser powershell scripting powershell-4.0 tls1.2

我可以有一个脚本来检查以下位置的注册表中启用的 tls 1.2。

\n

\xe2\x80\xa2 HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL\\Protocols\\TLS 1.2\\Client\\DisabledByDefault 存在,该值应为 0。

\n

\xe2\x80\xa2 HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL\\Protocols\\TLS 1.2\\Client\\Enabled 存在,值应为 1。

\n

https://support.site24x7.com/portal/en/kb/articles/how-to-check-if-tls-1-2-is-enabled

\n
$path = @(Get-ItemProperty HKLM:\\SYSTEM\\ControlSet001\\Control\\SecurityProviders\\SCHANNEL\\Protocols\\TLS 1.2\\Client\\Enabled)  -and @(Get-ItemProperty HKLM:\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL\\Protocols\\TLS 1.2\\Client\\DisabledByDefault)  -ErrorAction SilentlyContinue\nif ($null -eq $path) {  # Always place $null on the LHS\n  \'not found\' \n}\n
Run Code Online (Sandbox Code Playgroud)\n

如何使用 powershell 脚本检查浏览器(而不是注册表)中启用的 TLS 1.2?

\n

小智 7

在 PowerShell_ISE 中运行时,.Net 类属性是查询 TLS 设置的简单方法:

[Net.ServicePointManager]::SecurityProtocol
Run Code Online (Sandbox Code Playgroud)

如果仅启用 TLS,则输出将为:

SSL、TLS

如果启用 TLS1.2,则列表将为:

Tls、Tls11、Tls12

但是,返回类型是 System.Enum,可以使用正则表达式进行检查,如下所示:

[Net.ServicePointManager]::SecurityProtocol -match "Tls12"
Run Code Online (Sandbox Code Playgroud)

产生布尔结果


Cpt*_*ale 6

要检查问题中的 schannel 键,这有效

$key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client\'
if (Test-Path $key) {
  $TLS12 = Get-ItemProperty $key
  if ($TLS12.DisabledByDefault -ne 0 -or $TLS12.Enabled -eq 0) {
    Throw "TLS 1.2 Not Enabled"
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,大多数浏览器还会检查SecureProtocolsInternet 设置中的值,该值可以针对每个用户或整台计算机进行设置:

$key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client\'
if (Test-Path $key) {
  $TLS12 = Get-ItemProperty $key
  if ($TLS12.DisabledByDefault -ne 0 -or $TLS12.Enabled -eq 0) {
    Throw "TLS 1.2 Not Enabled"
  }
}
Run Code Online (Sandbox Code Playgroud)

Value有点奇怪,因为它是每个支持的协议的十六进制值的组合。例如,TL​​S1.2 是0x8002048。请查看Microsoft TLS 1.2 页面,了解有关所有这些信息的更多详细信息。

我的笔记本电脑注册表中显示 280 tls 1.2 off,tls 1.2 a80 On。