Powershell v3 Invoke-błąd https WebRequest
Używając programu PowerShell v3 Invoke-WebRequest i Invoke-RestMethod z powodzeniem użyłem metody POST, aby opublikować plik json na stronie https.
Komenda, której używam to
$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
Jednak gdy próbuję użyć metody GET w stylu:
Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Method GET
Zwracany jest następujący błąd
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
Próbowałem użyć poniższego kodu, aby zignorować certyfikat SSL, ale nie jestem pewien, czy faktycznie coś robi.
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
[[4]}Czy ktoś może podać jakieś wskazówki na temat tego, co może się tu nie udać i jak to naprawić?
Dzięki
9 answers
Ta praca zadziałała dla mnie: http://connect.microsoft.com/PowerShell/feedback/details/419466/new-webserviceproxy-needs-force-parameter-to-ignore-ssl-errors
Zasadniczo w skrypcie PowerShell:
add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
}
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
$result = Invoke-WebRequest -Uri "https://IpAddress/resource"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-05 19:20:05
Odpowiedź Lee jest świetna, ale miałem również problemy z którymi protokołami obsługiwał serwer WWW.
Po dodaniu następujących linii mogłem uzyskać żądanie https. Jak wskazano w niniejszej odpowiedzi https://stackoverflow.com/a/36266735
$AllProtocols = [System.Net.SecurityProtocolType]'Ssl3,Tls,Tls11,Tls12'
[System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols
Moje pełne rozwiązanie z kodem Lee.
add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
}
"@
$AllProtocols = [System.Net.SecurityProtocolType]'Ssl3,Tls,Tls11,Tls12'
[System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-16 13:43:25
Próbowałeś użyć System.Net.WebClient
?
$url = 'https://IPADDRESS/resource'
$wc = New-Object System.Net.WebClient
$wc.Credentials = New-Object System.Net.NetworkCredential("username","password")
$wc.DownloadString($url)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-10 02:00:23
Odkryłem, że kiedy użyłem tej funkcji zwrotnej do ignorowania certyfikatów SSL [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
Zawsze dostaję komunikat o błędzie {[2] } który brzmi jak wyniki, które masz.
Znalazłem ten post na forum, który doprowadził mnie do funkcji poniżej. Uruchamiam to raz wewnątrz zakresu mojego innego kodu i działa dla mnie.
{[0]}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-26 00:50:20
Poniższe działanie zadziałało dla mnie (i używa najnowszych nie przestarzałych środków do interakcji z certyfikatami SSL / funkcją callback) i nie próbuje załadować tego samego kodu wiele razy w ramach tej samej sesji powershell:
if (-not ([System.Management.Automation.PSTypeName]'ServerCertificateValidationCallback').Type)
{
$certCallback=@"
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
public class ServerCertificateValidationCallback
{
public static void Ignore()
{
if(ServicePointManager.ServerCertificateValidationCallback ==null)
{
ServicePointManager.ServerCertificateValidationCallback +=
delegate
(
Object obj,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors errors
)
{
return true;
};
}
}
}
"@
Add-Type $certCallback
}
[ServerCertificateValidationCallback]::Ignore();
Zostało to zaadaptowane z następującego artykułu https://d-fens.ch/2013/12/20/nobrainer-ssl-connection-error-when-using-powershell/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-02 19:33:29
Próbowałem szukać dokumentacji na EM7 opensource REST API. Na razie bez powodzenia.
Http://blog.sciencelogic.com/sciencelogic-em7-the-next-generation/05/2011
Dużo mówi się o opensource REST API, ale nie ma linku do rzeczywistego API ani żadnej dokumentacji. Może byłem niecierpliwy.
Oto kilka rzeczy, które możesz wypróbować
$a = Invoke-RestMethod -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert
$a.Results | ConvertFrom-Json
Spróbuj tego, aby sprawdzić, czy możesz odfiltrować kolumny, które otrzymujesz z API
$a.Results | ft
Lub, ty można spróbować użyć tego również
$b = Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert
$b.Content | ConvertFrom-Json
Nagłówki W Stylu Curl
$b.Headers
Przetestowałem IRM / IWR za pomocą interfejsu API twitter JSON.
$a = Invoke-RestMethod http://search.twitter.com/search.json?q=PowerShell
Mam nadzieję, że to pomoże.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-01 03:21:16
- Uruchom to polecenie
New-SelfSignedCertificate-certstorelocation cert:\localmachine\my-dnsname {your-site-hostname}
W powershell używając praw administratora , spowoduje to wygenerowanie wszystkich certyfikatów w katalogu osobistym- aby pozbyć się błędu Prywatności, wybierz te certyfikaty, kliknij prawym przyciskiem myszy → Kopiuj. I wklej w zaufany główny urząd certyfikacji / Certyfikaty.
- ostatnim krokiem jest wybranie prawidłowych wiązań w IIS. Przejdź na stronę IIS, wybierz Powiązania, zaznacz pole wyboru SNI i ustaw poszczególne certyfikaty dla każdej witryny.
Upewnij się, że nazwa hosta i nazwa DNS certyfikatu powinny dokładnie pasować
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-26 14:37:24
Jeśli uruchomisz to jako administrator, ten błąd powinien zniknąć
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-21 17:08:37
Te ustawienia rejestru wpływają na. Net Framework 4+ , a tym samym PowerShell. Ustaw je i uruchom ponownie wszystkie sesje PowerShell, aby używać najnowszego TLS, bez potrzeby ponownego uruchamiania.
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
Zobacz https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls#schusestrongcrypto
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-05 22:10:56