こんにちは、Windows インフラエンジニア ばにゃです。
本記事では、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 の以下サイトも参考にしてください。
- SecurityProtocolType 列挙型
https://docs.microsoft.com/ja-jp/dotnet/api/system.net.securityprotocoltype?view=net-5.0
関連書籍
PowerShell 6.0 まで対応している PowerShell 関連の書籍です。現状で 6.0 まで対応している数少ない書籍のため、PowerShell の学習におすすめです。
コメント