技術情報

【Powershell】Invoke-WebRequestに失敗する場合の対処方法(TLS1.2有効化)

こんにちは、TLS1.2 ばにゃです。

Invoke-WebRequest

本記事では、Powershell で Invoke-WebRequest を実行時、
以下のようなエラーが発生する場合の対処方法について解説します。

Invoke-WebRequest : The request was aborted: Could not create SSL/TLS channel.

Invoke-WebRequest : 要求は中止されました: SSL/TLS のセキュリティで保護されているチャネルを作成できませんでした

Invoke-WebRequest : The underlying connection was closed: An unexpected error occurred on a send.

Invoke-WebRequest : 接続が切断されました: 送信時に、予期しないエラーが発生しました

結論
以下のコマンドを実行し TLS1.2 を有効化することでエラーを解消できる可能性があります。

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
スポンサーリンク

前提となる環境

本記事では、以下のような環境を例として記載します。
この環境で私自身が実機動作確認済みの手順となります。

環境
  • Windows Server 2019
  • Windows Server 2016
  • Windows 10
    ※Windows OS 全般

対処方法

Invoke-WebRequest 実行時に -Uri で指定したサイトが TLS1.2 の接続しか受け付けていない場合、上述したようなエラーが発生する可能性があります。

Invoke-WebRequest -Uri https://xxx.yyy.zzz

エラー発生時の対処方法について、順を追って解説します。

Powershell 側の接続方式確認

以下のコマンドを実行し、Powershell 側で有効となっている接続方式を確認します。

[Net.ServicePointManager]::SecurityProtocol

以下のような実行結果が返ってくるはずです。
この場合、SSL3.0 と TLS1.0 が有効化されています。

Ssl3, Tls

接続先のサイトで SSL3.0 と TLS1.0 の接続方式を受け付けていない場合、このままでは Invoke-WebRequest の実行に失敗します。

TLS 1.2 の有効化

以下のコマンドを実行し、Powershell側で TLS1.2 を有効化します。

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

再度以下のコマンドを実行し、有効化されている接続方式を確認します。

[Net.ServicePointManager]::SecurityProtocol

以下のような実行結果が返ってくるはずです。

Tls12

これで Powershell 側でも TLS1.2 が有効化された状態となります。

接続先サイトで TLS1.2 しか受け付けていないことが原因であれば、この対処で Invoke-WebRequest が実行可能となります。

補足事項

利用可能な接続方式を確認する方法

以下のコマンドで Powershell 実行環境で利用可能な接続方式を確認可能です。

[enum]::GetNames([Net.SecurityProtocolType])

以下のような結果が返ってくるはずです。

SystemDefault
Ssl3
Tls
Tls11
Tls12
Tls13

複数の接続方式を有効化する方法

以下のコマンドで複数の接続方式を有効化することが可能です。

[System.Net.ServicePointManager]::SecurityProtocol = @([System.Net.SecurityProtocolType]::Tls12,[System.Net.SecurityProtocolType]::Tls11)

上記例では TLS1.2 と TLS1.1 を有効化しています。

参考情報

Microsoft ドキュメント

SecurityProtocolType に関してはMicrosoft の以下サイトも参考にしてください。

関連書籍

PowerShell 6.0 まで対応している PowerShell 関連の書籍です。
現状で 6.0 まで対応している数少ない書籍のため、PowerShell の学習におすすめです。

にほんブログ村 IT技術ブログへ
にほんブログ村


コメント