Windows版wgetでHTTPS接続時のエラーを回避したい
Windows版wgetでHTTPS接続時に認証できない旨のエラーが表示されるのを回避するための方法(オプションで無視する方法と証明書を読み込ませる方法)をメモ。
※記事中に用いているサイト(URI)は当サイトが記事製作用に用意したものであり、実際には存在しません。
Windows版wgetでHTTPS接続時に生じるエラー
Windows版wgetでHTTPS接続(https://~のURIへのwget)時にスクリーンショットのような「エラー: example.com の証明書(発行者: ○○○)の検証に失敗しました:」「発行者の権限を検証できませんでした」のようなエラーが表示されることがあります。
どうやらこのエラーは証明書をうまく検証できていないことにより発生しているようです。
エラーの回避方法
エラーを回避するには、オプションで認証のエラー自体を無視する方法と証明書を指定して読み込ませる方法が考えられます。以下、それぞれについて簡単にまとめます。
エラーを無視する方法
接続先の証明書を認証する必要がないのであれば、これが一番簡単な方法です。
wgetのオプションとして「--no-check-certificate」を加えればエラーを無視できます。
証明書を読み込ませる方法
wgetのオプション「--ca-certificate=<FILENAME>」で証明書ファイルを指定すれば、それを用いて検証を行うため、エラーを回避することができます。
※今回は先にブラウザでアクセス可能なサイトの例を掲載しています。(例:DDNSで定期的にあるURLに対してアクセスする場合など)
今回使用するブラウザは「Mozilla Firefox 33」としました。
まず、wgetしたいURLをブラウザで開きます。
そのページ上で右クリックし、「ページの情報を表示(I)」を選択します。
「ページ情報」が表示されたら「セキュリティ」タブを開き「Web サイトの識別情報」の「証明書を表示(V)…」を選択します。
「証明書ビューア」が表示されたら「詳細(D)」タブを開き、「証明書の階層」の最も深い階層の証明書を選択した状態で「エクスポート(X)…」を選択します。
必ず一番深い階層の証明書を選択してください。それ以外だとwgetのオプションで証明書を読み込ませても正常に認証ができない可能性があります。
証明書を保存します。ファイルの保存場所や名前は任意のもので問題ありませんが、「ファイルの種類(T)」は下の2,3番目のスクリーンショットのように必ず「証明書パスを含む X.509 証明書 (PEM) (*.crt;*.pem)」を選択してください。
必ず「証明書パスを含む X.509 証明書 (PEM) (*.crt;*.pem)」を選択してください。それ以外だとwgetのオプションで証明書を読み込ませても正常に認証ができない可能性があります。
ブラウザでの作業はここまでです。以降はwgetでの操作になります。
これまで通りwgetのパラメータを指定し、追加で「--ca-certificate=<FILENAME>」を加えます。ここで<FILENAME>は今回用意した証明書を指定してください。
スクリーンショットのようにエラーが表示されなくなれば作業は完了です。
なお、今回の方法は対象のサイトが複数ある場合はそれぞれ別々に用意する必要があります。