Menggunakan Invoke-WebRequest dan Invoke-RestMethod Powershell v3 saya telah berhasil menggunakan metode POST untuk mengirim file json ke situs web https.
Perintah yang saya gunakan adalah
$cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("cert.crt")
Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Body $json -ContentType application/json -Method POST
Namun ketika saya mencoba menggunakan metode GET seperti:
Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Method GET
Kesalahan berikut dikembalikan
Invoke-RestMethod : The underlying connection was closed: An unexpected error occurred on a send.
At line:8 char:11
+ $output = Invoke-RestMethod -Uri https://IPADDRESS/resource -Credential $cred
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
Saya telah mencoba menggunakan kode berikut untuk mengabaikan sertifikat SSL, tetapi saya tidak yakin apakah itu benar-benar melakukan sesuatu.
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
Dapatkah seseorang memberikan panduan tentang apa yang mungkin salah di sini dan bagaimana cara memperbaikinya?
Terima kasih
.net
rest
powershell
https
floyd
sumber
sumber
Invoke-RestMethod
atauInvoke-WebRequest
?Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
Anda dapat mencoba menjelajahi $ Error [0] .Exception.InnerException untuk informasi lebih lanjut .. .Jawaban:
Solusi ini berhasil untuk saya: http://connect.microsoft.com/PowerShell/feedback/details/419466/new-webserviceproxy-needs-force-parameter-to-ignore-ssl-errors
Pada dasarnya, dalam skrip PowerShell Anda:
sumber
-SkipCertificateCheck
sekarang ada.Jawaban Lee bagus, tetapi saya juga memiliki masalah dengan protokol mana yang didukung server web.
Setelah juga menambahkan baris berikut, saya bisa mendapatkan permintaan https melalui. Seperti yang ditunjukkan dalam jawaban ini https://stackoverflow.com/a/36266735
Solusi lengkap saya dengan kode Lee.
sumber
SecurityProtocol
properti statis global. Astaga, saya baru saja kehilangan HARI untuk memeriksa sertifikat, kepercayaan, jaringan, rute, izin, dan banyak hal lain yang mencoba menyelesaikanendpoint does not respond
kesalahan yang tidak jelas saat mengakses satu server tertentu melalui https (semua yang lain berfungsi), hanya karena PowerShell 5.1 default untuk SSL3, TLS dan hANYA BLOK sialan TLS11 dan TLS12 BY dEFAULT Tuhan betapa aku benci omong kosong ini seharusnya aku menulis bahwa script di C # / Ruby / C ++, atau apapun yang lain yang tidak PowerShellApakah Anda mencoba menggunakan
System.Net.WebClient
?sumber
Implementasi alternatif secara murni PowerShell(tanpa
Add-Type
daric # sumber):sumber
Hal berikut berfungsi untuk saya (dan menggunakan cara terbaru yang tidak digunakan lagi untuk berinteraksi dengan fungsi SSL Certs / callback), dan tidak mencoba memuat kode yang sama beberapa kali dalam sesi PowerShell yang sama:
Ini diadaptasi dari artikel berikut https://d-fens.ch/2013/12/20/nobrainer-ssl-connection-error-when-using-powershell/
sumber
Saya menemukan bahwa ketika saya menggunakan fungsi panggilan balik ini untuk mengabaikan sertifikat SSL
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
Saya selalu mendapat pesan kesalahan
Invoke-WebRequest : The underlying connection was closed: An unexpected error occurred on a send.
yang terdengar seperti hasil yang Anda dapatkan .Saya menemukan posting forum ini yang membawa saya ke fungsi di bawah ini. Saya menjalankan ini sekali di dalam lingkup kode saya yang lain dan berfungsi untuk saya.
sumber
Saya mencoba mencari dokumentasi di EM7 OpenSource REST API. Tidak beruntung sejauh ini.
http://blog.sciencelogic.com/sciencelogic-em7-the-next-generation/05/2011
Ada banyak pembicaraan tentang OpenSource REST API, tetapi tidak ada tautan ke API aktual atau dokumentasi apa pun. Mungkin saya tidak sabar.
Berikut beberapa hal yang bisa Anda coba
Coba ini untuk melihat apakah Anda dapat memfilter kolom yang Anda peroleh dari API
atau, Anda juga dapat mencoba menggunakan ini
Header Gaya Curl
Saya menguji IRM / IWR dengan api JSON twitter.
Semoga ini membantu.
sumber
Anda dapat menggunakan -SkipCertificateCheck Parameter untuk mencapai ini sebagai perintah satu baris (PARAMETER INI HANYA DIDUKUNG PADA PSEDISI UTAMA)
sumber
New-SelfSignedCertificate -certstorelocation cert: \ localmachine \ my -dnsname {your-site-hostname}
di PowerShell menggunakan hak admin , Ini akan menghasilkan semua sertifikat di direktori Pribadi
Pastikan nama host situs web dan nama-dns sertifikat harus sama persis
sumber
Pengaturan registri ini mempengaruhi .NET Framework 4+ dan oleh karena itu PowerShell. Atur dan mulai ulang sesi PowerShell untuk menggunakan TLS terbaru, tidak perlu reboot.
Lihat https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls#schusestrongcrypto
sumber
Jika Anda menjalankan ini sebagai administrator, kesalahan itu akan hilang
sumber