结合没有公网的cvm通过IE访问同地域cos https链接一直转圈和另一个没有公网的cvm通过内网访问同地域cos的报错tls handshake timeout的case来看,https证书问题在windows里还是挺重要的。
我写了一段代码来更新根证书(先清空、再通过certutil -generateSSTFromWU联网更新拉取400多个根证书)
#查看根证书
代码语言:javascript复制dir cert:\CurrentUser
dir cert:\LocalMachine
Get-ChildItem -Path Cert:CurrentUser
Get-ChildItem -Path Cert:LocalMachine
(dir cert:\CurrentUserRoot).Count
(dir cert:\LocalMachineRoot).Count
(Get-ChildItem -Path Cert:CurrentUserRoot).Count
(Get-ChildItem -Path Cert:LocalMachineRoot).Count
$Certs = get-childitem Cert:LocalMachineRoot
$Certs | %{Remove-Item -path $_.PSPath -recurse -Force} #适用≥2012R2
#$Certs | Remove-Item
#适用2008R2
#Get-ChildItem Cert:LocalMachineRoot | ForEach-Object {
# $store = Get-Item $_.PSParentPath
# $store.Open('ReadWrite')
# $store.Remove($_)
# $store.Close()
#}
while( (Test-Path C:WURoots.sst) -eq $false ){
certutil -generateSSTFromWU C:WURoots.sst 2>$null 1>$null
}
wget http://windowscq-1251783334.cos.ap-chongqing.myzijiebao.com/updroots.exe -outfile c:windowsupdroots.exe
#certutil -urlcache -split -f http://windowscq-1251783334.cos.ap-chongqing.myzijiebao.com/updroots.exe (这句适用2008R2和2012R2,上句适用win8~win11、2012R2~2022)
c:windowsupdroots.exe
updroots.exe c:WURoots.sst
certmgr.msc
del C:WURoots.sst 2>$null