powershell - 用于检查浏览器中启用的 TLS 1.2 的 Powershell 脚本
问题描述
我可以有一个脚本来检查以下位置的注册表中启用的 tls 1.2。
• HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client\DisabledByDefault 存在,值应为 0。
• HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client\Enabled 存在,值应为 1。
https://support.site24x7.com/portal/en/kb/articles/how-to-check-if-tls-1-2-is-enabled
$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
if ($null -eq $path) { # Always place $null on the LHS
'not found'
}
如何使用 powershell 脚本检查浏览器(不在注册表中)启用的 TLS 1.2?
解决方案
要检查您问题中的 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"
}
}
请注意,大多数浏览器还会检查SecureProtocols
Internet 设置中的值,可以为每个用户或整台机器设置:
# User settings
Get-ItemProperty 'hkcu:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -Name SecureProtocols
# Machine settings
Get-ItemProperty 'hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings' -Name SecureProtocols
Value
有点奇怪,因为它是每个支持的协议的十六进制值的组合。例如,TLS1.2 是0x800
或2048
。查看Microsoft TLS 1.2 页面以获取有关所有这些信息的更多详细信息。
它在我的笔记本电脑注册表中显示 280 tls 1.2 off,tls 1.2 a80 On。
推荐阅读
- r - 如何使用 R 上传/下载 Googledrive 包?
- vba - 使用 VBA 在 MS Access 查询文本数据类型字段中按金额过滤
- laravel - 删除链接而不是按钮 laravel
- java - Spring 循环依赖,即使使用通过 setter 注入
- graphql - GraphQL 数据存储在哪里?
- python - 为什么链接列表上的索引匹配失败?
- ios - 如何将对象传递给应该快速确认两个协议的函数?
- c# - 添加 NuGet 包后 Clickonce 部署大小膨胀
- url - Google News XML API:使用国家/语言参数
- python - 查询大型 SQL Server 表时,pymssql/pyodbc 性能(cursor.execute)非常慢