2012-08-29 7 views
7

मैं एक विश्वसनीय API के साथ खेल रहा हूं और फ़ायरफ़ॉक्स रीस्ट क्लाइंट प्लगइन का उपयोग कर रहा हूं सब ठीक है। मैं आसानी से एपीआई पूछताछ कर सकते हैं।पावरहेल Invoke- स्व-हस्ताक्षरित प्रमाणपत्र और मूल प्रमाणीकरण का उपयोग कर RestMethod - कोई उदाहरण?

हालांकि, जब मैं एक ही एपीआई कॉल को पावरहेल में प्लग करने का प्रयास करता हूं तो यह काम नहीं करता है!

मैं विभिन्न अन्य पदों से निम्नलिखित कोड है जो बाहर प्रमाणपत्र मुद्दों पर राज करना चाहिए, लेकिन मैं अभी भी इस काम करने के लिए नहीं मिल सकता है की कोशिश की है:

# This nugget should help me to get around any self-signed certificate issues I believe 

    $netAssembly =[Reflection.Assembly]::GetAssembly([System.Net.Configuration.SettingsSection]) 

    if($netAssembly) 
    { 
     $bindingFlags = [Reflection.BindingFlags] "Static,GetProperty,NonPublic" 
     $settingsType = $netAssembly.GetType("System.Net.Configuration.SettingsSectionInternal") 

     $instance = $settingsType.InvokeMember("Section", $bindingFlags, $null, $null, @()) 

     if($instance) 
     { 
      $bindingFlags = "NonPublic","Instance" 
      $useUnsafeHeaderParsingField = $settingsType.GetField("useUnsafeHeaderParsing", $bindingFlags) 

      if($useUnsafeHeaderParsingField) 
      { 
       $useUnsafeHeaderParsingField.SetValue($instance, $true) 
      } 
     } 
    } 

    [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} 

    $headers = @{"AUTHORIZATION"="Basic YWRtaW46Y2xvdWQ="} 

    # I exported this certificate from the web browser 
    $cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("HPCSA.crt") 

    Invoke-RestMethod -Uri https://192.168.5.3:8444/csa/rest/login/CSA-Provider/admin -Certificate $cert -Headers $headers -Method Get` 

मैं इस का उपयोग कर Powershell वी 3 के आह्वान को दोहराने के लिए सक्षम नहीं कर रहा हूँ -RestMethod और सोच रहा था कि कोई एचटीटीपीएस आराम से एपीआई एक्सेस करने के लिए नमूना कोड साझा कर सकता है जिसमें स्वयं हस्ताक्षरित प्रमाणपत्र है और मूल प्रमाणीकरण का भी उपयोग किया जाता है।

त्रुटि संदेश मैं:

PS C:\Users\landg> C:\Users\landg\Documents\Scripts\CSA API\CSA_API_DEMO_take2.ps1 
Invoke-RestMethod : Unable to connect to the remote server 
At C:\Users\landg\Documents\Scripts\CSA API\CSA_API_DEMO_take2.ps1:31 char:1 
+ Invoke-RestMethod -Uri https://192.168.5.3:8444/csa/rest/login/CSA-Provider/admi ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException 
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand 

उत्तर

10

The source of my solution

इस का उपयोग करते हुए एक HTTP 500 त्रुटि के साथ वास्तविक सर्वर पर मुझे हो जाता है .... अब लेकिन एक और दिन के लिए इस त्रुटि है।

यहाँ मेरी "काम" टुकड़ा:

 add-type @" 
     using System.Net; 
     using System.Security.Cryptography.X509Certificates; 

      public class IDontCarePolicy : ICertificatePolicy { 
      public IDontCarePolicy() {} 
      public bool CheckValidationResult(
       ServicePoint sPoint, X509Certificate cert, 
       WebRequest wRequest, int certProb) { 
       return true; 
      } 
     } 
    "@ 
    [System.Net.ServicePointManager]::CertificatePolicy = new-object IDontCarePolicy 

    Invoke-RestMethod -Uri https://192.168.5.3:8444/csa/rest/login/CSA-Provider/admin -Headers @{"AUTHORIZATION"="Basic YWRtaW46Y2xvdWQ="} -Method Get 

उम्मीद है कि इस कई निराशा घंटे से किसी और में मदद मिलेगी :)

+3

बस एक अन्य उपयोगकर्ताओं के लिए ध्यान दें, ध्यान रखें कि यह IDontCarePolicy सभी को प्रभावित करता हो अपने पावरशेल सत्र से नेटवर्क यातायात, इसलिए एक बार जब आप प्रमाणपत्र नीति को उस पर सेट करते हैं, तो ** ** आप कुछ भी नहीं करते हैं, तब से आप एसएसएल कर्ट की वैधता की जांच करेंगे। – Jaykul

7
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} 
+0

नाइस - ग्राज़ज़र के समाधान के समान ही है लेकिन एक पंक्ति में। –

संबंधित मुद्दे