Invoke-WebRequestで接続が切断されましたの対処方法
目次
Invoke-WebRequestのエラー
Invoke-WebRequest
を実行した際に一部のサーバーで下記エラーが発生しました。
Invoke-WebRequest : 接続が切断されました: 送信時に、予期しないエラーが発生しました。
エラーの原因
対象サイトがTLS 1.2を要求していたが、該当のサーバーがTLS 1.2を使用する設定がされていなかったためでした。
SecurityProtocolの確認はPowerShellで[Net.ServicePointManager]::SecurityProtocol
を実行することで確認できます。
🖥 実行できないサーバーのSecurityProtocol
PS > [Net.ServicePointManager]::SecurityProtocol
Ssl3, Tls
🖥 実行できるサーバーのSecurityProtocol
PS > [Net.ServicePointManager]::SecurityProtocol
Tls, Tls11, Tls12
対応方法
下記コマンドで利用可能なプロトコルバージョンのリストを表示できます。
[enum]::GetNames([Net.SecurityProtocolType])
PS > [enum]::GetNames([Net.SecurityProtocolType])
SystemDefault
Ssl3
Tls
Tls11
Tls12
Tls13
利用可能なプロトコルバージョンに「Tls12
」が含まれている場合は、下記コマンドを実行することでTLS 1.2を使用するようになります。
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
また、下記コマンドを実行すると、TLS 1.0、TLS 1.1、TLS 1.2から最適なプロトコルを使用するようになります。
[Net.ServicePointManager]::SecurityProtocol = @([Net.SecurityProtocolType]::Tls,[NetSecurityProtocolType]::Tls11,[Net.SecurityProtocolType]::Tls12)