2017-01-12 14 views
40

を失敗し、私は、このPowerShellコマンドにPowerShellの起動-WebRequestクラスは、SSL/TLSで保護されたチャンネル

Invoke-WebRequest -Uri https://apod.nasa.gov/apod/

を実行しようとしていると私はこのエラーを取得します。 "Invoke-WebRequest:要求が中止されました:SSL/TLSセキュアチャネルを作成できませんでした。 httpsリクエストが動作しているようです(「https://google.com」)。これを動作させるにはどうすればいいのですか、または他のpowershellコマンドを使ってページの内容を読むことができますか?

答えて

93

SecurityProtocol[Flags]属性を持つEnumで、いくつかの票を盗む恥知らずな試みで、この1

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 
Invoke-WebRequest -Uri https://apod.nasa.gov/apod/ 
+2

これは機能します!なぜ私に説明することができますか? – hewstone

+5

デフォルトではpowershellはTLS 1.0を使用しています。サイトのセキュリティにはTLS 1.2が必要です – crowchirp

+1

Awh、サイトのTLSバージョンはどうでしたか? – hewstone

21

を使用してみてください。

[Net.ServicePointManager]::SecurityProtocol = 
    [Net.SecurityProtocolType]::Tls12 -bor ` 
    [Net.SecurityProtocolType]::Tls11 -bor ` 
    [Net.SecurityProtocolType]::Tls 

それともこれはPowerShellのであるから、あなたはそれがあなたのための文字列を解析させることができます:

[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls" 

次に、あなたが技術的にTLSのバージョンを知っている必要はありませんので、あなたはこれを行うことができます。

私はこの回答を読んだ後に作成したスクリプトからこれをコピーして貼り付けました。有効なプロトコルを見つけるために使用可能なプロトコルをすべて調べたいからです。もちろん、とすることもできます。

+0

SSLv3を使用するサイトにアクセスする必要がある場合、 '[Net.ServicePointManager] :: SecurityProtocol =" Tls12、Tls11、Tls、Ssl3 "'が必要です。 SSLv3とTLSv1.0はPOODLEのために推奨されなくなったので、自己責任で使用してください。 – jordanbtucker

関連する問題