如何解决Powershell在某些脚本中不使用TLS 1.2
我使用Powershell脚本检查证书的到期日期。 为此,我使用下面的代码。该脚本过去可以长时间正常运行,但现在失败了。 使用Wireshark进行检查时,我看到“客户端问候”正在使用TLS1.0。
所以这句话
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
从不工作或现在被忽略。 HKEY_LOCAL_MACHINE \ SYstem \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ Protocols中没有关于TLS的注册表项,仅SSL3被禁用。
在同一台机器上,执行REST调用的其他脚本与TLS1.2完美配合,无论上面的语句是否在代码中。 感谢所有想法,因为所有搜索都指出了这一点:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
不幸的是,这是行不通的。
BR 刻录
# use TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$date= Get-Date -Format "yyyyMMdd"
$infile=type myInfile.txt
$outfile = $date+"-myoutFile.txt"
foreach ($url in $infile)
{
$Certificate = ""
$output =""
$TcpClient = New-Object Net.sockets.TcpClient
$TcpClient.Connect($url,443)
$SslStream = New-Object Net.Security.SslStream $TcpClient.GetStream()
$SslStream.SslProtocol
$SslStream.ReadTimeout = 1500
$SslStream.WriteTimeout = 1500
try
{
#$url
$SslStream.AuthenticateAsClient($url)
$Certificate = $SslStream.RemoteCertificate
if ($Certificate -isnot [System.Security.Cryptography.X509Certificates.X509Certificate2])
{
$Certificate = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList $Certificate
}
$output = $url.ToString() + ";" + $Certificate.Subject +";"+ $Certificate.NotBefore.ToShortDateString() + ";" + $Certificate.NotAfter.ToShortDateString() +";"+ $Certificate.Issuer
$output
Out-File -nonewline -append -filepath $outfile -InputObject $output
echo "" >> $outfile
}
catch
{
$output = $url +";"+"Failed"
$output
Out-File -nonewline -append -filepath $outfile -InputObject $output
echo "" >> $outfile
}
$TcpClient.dispose()
$SslStream.dispose()
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。