PowerShellで証明書エラーを無視してアクセスする方法|SkipCertificateCheck

Powershell Powershell
この記事は約10分で読めます。

PowerShell の Invoke-WebRequest でHTTPSサイトへアクセスした際、証明書が信頼できない場合は証明書エラーが発生することがあります。

PowerShell 7以降では、SkipCertificateCheck オプションを指定することで、証明書の検証をスキップしてアクセスできる、すなわち証明書エラーを無視してアクセスできます

この記事では、PowerShellで証明書エラーを無視してアクセスする方法と、証明書エラーの原因、SkipCertificateCheckを使う場合の注意点についてまとめています。

今回は Invoke-WebRequest コマンドを実行する際に証明書を無視してアクセスさせます。

 # コマンド例
Invoke-WebRequest -Uri "https://example.com" -SkipCertificateCheck
広告

1.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 を利用しています。

Windows に PowerShell をインストールする – PowerShell
Windows に PowerShell をインストールする方法

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

ただし、-SkipCertificateCheckPowerShell 5.1では利用できません

現在使用しているPowerShellのバージョンは、以下で確認できます。

$PSVersionTable.PSVersion

PowerShell 5.1を使用していて、-SkipCertificateCheck を利用したい場合には、PowerShell 7以降への移行を検討してください。

なお、-SkipCertificateCheck は証明書の検証を無効にするため、特に本番環境では安易に使用せず、可能であれば証明書を正しく設定してエラーを解消することをおすすめします。