2

我有一个脚本,可以从https://mysite.com/xxx.zip下载文件,但是当它进入安全链接时,我想接受证书。这里有一个很大的问题。我无法有效地使用“ServicePointManager.ServerCertificateValidationCallback”。

有人可以帮忙吗?

我还有证书站点的域:*.mysite.com

代码:

Const scriptVer  = "1.0"
Const DownloadDest = "https://mysite.com/xxx.zip"
Const LocalFile = "F:\Testing\xxx.zip"
Const webUser = "admin"
Const webPass = "admin"
Const DownloadType = "binary"
dim strURL

function getit()
  dim xmlhttp

  set xmlhttp=createobject("MSXML2.XMLHTTP.3.0")
  'xmlhttp.SetOption 2, 13056 'If https -> Ignore all SSL errors
  strURL = DownloadDest
  Wscript.Echo "Download-URL: " & strURL

  'For basic auth, use the line below together with user+pass variables above
  xmlhttp.Open "GET", strURL, false, WebUser, WebPass
  'xmlhttp.Open "GET", strURL, false

  xmlhttp.Send
  Wscript.Echo "Download-Status: " & xmlhttp.Status & " " & xmlhttp.statusText

  If xmlhttp.Status = 200 Then
    Dim objStream
    set objStream = CreateObject("ADODB.Stream")
    objStream.Type = 1 'adTypeBinary
    objStream.Open
    objStream.Write xmlhttp.responseBody
    objStream.SaveToFile LocalFile
    objStream.Close
    set objStream = Nothing
  End If


  set xmlhttp=Nothing
End function 

'=======================================================================
' End Function Defs, Start Main
'=======================================================================
' Get cmdline params and initialize variables
If Wscript.Arguments.Named.Exists("h") Then
  Wscript.Echo "Usage: http-download.vbs"
  Wscript.Echo "version " & scriptVer
  WScript.Quit(intOK)
End If

getit()
Wscript.Echo "Download Complete. See " & LocalFile & " for success."
Wscript.Quit(intOK)

ServicePointManager.ServerCertificateValidationCallback = AddressOf AcceptAllCertifications

Private Shared Function ValidateCertificate(sender As Object, certificate As X509Certificate, chain As X509Chain, sslPolicyErrors As SslPolicyErrors) As Boolean
    return True
End Function
4

1 回答 1

2

ServicePointManager是一个.NET类,所以它不能用于VBScript. 试试这个:

Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.setOption 2, 13056

必须在这里使用MSXML2.ServerXMLHTTP,因为MSXML2.XMLHTTP请求没有setOption方法。

也许你不应该传播你的问题。这不是很有礼貌。

于 2012-08-28T15:34:13.760 回答