PowerShellでTLS1.2, TLS1.1を指定して使用する方法 †Invoke-RestMethod コマンドレットやInvoke-WebRequestコマンドレットなどでhttpsを使用して接続してみたら、 Invoke-WebRequest : 接続が切断されました: 送信時に、予期しないエラーが発生しました。。 発生場所 行:1 文字:13 + $response = Invoke-WebRequest -UseBasicParsing "https:// ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest]、WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand 本資料では、TLSのバージョンの指定や確認する方法を記します。 参考資料 †TLS1.2を使用したサンプルコード †以下のURLでは、TLS1.2を使用したサンプルコードを公開しています。 TLS1.2を指定する方法 †TLS1.2を指定する方法は以下の構文です。 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 一番最後にTls12と指定しているので、わかると思います。 サポートされているTLSバージョンを確認する方法 †以下の構文でサポートされているTLSを確認することができます。 [enum]::GetNames([Net.SecurityProtocolType]) 以下、実際に上記構文を実行したときの出力です。 PS C:\> [enum]::GetNames([Net.SecurityProtocolType]) SystemDefault Ssl3 Tls Tls11 Tls12 設定されているTLSを確認する †以下の構文で設定されているTLSを確認することができます。 [Net.ServicePointManager]::SecurityProtocol Windows10のデフォルトでは以下のように出力されました。 PS C:\> [Net.ServicePointManager]::SecurityProtocol Ssl3, Tls 設定すれば、以下のようになります。 PS C:\> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 PS C:\> [Net.ServicePointManager]::SecurityProtocol Tls12 複数のTLSバージョンを指定する †列挙型で複数指定すれば、複数のTLSバージョンを設定することができます。 [Net.ServicePointManager]::SecurityProtocol = @([Net.SecurityProtocolType]::Tls,[Net.SecurityProtocolType]::Tls11,[Net.SecurityProtocolType]::Tls12) 以下、実際に上記の構文を実行し、設定を確認しています。 PS C:\> [Net.ServicePointManager]::SecurityProtocol = @([Net.SecurityProtocolType]::Tls,[Net.SecurityProtocolType]::Tls11,[Net.SecurityProtocolType]::Tls12) PS C:\> [Net.ServicePointManager]::SecurityProtocol Tls, Tls11, Tls12 以上、PowerShellでTLSのバージョンを指定する方法でした。 |