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.ServerXMLHTTPMSXML2.XMLHTTPsetOption

そして、おそらくあなたはあなたの質問を放送するべきではありません。あまり礼儀正しくありません。

于 2012-08-28T15:34:13.760 に答える