我在尋找簡單的方法如何使用客戶端證書通過HTTPS檢查網頁內容。 我有VBScript定義客戶端證書,跳過服務器證書,並定義我正在搜索(字符串「正在運行」)。我的觀點是重寫腳本到PowerShell。PowerShell HTTPS GET使用證書庫中的客戶端證書
這裏是VBScode:
device = "10.10.10.10"
link = "5001/test"
Set Http = CreateObject("WinHttp.WinHttpRequest.5.1")
Http.SetClientCertificate "LOCAL_MACHINE\MY\test"
Http.Option(4) = 256 + 512 + 4096 + 8192
Http.Open "GET", "https://" & device & ":" & link, false
Http.Send
output = Http.ResponseText
If InStr(1,output,"running") Then
wscript.echo "OK"
Else
wscript.echo "Error"
End If
Set Http = Nothing
這裏是PowerShell的語法來獲取HTTP網頁內容(而不是HTTPS):
$page = (New-Object System.Net.WebClient).DownloadString("http://10.10.10.10:5001/test")
"$page"
下面是PowerShell的語法使用.CRT文件,以獲得HTTPS contetn(但不從的CertStore)
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]::CreateFromCertFile("C:\Cert\test.crt")
$url = "https://10.10.10.10:5001/test"
$web = [System.Net.WebRequest]::Create($url)
$web.ClientCertificates.Add($Cert)
這是我最新的嘗試獲得網絡contetn。沒有成功。
#ignore untrusted certificate
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
#load my client certificate defined by thumbprint
$cert = Get-Childitem cert:\LocalMachine\My\5AA55B7B8D99
#get web contetn
$web = [System.Net.WebRequest]::Create($url)
#use my client certificate
$web.ClientCertificates.Add($Cert)
任何想法? 最好的問候
您不能使用HTTPS客戶端驗證是CRT文件。它只包含一個證書,但不包含私鑰。 – Robert
是的,這是使用certstore的原因。 – user1728814
所以我有腳本下面的波紋管,但仍然無法正常工作。任何想法?問候 – user1728814