PowerShell の Invoke-WebRequest でHTTPSサイトへアクセスした際、証明書が信頼できない場合は証明書エラーが発生することがあります。
PowerShell 7以降では、SkipCertificateCheck オプションを指定することで、証明書の検証をスキップしてアクセスできる、すなわち証明書エラーを無視してアクセスできます。
この記事では、PowerShellで証明書エラーを無視してアクセスする方法と、証明書エラーの原因、SkipCertificateCheckを使う場合の注意点についてまとめています。
今回は Invoke-WebRequest コマンドを実行する際に証明書を無視してアクセスさせます。
# コマンド例
Invoke-WebRequest -Uri "https://example.com" -SkipCertificateCheck1.PowerShellで証明書エラーを無視する方法
PowerShell 7以降の Invoke-WebRequest では、-SkipCertificateCheck オプションを指定すると、HTTPS通信時の証明書検証をスキップして証明書エラーを無視することができます。
1-1. SkipCertificateCheckを使う
基本的な構文は以下です。
Invoke-WebRequest -Uri "https://hogehoge.com" -SkipCertificateCheck自己署名証明書を使用しているWebサイトなど、証明書を信頼できないことが原因でアクセスできない場合に利用できます。
2.証明書エラーが発生する原因
PowerShellからHTTPSサイトへアクセスするとき、接続先のSSL/TLS証明書に問題があるとエラーが発生する場合があります。
代表的な原因として、以下のようなものがあります。
- 自己署名証明書を使用している
- 証明書の発行元を信頼できない
- 証明書チェーンに問題がある
- 証明書の有効期限が切れている
- アクセス先のホスト名と証明書の名前が一致していない
特に、社内システムや検証環境では、一般的な認証局ではなく自己署名証明書や社内CAが発行した証明書を使用している場合があります。
この場合、PowerShellからアクセスすると証明書を信頼できず、エラーになることがあります。
2-1. 自己署名証明書での証明書エラー例
自己署名証明書を適用したサイトにアクセスしようとした場合、以下のようなエラーが出ます。
PS C:\> Invoke-WebRequest -Uri "https://hogehoge.com"
Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
At line:1 char:1
+ Invoke-WebRequest -Uri "https://hogehoge.com"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
PS C:\>3.PowerShell 5.1でSkipCertificateCheckを使えない場合
PowerShell 5.1を使用している場合、-SkipCertificateCheck を指定しても利用できません。
もし、Powershellで証明書エラーをSKIPしてアクセスさせたい場合には、PowerShell 7 へ移行する必要があります。
3-1. PowerShell 7への移行
Microsoft公式から最新版のPowershellをインストールしてください。
今回は執筆時点の最新版であるPowershell 7.6 を利用しています。

PowerShell 7をインストールした後、PowerShell 7を起動して以下を実行します。
$PSVersionTable.PSVersionバージョンが7.x.xになっていることを確認します。
3-2. Powershell 7 インストール後のアクセス確認
PowerShell 7をインストールできたら、先ほど「2-1. 自己署名証明書での証明書エラー例」でエラーとなっていた自己署名証明書を適用させたサイトに対して再度アクセスできるかどうかを確認します。
PS C:\> $PSVersionTable
Name Value
---- -----
PSVersion 7.4.1
PSEdition Core
GitCommitId 7.4.1
OS Microsoft Windows 10.0.17763
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
PS C:\>
PS C:\>
PS C:\> Invoke-WebRequest -Uri "https://hogehoge.com" -SkipCertificateCheck
StatusCode : 200
StatusDescription : OK
Content : <html>
<head>
<title>
Test-HTML-Title!
</title>
</head>
<body>
Test-Body!
</body>
</html>
RawContent : HTTP/1.1 200 OK
Accept-Ranges: bytes
ETag: "7a5bb4ab051da1:0"
Server: Microsoft-IIS/10.0
Date: Sun, 28 Jan 2026 06:35:57 GMT
Content-Type: text/html
Last-Modified: Sun, 28 Jan 2024 06:07:37 GMT…
Headers : {[Accept-Ranges, System.String[]], [ETag, System.String[]], [Server, System.String[]], [Date,
System.String[]]…}
Images : {}
InputFields : {}
Links : {}
RawContentLength : 110
RelationLink : {}
PS C:\>StatusCode: 200 が返ってきているので、自己署名証明書のサイトにアクセスできることが確認できました。
オプションを外してみるとエラーとなります。
PS C:\> Invoke-WebRequest -Uri "https://hogehoge.com"
Invoke-WebRequest: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot
PS C:\>3-3. Powershell 5.1では -SkipCertificateCheck を実行できない
参考ですが、Powershell 5.1では オプション -SkipCertificateCheck は利用できませんでした。
PS C:\> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.17763.5328
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17763.5328
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
PS C:\>
PS C:\> Invoke-WebRequest -Uri "https://hogehoge.com" -SkipCertificateCheck
Invoke-WebRequest : A parameter cannot be found that matches parameter name 'SkipCertificateCheck'.
At line:1 char:47
+ Invoke-WebRequest -Uri "https://hogehoge.com" -SkipCertificateCheck
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
PS C:\>4.SkipCertificateCheckを使う場合の注意点
上述の通り、-SkipCertificateCheck を使用すると、HTTPS通信時の証明書検証をスキップできます。
そのため、通常のHTTPS通信で行われる「接続先の証明書が信頼できるか」という確認を行わないことになります。
特に、インターネット上のWebサイトに対して無条件に -SkipCertificateCheck を指定することはセキュリティの観点からもおすすめしません。
以下のようなケースで利用をするようにしましょう。
- 自己署名証明書を使用している検証環境
- 社内システムなど、接続先を明確に把握している環境
- 証明書エラーの原因を確認するための一時的な検証
本番環境では、証明書を正しく設定して信頼できる状態にするなど、証明書エラーそのものを解消する方法を優先してください。
また、-SkipCertificateCheck を指定すれば証明書以外の通信エラーも解決できるわけではありません。
例えば、DNSエラーやネットワーク障害、認証エラーなどが原因の場合は、別途原因を確認する必要があります。
5.まとめ
PowerShellのInvoke-WebRequestで証明書エラーが発生する場合、PowerShell 7以降では-SkipCertificateCheckを指定することで証明書の検証をスキップできます。
基本的なコマンドは以下です。
Invoke-WebRequest -Uri "https://hogehoge.com" -SkipCertificateCheckただし、-SkipCertificateCheck はPowerShell 5.1では利用できません。
現在使用しているPowerShellのバージョンは、以下で確認できます。
$PSVersionTable.PSVersionPowerShell 5.1を使用していて、-SkipCertificateCheck を利用したい場合には、PowerShell 7以降への移行を検討してください。
なお、-SkipCertificateCheck は証明書の検証を無効にするため、特に本番環境では安易に使用せず、可能であれば証明書を正しく設定してエラーを解消することをおすすめします。


